item.ProductName)}
- onChange={dropDownChange}
- />
- Clear
-
-
-
-
-
-
-
- >
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-external-dropdownlist-filter/main.jsx b/docs/knowledge-base/examples/grid/grid-external-dropdownlist-filter/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-external-dropdownlist-filter/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-external-dropdownlist-filter/products.json b/docs/knowledge-base/examples/grid/grid-external-dropdownlist-filter/products.json
deleted file mode 100644
index 4df1c408..00000000
--- a/docs/knowledge-base/examples/grid/grid-external-dropdownlist-filter/products.json
+++ /dev/null
@@ -1,1233 +0,0 @@
-[{
- "ProductID" : 1,
- "ProductName" : "Chai",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "10 boxes x 20 bags",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 2,
- "ProductName" : "Chang",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 3,
- "ProductName" : "Aniseed Syrup",
- "SupplierID" : 1,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 550 ml bottles",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 13,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 4,
- "ProductName" : "Chef Anton's Cajun Seasoning",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "48 - 6 oz jars",
- "UnitPrice" : 22.0000,
- "UnitsInStock" : 53,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 5,
- "ProductName" : "Chef Anton's Gumbo Mix",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "36 boxes",
- "UnitPrice" : 21.3500,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 6,
- "ProductName" : "Grandma's Boysenberry Spread",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 8 oz jars",
- "UnitPrice" : 25.0000,
- "UnitsInStock" : 120,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 7,
- "ProductName" : "Uncle Bob's Organic Dried Pears",
- "SupplierID" : 3,
- "CategoryID" : 7,
- "QuantityPerUnit" : "12 - 1 lb pkgs.",
- "UnitPrice" : 30.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 8,
- "ProductName" : "Northwoods Cranberry Sauce",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 12 oz jars",
- "UnitPrice" : 40.0000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 9,
- "ProductName" : "Mishi Kobe Niku",
- "SupplierID" : 4,
- "CategoryID" : 6,
- "QuantityPerUnit" : "18 - 500 g pkgs.",
- "UnitPrice" : 97.0000,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 10,
- "ProductName" : "Ikura",
- "SupplierID" : 4,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 200 ml jars",
- "UnitPrice" : 31.0000,
- "UnitsInStock" : 31,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 11,
- "ProductName" : "Queso Cabrales",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "1 kg pkg.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 30,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 12,
- "ProductName" : "Queso Manchego La Pastora",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 86,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 13,
- "ProductName" : "Konbu",
- "SupplierID" : 6,
- "CategoryID" : 8,
- "QuantityPerUnit" : "2 kg box",
- "UnitPrice" : 6.0000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 14,
- "ProductName" : "Tofu",
- "SupplierID" : 6,
- "CategoryID" : 7,
- "QuantityPerUnit" : "40 - 100 g pkgs.",
- "UnitPrice" : 23.2500,
- "UnitsInStock" : 35,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 15,
- "ProductName" : "Genen Shouyu",
- "SupplierID" : 6,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 250 ml bottles",
- "UnitPrice" : 15.5000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 16,
- "ProductName" : "Pavlova",
- "SupplierID" : 7,
- "CategoryID" : 3,
- "QuantityPerUnit" : "32 - 500 g boxes",
- "UnitPrice" : 17.4500,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 17,
- "ProductName" : "Alice Mutton",
- "SupplierID" : 7,
- "CategoryID" : 6,
- "QuantityPerUnit" : "20 - 1 kg tins",
- "UnitPrice" : 39.0000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 18,
- "ProductName" : "Carnarvon Tigers",
- "SupplierID" : 7,
- "CategoryID" : 8,
- "QuantityPerUnit" : "16 kg pkg.",
- "UnitPrice" : 62.5000,
- "UnitsInStock" : 42,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 19,
- "ProductName" : "Teatime Chocolate Biscuits",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 12 pieces",
- "UnitPrice" : 9.2000,
- "UnitsInStock" : 25,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 20,
- "ProductName" : "Sir Rodney's Marmalade",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "30 gift boxes",
- "UnitPrice" : 81.0000,
- "UnitsInStock" : 40,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 21,
- "ProductName" : "Sir Rodney's Scones",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 pkgs. x 4 pieces",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 3,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 22,
- "ProductName" : "Gustaf's Knäckebröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 500 g pkgs.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 104,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 23,
- "ProductName" : "Tunnbröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "12 - 250 g pkgs.",
- "UnitPrice" : 9.0000,
- "UnitsInStock" : 61,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 24,
- "ProductName" : "Guaraná Fantástica",
- "SupplierID" : 10,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 355 ml cans",
- "UnitPrice" : 4.5000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 25,
- "ProductName" : "NuNuCa Nuß-Nougat-Creme",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "20 - 450 g glasses",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 26,
- "ProductName" : "Gumbär Gummibärchen",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 250 g bags",
- "UnitPrice" : 31.2300,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 27,
- "ProductName" : "Schoggi Schokolade",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 100 g pieces",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 49,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 28,
- "ProductName" : "Rössle Sauerkraut",
- "SupplierID" : 12,
- "CategoryID" : 7,
- "QuantityPerUnit" : "25 - 825 g cans",
- "UnitPrice" : 45.6000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 29,
- "ProductName" : "Thüringer Rostbratwurst",
- "SupplierID" : 12,
- "CategoryID" : 6,
- "QuantityPerUnit" : "50 bags x 30 sausgs.",
- "UnitPrice" : 123.7900,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 30,
- "ProductName" : "Nord-Ost Matjeshering",
- "SupplierID" : 13,
- "CategoryID" : 8,
- "QuantityPerUnit" : "10 - 200 g glasses",
- "UnitPrice" : 25.8900,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 31,
- "ProductName" : "Gorgonzola Telino",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "12 - 100 g pkgs",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 32,
- "ProductName" : "Mascarpone Fabioli",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 32.0000,
- "UnitsInStock" : 9,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 33,
- "ProductName" : "Geitost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "500 g",
- "UnitPrice" : 2.5000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 34,
- "ProductName" : "Sasquatch Ale",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 111,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 35,
- "ProductName" : "Steeleye Stout",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 36,
- "ProductName" : "Inlagd Sill",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 250 g jars",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 37,
- "ProductName" : "Gravad lax",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 500 g pkgs.",
- "UnitPrice" : 26.0000,
- "UnitsInStock" : 11,
- "UnitsOnOrder" : 50,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 38,
- "ProductName" : "Côte de Blaye",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 75 cl bottles",
- "UnitPrice" : 263.5000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 39,
- "ProductName" : "Chartreuse verte",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "750 cc per bottle",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 69,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 40,
- "ProductName" : "Boston Crab Meat",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 4 oz tins",
- "UnitPrice" : 18.4000,
- "UnitsInStock" : 123,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 41,
- "ProductName" : "Jack's New England Clam Chowder",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 12 oz cans",
- "UnitPrice" : 9.6500,
- "UnitsInStock" : 85,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 42,
- "ProductName" : "Singaporean Hokkien Fried Mee",
- "SupplierID" : 20,
- "CategoryID" : 5,
- "QuantityPerUnit" : "32 - 1 kg pkgs.",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 43,
- "ProductName" : "Ipoh Coffee",
- "SupplierID" : 20,
- "CategoryID" : 1,
- "QuantityPerUnit" : "16 - 500 g tins",
- "UnitPrice" : 46.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 44,
- "ProductName" : "Gula Malacca",
- "SupplierID" : 20,
- "CategoryID" : 2,
- "QuantityPerUnit" : "20 - 2 kg bags",
- "UnitPrice" : 19.4500,
- "UnitsInStock" : 27,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 45,
- "ProductName" : "Rogede sild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "1k pkg.",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 5,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 46,
- "ProductName" : "Spegesild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "4 - 450 g glasses",
- "UnitPrice" : 12.0000,
- "UnitsInStock" : 95,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 47,
- "ProductName" : "Zaanse koeken",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 - 4 oz boxes",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 48,
- "ProductName" : "Chocolade",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 pkgs.",
- "UnitPrice" : 12.7500,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 49,
- "ProductName" : "Maxilaku",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 - 50 g pkgs.",
- "UnitPrice" : 20.0000,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 60,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 50,
- "ProductName" : "Valkoinen suklaa",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "12 - 100 g bars",
- "UnitPrice" : 16.2500,
- "UnitsInStock" : 65,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 51,
- "ProductName" : "Manjimup Dried Apples",
- "SupplierID" : 24,
- "CategoryID" : 7,
- "QuantityPerUnit" : "50 - 300 g pkgs.",
- "UnitPrice" : 53.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 52,
- "ProductName" : "Filo Mix",
- "SupplierID" : 24,
- "CategoryID" : 5,
- "QuantityPerUnit" : "16 - 2 kg boxes",
- "UnitPrice" : 7.0000,
- "UnitsInStock" : 38,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 53,
- "ProductName" : "Perth Pasties",
- "SupplierID" : 24,
- "CategoryID" : 6,
- "QuantityPerUnit" : "48 pieces",
- "UnitPrice" : 32.8000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 54,
- "ProductName" : "Tourtière",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "16 pies",
- "UnitPrice" : 7.4500,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 55,
- "ProductName" : "Pâté chinois",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "24 boxes x 2 pies",
- "UnitPrice" : 24.0000,
- "UnitsInStock" : 115,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 56,
- "ProductName" : "Gnocchi di nonna Alice",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 57,
- "ProductName" : "Ravioli Angelo",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 19.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 58,
- "ProductName" : "Escargots de Bourgogne",
- "SupplierID" : 27,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 pieces",
- "UnitPrice" : 13.2500,
- "UnitsInStock" : 62,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 59,
- "ProductName" : "Raclette Courdavault",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 55.0000,
- "UnitsInStock" : 79,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 60,
- "ProductName" : "Camembert Pierrot",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "15 - 300 g rounds",
- "UnitPrice" : 34.0000,
- "UnitsInStock" : 19,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 61,
- "ProductName" : "Sirop d'érable",
- "SupplierID" : 29,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 500 ml bottles",
- "UnitPrice" : 28.5000,
- "UnitsInStock" : 113,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 62,
- "ProductName" : "Tarte au sucre",
- "SupplierID" : 29,
- "CategoryID" : 3,
- "QuantityPerUnit" : "48 pies",
- "UnitPrice" : 49.3000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 63,
- "ProductName" : "Vegie-spread",
- "SupplierID" : 7,
- "CategoryID" : 2,
- "QuantityPerUnit" : "15 - 625 g jars",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 64,
- "ProductName" : "Wimmers gute Semmelknödel",
- "SupplierID" : 12,
- "CategoryID" : 5,
- "QuantityPerUnit" : "20 bags x 4 pieces",
- "UnitPrice" : 33.2500,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 80,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 65,
- "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "32 - 8 oz bottles",
- "UnitPrice" : 21.0500,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 66,
- "ProductName" : "Louisiana Hot Spiced Okra",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 8 oz jars",
- "UnitPrice" : 17.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 100,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 67,
- "ProductName" : "Laughing Lumberjack Lager",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 52,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 68,
- "ProductName" : "Scottish Longbreads",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 8 pieces",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 69,
- "ProductName" : "Gudbrandsdalsost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 kg pkg.",
- "UnitPrice" : 36.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 70,
- "ProductName" : "Outback Lager",
- "SupplierID" : 7,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 355 ml bottles",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 71,
- "ProductName" : "Flotemysost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 21.5000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 72,
- "ProductName" : "Mozzarella di Giovanni",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 34.8000,
- "UnitsInStock" : 14,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 73,
- "ProductName" : "Röd Kaviar",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 150 g jars",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 101,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 74,
- "ProductName" : "Longlife Tofu",
- "SupplierID" : 4,
- "CategoryID" : 7,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 20,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 75,
- "ProductName" : "Rhönbräu Klosterbier",
- "SupplierID" : 12,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 0.5 l bottles",
- "UnitPrice" : 7.7500,
- "UnitsInStock" : 125,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 76,
- "ProductName" : "Lakkalikööri",
- "SupplierID" : 23,
- "CategoryID" : 1,
- "QuantityPerUnit" : "500 ml",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 57,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 77,
- "ProductName" : "Original Frankfurter grüne Soße",
- "SupplierID" : 12,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 boxes",
- "UnitPrice" : 13.0000,
- "UnitsInStock" : 32,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}]
diff --git a/docs/knowledge-base/examples/grid/grid-filter-checkbox/app.jsx b/docs/knowledge-base/examples/grid/grid-filter-checkbox/app.jsx
deleted file mode 100644
index 3fc1853b..00000000
--- a/docs/knowledge-base/examples/grid/grid-filter-checkbox/app.jsx
+++ /dev/null
@@ -1,91 +0,0 @@
-import * as React from 'react';
-
-import { process } from '@progress/kendo-data-query';
-import {
- Grid, GridColumn as Column
-} from '@progress/kendo-react-grid';
-
-import { CustomColumnMenu } from './customColumnMenu';
-
-import products from './shared-products.json';
-
-const createDataState = (dataState) => {
- return {
- result: process(products.slice(0), dataState),
- dataState: dataState
- };
-}
-
-const dataState = createDataState({
- take: 8,
- skip: 0
-});
-
-class App extends React.Component {
- constructor(props) {
- super(props);
-
- this.state = {
- columns: [{ field: 'ProductName' }, { field: 'ProductID' }],
- ...dataState
- };
- }
-
- dataStateChange = (event) => {
- this.setState(createDataState(event.data));
- }
-
- onReset = () => {
- this.setState({
- result: process(products.slice(this.state.take), this.state.dataState)
- });
- }
-
- onColumnsSubmit = (data) => {
- let filterData = data.filter(item => {
- if (item.filterChecked) {
- return item
- }
- })
- this.setState({
- result: process(filterData, this.state.dataState)
- });
- }
-
- render() {
- return (
-
-
- {
- this.state.columns.map((column, idx) =>
- (
-
- }
- />)
- )}
-
-
-
- );
- }
-}
-
-export default App;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-filter-checkbox/customColumnMenu.jsx b/docs/knowledge-base/examples/grid/grid-filter-checkbox/customColumnMenu.jsx
deleted file mode 100644
index 3df29618..00000000
--- a/docs/knowledge-base/examples/grid/grid-filter-checkbox/customColumnMenu.jsx
+++ /dev/null
@@ -1,100 +0,0 @@
-import * as React from 'react';
-import {
- GridColumnMenuSort,
- GridColumnMenuItemGroup, GridColumnMenuItem, GridColumnMenuItemContent
-} from '@progress/kendo-react-grid';
-
-export class CustomColumnMenu extends React.Component {
- constructor(props) {
- super(props);
-
- this.state = {
- data: this.props.data,
- columnsExpanded: true
- };
- }
-
- onToggleColumn = (item) => {
- let data = this.props.data
- data.map(dataItem => {
- if (dataItem.ProductID === item.ProductID) {
- dataItem.filterChecked ?
- dataItem.filterChecked = false :
- dataItem.filterChecked = true
- }
- return item
- })
-
- this.setState({
- data: data
- })
- }
-
- onReset = (event) => {
- event.preventDefault();
- this.props.onReset();
- if (this.props.onCloseMenu) {
- this.props.onCloseMenu();
- }
- }
-
- onSubmit = (event) => {
- if (event) {
- event.preventDefault();
- }
- this.props.onColumnsSubmit(this.state.data);
- if (this.props.onCloseMenu) {
- this.props.onCloseMenu();
- }
- }
-
- render() {
-
- return (
- );
- }
-}
diff --git a/docs/knowledge-base/examples/grid/grid-filter-checkbox/main.jsx b/docs/knowledge-base/examples/grid/grid-filter-checkbox/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-filter-checkbox/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-filtering-api/app.tsx b/docs/knowledge-base/examples/grid/grid-filtering-api/app.tsx
deleted file mode 100644
index 85a8b8b8..00000000
--- a/docs/knowledge-base/examples/grid/grid-filtering-api/app.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import React, { useState, useEffect } from 'react';
-
-import {
- Grid,
- GridColumn as Column,
- GridFilterChangeEvent,
-} from '@progress/kendo-react-grid';
-import {
- filterBy,
- CompositeFilterDescriptor,
-} from '@progress/kendo-data-query';
-
-const initialFilter: CompositeFilterDescriptor = {
- logic: 'and',
- filters: [
- {
- field: 'name',
- operator: 'contains',
- value: 'Leanne Graham',
- },
- ],
-};
-
-const App = () => {
- const [users, setUsers] = useState([]);
- const [filter, setFilter] = React.useState(initialFilter);
-
- useEffect(() => {
- fetch('https://jsonplaceholder.typicode.com/users')
- .then((response) => response.json())
- .then(setUsers);
- }, []);
-
- return (
- setFilter(e.filter)}
- >
-
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-filtering-api/main.tsx b/docs/knowledge-base/examples/grid/grid-filtering-api/main.tsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-filtering-api/main.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-hide-expand-icon-conditionally/app.jsx b/docs/knowledge-base/examples/grid/grid-hide-expand-icon-conditionally/app.jsx
deleted file mode 100644
index 88cf4e75..00000000
--- a/docs/knowledge-base/examples/grid/grid-hide-expand-icon-conditionally/app.jsx
+++ /dev/null
@@ -1,97 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-
-const DetailComponent = (props) => {
- const data = props.dataItem.details;
-
- if (data) {
- return (
-
-
-
-
-
- );
- }
-
- return (
-
- );
-};
-
-const App = () => {
- const baseUrl = 'https://demos.telerik.com/kendo-ui/service-v4/odata/';
- const init = {
- method: 'GET',
- accept: 'application/json',
- headers: {},
- };
- const [categories, setCategories] = React.useState([]);
-
- const expandChange = (event) => {
- event.dataItem.expanded = event.value;
- let categoryID = event.dataItem.CategoryID;
- setCategories([...categories]);
-
- if (!event.value || event.dataItem.details) {
- return;
- }
-
- fetch(baseUrl + `Products?$filter=CategoryID%20eq%20` + categoryID, init)
- .then((response) => response.json())
- .then((json) => {
- let data = categories.slice();
- let index = data.findIndex((d) => d.CategoryID === categoryID);
- data[index].details = json.value;
- setCategories(data);
- });
- };
-
- React.useEffect(() => {
- fetch(baseUrl + `Categories`, init)
- .then((response) => response.json())
- .then((json) => setCategories(json.value));
- }, []);
-
- const cellRender = (td, props) => {
- if (props.field == 'expanded' && props.dataItem.CategoryID == 3) {
- return ;
- }
- return td;
- };
- return (
-
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-hide-expand-icon-conditionally/main.jsx b/docs/knowledge-base/examples/grid/grid-hide-expand-icon-conditionally/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-hide-expand-icon-conditionally/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-hide-grouped-columns/app.jsx b/docs/knowledge-base/examples/grid/grid-hide-grouped-columns/app.jsx
deleted file mode 100644
index 312f6b8a..00000000
--- a/docs/knowledge-base/examples/grid/grid-hide-grouped-columns/app.jsx
+++ /dev/null
@@ -1,147 +0,0 @@
-import * as React from 'react';
-
-
-import { process } from '@progress/kendo-data-query';
-import {
- Grid,
- GridColumn as Column,
- GridToolbar,
-} from '@progress/kendo-react-grid';
-import {
- setGroupIds,
- getGroupIds,
- setExpandedState,
-} from '@progress/kendo-react-data-tools';
-
-import products from './products.json';
-
-const initialDataState = {
- take: 10,
- skip: 0,
- group: [{ field: 'Category.CategoryName' }],
-};
-
-const processWithGroups = (data, dataState) => {
- const newDataState = process(data, dataState);
-
- setGroupIds({ data: newDataState.data, group: dataState.group });
-
- return newDataState;
-};
-
-let columns = [
- {
- field: 'Category.CategoryName',
- title: 'Category Name',
- show: false,
- },
- {
- field: 'ProductID',
- title: 'ID',
- show: true,
- },
- {
- field: 'ProductName',
- title: 'Product Name',
- show: true,
- },
- {
- field: 'UnitPrice',
- title: 'Unit Price',
- show: true,
- },
-];
-
-const App = () => {
- const [stateColumns, setStateColumns] = React.useState(columns);
- const [dataState, setDataState] = React.useState(initialDataState);
- const [resultState, setResultState] = React.useState(
- processWithGroups(products, initialDataState)
- );
- const [collapsedState, setCollapsedState] = React.useState([]);
-
- const onDataStateChange = React.useCallback((event) => {
- const newDataState = processWithGroups(products, event.dataState);
-
- if (
- event.dataState.group &&
- columns.length > event.dataState.group.length
- ) {
- columns = columns.map((col) => {
- col.show = true;
- return col;
- });
- event.dataState.group.forEach((group) => {
- for (let i = 0; i < columns.length; i++) {
- if (group.field == columns[i].field) {
- console.log(group.field);
- columns[i].show = false;
- }
- }
- });
- setStateColumns(columns);
- }
-
- setDataState(event.dataState);
- setResultState(newDataState);
- }, []);
-
- const onExpandChange = React.useCallback(
- (event) => {
- const item = event.dataItem;
-
- if (item.groupId) {
- const collapsedIds = !event.value
- ? [...collapsedState, item.groupId]
- : collapsedState.filter((groupId) => groupId !== item.groupId);
- setCollapsedState(collapsedIds);
- }
- },
- [collapsedState]
- );
-
- const onGroupsToggle = React.useCallback(() => {
- const dataStateWithoutPaging = processWithGroups(products, {
- group: dataState.group,
- });
-
- setCollapsedState(
- collapsedState.length
- ? []
- : getGroupIds({ data: dataStateWithoutPaging.data })
- );
- }, [collapsedState, dataState]);
-
- const newData = setExpandedState({
- data: resultState.data,
- collapsedIds: collapsedState,
- });
-
- return (
-
-
-
- {collapsedState.length ? 'Expand' : 'Collapse'} Groups
-
-
- {stateColumns.map(
- (column, idx) =>
- column.show && (
-
- )
- )}
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-hide-grouped-columns/main.jsx b/docs/knowledge-base/examples/grid/grid-hide-grouped-columns/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-hide-grouped-columns/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-hide-grouped-columns/products.json b/docs/knowledge-base/examples/grid/grid-hide-grouped-columns/products.json
deleted file mode 100644
index 4df1c408..00000000
--- a/docs/knowledge-base/examples/grid/grid-hide-grouped-columns/products.json
+++ /dev/null
@@ -1,1233 +0,0 @@
-[{
- "ProductID" : 1,
- "ProductName" : "Chai",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "10 boxes x 20 bags",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 2,
- "ProductName" : "Chang",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 3,
- "ProductName" : "Aniseed Syrup",
- "SupplierID" : 1,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 550 ml bottles",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 13,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 4,
- "ProductName" : "Chef Anton's Cajun Seasoning",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "48 - 6 oz jars",
- "UnitPrice" : 22.0000,
- "UnitsInStock" : 53,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 5,
- "ProductName" : "Chef Anton's Gumbo Mix",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "36 boxes",
- "UnitPrice" : 21.3500,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 6,
- "ProductName" : "Grandma's Boysenberry Spread",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 8 oz jars",
- "UnitPrice" : 25.0000,
- "UnitsInStock" : 120,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 7,
- "ProductName" : "Uncle Bob's Organic Dried Pears",
- "SupplierID" : 3,
- "CategoryID" : 7,
- "QuantityPerUnit" : "12 - 1 lb pkgs.",
- "UnitPrice" : 30.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 8,
- "ProductName" : "Northwoods Cranberry Sauce",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 12 oz jars",
- "UnitPrice" : 40.0000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 9,
- "ProductName" : "Mishi Kobe Niku",
- "SupplierID" : 4,
- "CategoryID" : 6,
- "QuantityPerUnit" : "18 - 500 g pkgs.",
- "UnitPrice" : 97.0000,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 10,
- "ProductName" : "Ikura",
- "SupplierID" : 4,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 200 ml jars",
- "UnitPrice" : 31.0000,
- "UnitsInStock" : 31,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 11,
- "ProductName" : "Queso Cabrales",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "1 kg pkg.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 30,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 12,
- "ProductName" : "Queso Manchego La Pastora",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 86,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 13,
- "ProductName" : "Konbu",
- "SupplierID" : 6,
- "CategoryID" : 8,
- "QuantityPerUnit" : "2 kg box",
- "UnitPrice" : 6.0000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 14,
- "ProductName" : "Tofu",
- "SupplierID" : 6,
- "CategoryID" : 7,
- "QuantityPerUnit" : "40 - 100 g pkgs.",
- "UnitPrice" : 23.2500,
- "UnitsInStock" : 35,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 15,
- "ProductName" : "Genen Shouyu",
- "SupplierID" : 6,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 250 ml bottles",
- "UnitPrice" : 15.5000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 16,
- "ProductName" : "Pavlova",
- "SupplierID" : 7,
- "CategoryID" : 3,
- "QuantityPerUnit" : "32 - 500 g boxes",
- "UnitPrice" : 17.4500,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 17,
- "ProductName" : "Alice Mutton",
- "SupplierID" : 7,
- "CategoryID" : 6,
- "QuantityPerUnit" : "20 - 1 kg tins",
- "UnitPrice" : 39.0000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 18,
- "ProductName" : "Carnarvon Tigers",
- "SupplierID" : 7,
- "CategoryID" : 8,
- "QuantityPerUnit" : "16 kg pkg.",
- "UnitPrice" : 62.5000,
- "UnitsInStock" : 42,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 19,
- "ProductName" : "Teatime Chocolate Biscuits",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 12 pieces",
- "UnitPrice" : 9.2000,
- "UnitsInStock" : 25,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 20,
- "ProductName" : "Sir Rodney's Marmalade",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "30 gift boxes",
- "UnitPrice" : 81.0000,
- "UnitsInStock" : 40,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 21,
- "ProductName" : "Sir Rodney's Scones",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 pkgs. x 4 pieces",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 3,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 22,
- "ProductName" : "Gustaf's Knäckebröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 500 g pkgs.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 104,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 23,
- "ProductName" : "Tunnbröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "12 - 250 g pkgs.",
- "UnitPrice" : 9.0000,
- "UnitsInStock" : 61,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 24,
- "ProductName" : "Guaraná Fantástica",
- "SupplierID" : 10,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 355 ml cans",
- "UnitPrice" : 4.5000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 25,
- "ProductName" : "NuNuCa Nuß-Nougat-Creme",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "20 - 450 g glasses",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 26,
- "ProductName" : "Gumbär Gummibärchen",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 250 g bags",
- "UnitPrice" : 31.2300,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 27,
- "ProductName" : "Schoggi Schokolade",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 100 g pieces",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 49,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 28,
- "ProductName" : "Rössle Sauerkraut",
- "SupplierID" : 12,
- "CategoryID" : 7,
- "QuantityPerUnit" : "25 - 825 g cans",
- "UnitPrice" : 45.6000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 29,
- "ProductName" : "Thüringer Rostbratwurst",
- "SupplierID" : 12,
- "CategoryID" : 6,
- "QuantityPerUnit" : "50 bags x 30 sausgs.",
- "UnitPrice" : 123.7900,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 30,
- "ProductName" : "Nord-Ost Matjeshering",
- "SupplierID" : 13,
- "CategoryID" : 8,
- "QuantityPerUnit" : "10 - 200 g glasses",
- "UnitPrice" : 25.8900,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 31,
- "ProductName" : "Gorgonzola Telino",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "12 - 100 g pkgs",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 32,
- "ProductName" : "Mascarpone Fabioli",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 32.0000,
- "UnitsInStock" : 9,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 33,
- "ProductName" : "Geitost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "500 g",
- "UnitPrice" : 2.5000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 34,
- "ProductName" : "Sasquatch Ale",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 111,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 35,
- "ProductName" : "Steeleye Stout",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 36,
- "ProductName" : "Inlagd Sill",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 250 g jars",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 37,
- "ProductName" : "Gravad lax",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 500 g pkgs.",
- "UnitPrice" : 26.0000,
- "UnitsInStock" : 11,
- "UnitsOnOrder" : 50,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 38,
- "ProductName" : "Côte de Blaye",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 75 cl bottles",
- "UnitPrice" : 263.5000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 39,
- "ProductName" : "Chartreuse verte",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "750 cc per bottle",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 69,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 40,
- "ProductName" : "Boston Crab Meat",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 4 oz tins",
- "UnitPrice" : 18.4000,
- "UnitsInStock" : 123,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 41,
- "ProductName" : "Jack's New England Clam Chowder",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 12 oz cans",
- "UnitPrice" : 9.6500,
- "UnitsInStock" : 85,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 42,
- "ProductName" : "Singaporean Hokkien Fried Mee",
- "SupplierID" : 20,
- "CategoryID" : 5,
- "QuantityPerUnit" : "32 - 1 kg pkgs.",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 43,
- "ProductName" : "Ipoh Coffee",
- "SupplierID" : 20,
- "CategoryID" : 1,
- "QuantityPerUnit" : "16 - 500 g tins",
- "UnitPrice" : 46.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 44,
- "ProductName" : "Gula Malacca",
- "SupplierID" : 20,
- "CategoryID" : 2,
- "QuantityPerUnit" : "20 - 2 kg bags",
- "UnitPrice" : 19.4500,
- "UnitsInStock" : 27,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 45,
- "ProductName" : "Rogede sild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "1k pkg.",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 5,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 46,
- "ProductName" : "Spegesild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "4 - 450 g glasses",
- "UnitPrice" : 12.0000,
- "UnitsInStock" : 95,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 47,
- "ProductName" : "Zaanse koeken",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 - 4 oz boxes",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 48,
- "ProductName" : "Chocolade",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 pkgs.",
- "UnitPrice" : 12.7500,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 49,
- "ProductName" : "Maxilaku",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 - 50 g pkgs.",
- "UnitPrice" : 20.0000,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 60,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 50,
- "ProductName" : "Valkoinen suklaa",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "12 - 100 g bars",
- "UnitPrice" : 16.2500,
- "UnitsInStock" : 65,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 51,
- "ProductName" : "Manjimup Dried Apples",
- "SupplierID" : 24,
- "CategoryID" : 7,
- "QuantityPerUnit" : "50 - 300 g pkgs.",
- "UnitPrice" : 53.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 52,
- "ProductName" : "Filo Mix",
- "SupplierID" : 24,
- "CategoryID" : 5,
- "QuantityPerUnit" : "16 - 2 kg boxes",
- "UnitPrice" : 7.0000,
- "UnitsInStock" : 38,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 53,
- "ProductName" : "Perth Pasties",
- "SupplierID" : 24,
- "CategoryID" : 6,
- "QuantityPerUnit" : "48 pieces",
- "UnitPrice" : 32.8000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 54,
- "ProductName" : "Tourtière",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "16 pies",
- "UnitPrice" : 7.4500,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 55,
- "ProductName" : "Pâté chinois",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "24 boxes x 2 pies",
- "UnitPrice" : 24.0000,
- "UnitsInStock" : 115,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 56,
- "ProductName" : "Gnocchi di nonna Alice",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 57,
- "ProductName" : "Ravioli Angelo",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 19.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 58,
- "ProductName" : "Escargots de Bourgogne",
- "SupplierID" : 27,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 pieces",
- "UnitPrice" : 13.2500,
- "UnitsInStock" : 62,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 59,
- "ProductName" : "Raclette Courdavault",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 55.0000,
- "UnitsInStock" : 79,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 60,
- "ProductName" : "Camembert Pierrot",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "15 - 300 g rounds",
- "UnitPrice" : 34.0000,
- "UnitsInStock" : 19,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 61,
- "ProductName" : "Sirop d'érable",
- "SupplierID" : 29,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 500 ml bottles",
- "UnitPrice" : 28.5000,
- "UnitsInStock" : 113,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 62,
- "ProductName" : "Tarte au sucre",
- "SupplierID" : 29,
- "CategoryID" : 3,
- "QuantityPerUnit" : "48 pies",
- "UnitPrice" : 49.3000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 63,
- "ProductName" : "Vegie-spread",
- "SupplierID" : 7,
- "CategoryID" : 2,
- "QuantityPerUnit" : "15 - 625 g jars",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 64,
- "ProductName" : "Wimmers gute Semmelknödel",
- "SupplierID" : 12,
- "CategoryID" : 5,
- "QuantityPerUnit" : "20 bags x 4 pieces",
- "UnitPrice" : 33.2500,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 80,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 65,
- "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "32 - 8 oz bottles",
- "UnitPrice" : 21.0500,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 66,
- "ProductName" : "Louisiana Hot Spiced Okra",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 8 oz jars",
- "UnitPrice" : 17.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 100,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 67,
- "ProductName" : "Laughing Lumberjack Lager",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 52,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 68,
- "ProductName" : "Scottish Longbreads",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 8 pieces",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 69,
- "ProductName" : "Gudbrandsdalsost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 kg pkg.",
- "UnitPrice" : 36.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 70,
- "ProductName" : "Outback Lager",
- "SupplierID" : 7,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 355 ml bottles",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 71,
- "ProductName" : "Flotemysost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 21.5000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 72,
- "ProductName" : "Mozzarella di Giovanni",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 34.8000,
- "UnitsInStock" : 14,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 73,
- "ProductName" : "Röd Kaviar",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 150 g jars",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 101,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 74,
- "ProductName" : "Longlife Tofu",
- "SupplierID" : 4,
- "CategoryID" : 7,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 20,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 75,
- "ProductName" : "Rhönbräu Klosterbier",
- "SupplierID" : 12,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 0.5 l bottles",
- "UnitPrice" : 7.7500,
- "UnitsInStock" : 125,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 76,
- "ProductName" : "Lakkalikööri",
- "SupplierID" : 23,
- "CategoryID" : 1,
- "QuantityPerUnit" : "500 ml",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 57,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 77,
- "ProductName" : "Original Frankfurter grüne Soße",
- "SupplierID" : 12,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 boxes",
- "UnitPrice" : 13.0000,
- "UnitsInStock" : 32,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}]
diff --git a/docs/knowledge-base/examples/grid/grid-pdf-export-with-watermark/app.jsx b/docs/knowledge-base/examples/grid/grid-pdf-export-with-watermark/app.jsx
deleted file mode 100644
index 0cd1c44f..00000000
--- a/docs/knowledge-base/examples/grid/grid-pdf-export-with-watermark/app.jsx
+++ /dev/null
@@ -1,67 +0,0 @@
-import React from 'react';
-import { saveAs } from '@progress/kendo-file-saver';
-import {
- drawDOM,
- exportPDF,
-} from '@progress/kendo-drawing';
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-
-import products from './products.json';
-
-class App extends React.Component {
- pdfExportComponent;
- grid;
-
- constructor(props) {
- super(props);
- this.state = {
- gridData: products,
- creator: 'KendoReact'
- };
- }
-
- render() {
- return (
-
-
-
- Export with method
-
-
-
-
-
-
-
-
-
-
-
- );
- }
-
- PageTemplate = props => {
- console.log(props);
- return `Creator: ${
- this.state.creator
- } Watermark
`;
- };
-
- exportPDFWithMethod = () => {
- let gridElement = document.getElementsByClassName('k-grid')[0];
- drawDOM(gridElement, {
- paperSize: 'A3',
- margin: 100,
- template: this.PageTemplate
- })
- .then(group => {
- return exportPDF(group);
- })
- .then(dataUri => {
- saveAs(dataUri, 'scene.pdf');
- console.log(dataUri.split(';base64,')[1]);
- });
- };
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-pdf-export-with-watermark/main.jsx b/docs/knowledge-base/examples/grid/grid-pdf-export-with-watermark/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-pdf-export-with-watermark/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-pdf-export-with-watermark/products.json b/docs/knowledge-base/examples/grid/grid-pdf-export-with-watermark/products.json
deleted file mode 100644
index d3ab4ee8..00000000
--- a/docs/knowledge-base/examples/grid/grid-pdf-export-with-watermark/products.json
+++ /dev/null
@@ -1,155 +0,0 @@
-[
- {
- "ProductID": 1,
- "ProductName": "Chai",
- "SupplierID": 1,
- "CategoryID": 1,
- "QuantityPerUnit": "10 boxes x 20 bags",
- "UnitPrice": 18.0000,
- "UnitsInStock": 39,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 2,
- "ProductName": "Chang",
- "SupplierID": 1,
- "CategoryID": 1,
- "QuantityPerUnit": "24 - 12 oz bottles",
- "UnitPrice": 19.0000,
- "UnitsInStock": 17,
- "UnitsOnOrder": 40,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 3,
- "ProductName": "Aniseed Syrup",
- "SupplierID": 1,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 550 ml bottles",
- "UnitPrice": 10.0000,
- "UnitsInStock": 13,
- "UnitsOnOrder": 70,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 4,
- "ProductName": "Chef Anton's Cajun Seasoning",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "48 - 6 oz jars",
- "UnitPrice": 22.0000,
- "UnitsInStock": 53,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 5,
- "ProductName": "Chef Anton's Gumbo Mix",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "36 boxes",
- "UnitPrice": 21.3500,
- "UnitsInStock": 0,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 6,
- "ProductName": "Grandma's Boysenberry Spread",
- "SupplierID": 3,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 8 oz jars",
- "UnitPrice": 25.0000,
- "UnitsInStock": 120,
- "UnitsOnOrder": 0,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 7,
- "ProductName": "Uncle Bob's Organic Dried Pears",
- "SupplierID": 3,
- "CategoryID": 7,
- "QuantityPerUnit": "12 - 1 lb pkgs.",
- "UnitPrice": 30.0000,
- "UnitsInStock": 15,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 7,
- "CategoryName": "Produce",
- "Description": "Dried fruit and bean curd"
- }
- },
- {
- "ProductID": 8,
- "ProductName": "Northwoods Cranberry Sauce",
- "SupplierID": 3,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 12 oz jars",
- "UnitPrice": 40.0000,
- "UnitsInStock": 6,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 9,
- "ProductName": "Mishi Kobe Niku",
- "SupplierID": 4,
- "CategoryID": 6,
- "QuantityPerUnit": "18 - 500 g pkgs.",
- "UnitPrice": 97.0000,
- "UnitsInStock": 29,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 6,
- "CategoryName": "Meat/Poultry",
- "Description": "Prepared meats"
- }
- }
-]
diff --git a/docs/knowledge-base/examples/grid/grid-progressbar-cell/app.jsx b/docs/knowledge-base/examples/grid/grid-progressbar-cell/app.jsx
deleted file mode 100644
index a754326a..00000000
--- a/docs/knowledge-base/examples/grid/grid-progressbar-cell/app.jsx
+++ /dev/null
@@ -1,51 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn } from '@progress/kendo-react-grid';
-import products from './products.json';
-import { ProgressBar } from '@progress/kendo-react-progressbars';
-const ProgressCell = (props) => {
- if (props.rowType == 'data') { //ensuring that we are not passing the custom cell to group headers if grouping is enabled
- let content = (
-
-
-
- );
- //Using the props.render ensures that the cellRender will be called for the custom cell
- return props.render
- ? props.render.call(undefined, content, props)
- : content;
- } else {
- return null;
- }
-};
-const App = () => {
- return (
-
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-progressbar-cell/main.jsx b/docs/knowledge-base/examples/grid/grid-progressbar-cell/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-progressbar-cell/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-progressbar-cell/products.json b/docs/knowledge-base/examples/grid/grid-progressbar-cell/products.json
deleted file mode 100644
index d3ab4ee8..00000000
--- a/docs/knowledge-base/examples/grid/grid-progressbar-cell/products.json
+++ /dev/null
@@ -1,155 +0,0 @@
-[
- {
- "ProductID": 1,
- "ProductName": "Chai",
- "SupplierID": 1,
- "CategoryID": 1,
- "QuantityPerUnit": "10 boxes x 20 bags",
- "UnitPrice": 18.0000,
- "UnitsInStock": 39,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 2,
- "ProductName": "Chang",
- "SupplierID": 1,
- "CategoryID": 1,
- "QuantityPerUnit": "24 - 12 oz bottles",
- "UnitPrice": 19.0000,
- "UnitsInStock": 17,
- "UnitsOnOrder": 40,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 3,
- "ProductName": "Aniseed Syrup",
- "SupplierID": 1,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 550 ml bottles",
- "UnitPrice": 10.0000,
- "UnitsInStock": 13,
- "UnitsOnOrder": 70,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 4,
- "ProductName": "Chef Anton's Cajun Seasoning",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "48 - 6 oz jars",
- "UnitPrice": 22.0000,
- "UnitsInStock": 53,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 5,
- "ProductName": "Chef Anton's Gumbo Mix",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "36 boxes",
- "UnitPrice": 21.3500,
- "UnitsInStock": 0,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 6,
- "ProductName": "Grandma's Boysenberry Spread",
- "SupplierID": 3,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 8 oz jars",
- "UnitPrice": 25.0000,
- "UnitsInStock": 120,
- "UnitsOnOrder": 0,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 7,
- "ProductName": "Uncle Bob's Organic Dried Pears",
- "SupplierID": 3,
- "CategoryID": 7,
- "QuantityPerUnit": "12 - 1 lb pkgs.",
- "UnitPrice": 30.0000,
- "UnitsInStock": 15,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 7,
- "CategoryName": "Produce",
- "Description": "Dried fruit and bean curd"
- }
- },
- {
- "ProductID": 8,
- "ProductName": "Northwoods Cranberry Sauce",
- "SupplierID": 3,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 12 oz jars",
- "UnitPrice": 40.0000,
- "UnitsInStock": 6,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 9,
- "ProductName": "Mishi Kobe Niku",
- "SupplierID": 4,
- "CategoryID": 6,
- "QuantityPerUnit": "18 - 500 g pkgs.",
- "UnitPrice": 97.0000,
- "UnitsInStock": 29,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 6,
- "CategoryName": "Meat/Poultry",
- "Description": "Prepared meats"
- }
- }
-]
diff --git a/docs/knowledge-base/examples/grid/grid-row-colors/alternate-colors/app.jsx b/docs/knowledge-base/examples/grid/grid-row-colors/alternate-colors/app.jsx
deleted file mode 100644
index 32df2a58..00000000
--- a/docs/knowledge-base/examples/grid/grid-row-colors/alternate-colors/app.jsx
+++ /dev/null
@@ -1,41 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn } from '@progress/kendo-react-grid';
-import products from './shared-products.json';
-const App = () => {
- return (
-
-
-
-
-
-
-
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-row-colors/alternate-colors/main.jsx b/docs/knowledge-base/examples/grid/grid-row-colors/alternate-colors/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-row-colors/alternate-colors/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-row-colors/single-row-color/app.jsx b/docs/knowledge-base/examples/grid/grid-row-colors/single-row-color/app.jsx
deleted file mode 100644
index 4a0c08ac..00000000
--- a/docs/knowledge-base/examples/grid/grid-row-colors/single-row-color/app.jsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import * as React from "react";
-import { Grid, GridColumn } from "@progress/kendo-react-grid";
-import products from "./shared-products.json";
-const App = () => {
- return (
-
-
-
-
-
-
-
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-row-colors/single-row-color/main.jsx b/docs/knowledge-base/examples/grid/grid-row-colors/single-row-color/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-row-colors/single-row-color/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-save-datastate-to-localstorage/app.jsx b/docs/knowledge-base/examples/grid/grid-save-datastate-to-localstorage/app.jsx
deleted file mode 100644
index 718b8ab5..00000000
--- a/docs/knowledge-base/examples/grid/grid-save-datastate-to-localstorage/app.jsx
+++ /dev/null
@@ -1,73 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import { process } from '@progress/kendo-data-query';
-import products from './shared-products.json';
-
-let initialDataState = {
- sort: [
- {
- field: 'code',
- dir: 'asc',
- },
- ],
- take: 10,
- skip: 0,
-};
-
-const App = () => {
- const [dataState, setDataState] = React.useState(initialDataState);
-
- React.useEffect(() => {
- let gridState = localStorage.getItem('gridState');
- if (gridState) {
- initialDataState = JSON.parse(gridState);
- setDataState(initialDataState);
- }
- }, []);
-
- React.useEffect(() => {
- localStorage.setItem('gridState', JSON.stringify(dataState));
- }, [dataState]);
-
- return (
- {
- setDataState(e.dataState);
- }}
- >
-
-
-
-
- (
-
-
-
- )}
- />
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-save-datastate-to-localstorage/main.jsx b/docs/knowledge-base/examples/grid/grid-save-datastate-to-localstorage/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-save-datastate-to-localstorage/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-search-bar/app.tsx b/docs/knowledge-base/examples/grid/grid-search-bar/app.tsx
deleted file mode 100644
index 63282892..00000000
--- a/docs/knowledge-base/examples/grid/grid-search-bar/app.tsx
+++ /dev/null
@@ -1,197 +0,0 @@
-import * as React from 'react';
-
-import {
- Grid,
- GridColumn as Column,
- GridToolbar,
-} from '@progress/kendo-react-grid';
-import { process } from '@progress/kendo-data-query';
-import { sampleProducts } from './sample-products';
-import { Input } from '@progress/kendo-react-inputs';
-
-export function getNestedValue(fieldName, dataItem) {
- const path = (fieldName || '').split('.');
- let data = dataItem;
- path.forEach((p) => {
- data = data ? data[p] : undefined;
- });
- return data;
-}
-
-function highlightSearchTextInReactChildren(children, searchText) {
- function highlightInNode(node) {
- if (typeof node === 'string') {
- const modifiedContent = node.replace(
- new RegExp(`(${searchText})`, 'gi'),
- '$1 '
- );
- if (node !== modifiedContent) {
- return (
-
- );
- }
- } else if (React.isValidElement(node)) {
- if (!node.props.children.map) {
- return React.cloneElement(
- node,
- {},
- highlightInNode(node.props.children)
- );
- } else {
- return React.cloneElement(
- node,
- {},
- node.props.children?.map((ch) => highlightInNode(ch))
- );
- }
- }
- return node;
- }
- return React.Children.map(children, (child) => {
- return highlightInNode(child);
- });
-}
-
-const App = () => {
- const [filterValue, setFilterValue] = React.useState();
- const [filteredSampleProducts, setFilteredSampleProducts] =
- React.useState(sampleProducts);
- const [dataState, setDataState] = React.useState({
- skip: 0,
- take: 10,
- });
- const [dataResult, setDataResult] = React.useState(
- process(filteredSampleProducts, dataState)
- );
- const dataStateChange = (event) => {
- setDataResult(process(filteredSampleProducts, event.dataState));
- setDataState(event.dataState);
- };
- const expandChange = (event) => {
- const isExpanded =
- event.dataItem.expanded === undefined
- ? event.dataItem.aggregates
- : event.dataItem.expanded;
- event.dataItem.expanded = !isExpanded;
- setDataResult({
- ...dataResult,
- });
- };
- const onFilterChange = (ev) => {
- let value = ev.value;
- setFilterValue(ev.value);
- let newData = sampleProducts.filter((item) => {
- let match = false;
- for (const property in item) {
- if (
- item[property]
- .toString()
- .toLocaleLowerCase()
- .indexOf(value.toLocaleLowerCase()) >= 0
- ) {
- match = true;
- }
- if (
- item[property].toLocaleDateString &&
- item[property].toLocaleDateString().indexOf(value) >= 0
- ) {
- match = true;
- }
- }
- return match;
- });
- setFilteredSampleProducts(newData);
- let clearedPagerDataState = {
- ...dataState,
- take: 10,
- skip: 0,
- };
- let processedData = process(newData, clearedPagerDataState);
- setDataResult(processedData);
- setDataState(clearedPagerDataState);
- };
-
- const cellRender = React.useCallback(
- (td, props) => {
- if (props.rowType === 'data') {
- const value = getNestedValue(props.field, props.dataItem)?.toString();
- if (!value) {
- return td;
- }
- if (
- filterValue &&
- filterValue.length > 0 &&
- value.toLocaleLowerCase().indexOf(filterValue.toLocaleLowerCase()) >=
- 0
- ) {
- const children = highlightSearchTextInReactChildren(
- td.props.children,
- filterValue
- );
- return React.cloneElement(td, [props], [children]);
- }
- }
- return td;
- },
- [filterValue]
- );
-
- return (
-
-
-
-
-
- Search:{' '}
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-search-bar/main.tsx b/docs/knowledge-base/examples/grid/grid-search-bar/main.tsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-search-bar/main.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-search-bar/sample-products.tsx b/docs/knowledge-base/examples/grid/grid-search-bar/sample-products.tsx
deleted file mode 100644
index e91eff6a..00000000
--- a/docs/knowledge-base/examples/grid/grid-search-bar/sample-products.tsx
+++ /dev/null
@@ -1,1235 +0,0 @@
-export const sampleProducts = [{
- "ProductID" : 1,
- "ProductName" : "Chai",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "10 boxes x 20 bags",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "FirstOrderedOn": new Date(),
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 2,
- "ProductName" : "Chang",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 3,
- "ProductName" : "Aniseed Syrup",
- "SupplierID" : 1,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 550 ml bottles",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 13,
- "UnitsOnOrder" : 70,
- "FirstOrderedOn": new Date(),
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 4,
- "ProductName" : "Chef Anton's Cajun Seasoning",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "48 - 6 oz jars",
- "UnitPrice" : 22.0000,
- "UnitsInStock" : 53,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 5,
- "ProductName" : "Chef Anton's Gumbo Mix",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "36 boxes",
- "UnitPrice" : 21.3500,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 6,
- "ProductName" : "Grandma's Boysenberry Spread",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 8 oz jars",
- "UnitPrice" : 25.0000,
- "UnitsInStock" : 120,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 7,
- "ProductName" : "Uncle Bob's Organic Dried Pears",
- "SupplierID" : 3,
- "CategoryID" : 7,
- "QuantityPerUnit" : "12 - 1 lb pkgs.",
- "UnitPrice" : 30.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 8,
- "ProductName" : "Northwoods Cranberry Sauce",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 12 oz jars",
- "UnitPrice" : 40.0000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 9,
- "ProductName" : "Mishi Kobe Niku",
- "SupplierID" : 4,
- "CategoryID" : 6,
- "QuantityPerUnit" : "18 - 500 g pkgs.",
- "UnitPrice" : 97.0000,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 10,
- "ProductName" : "Ikura",
- "SupplierID" : 4,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 200 ml jars",
- "UnitPrice" : 31.0000,
- "UnitsInStock" : 31,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 11,
- "ProductName" : "Queso Cabrales",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "1 kg pkg.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 30,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 12,
- "ProductName" : "Queso Manchego La Pastora",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 86,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 13,
- "ProductName" : "Konbu",
- "SupplierID" : 6,
- "CategoryID" : 8,
- "QuantityPerUnit" : "2 kg box",
- "UnitPrice" : 6.0000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 14,
- "ProductName" : "Tofu",
- "SupplierID" : 6,
- "CategoryID" : 7,
- "QuantityPerUnit" : "40 - 100 g pkgs.",
- "UnitPrice" : 23.2500,
- "UnitsInStock" : 35,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 15,
- "ProductName" : "Genen Shouyu",
- "SupplierID" : 6,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 250 ml bottles",
- "UnitPrice" : 15.5000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 16,
- "ProductName" : "Pavlova",
- "SupplierID" : 7,
- "CategoryID" : 3,
- "QuantityPerUnit" : "32 - 500 g boxes",
- "UnitPrice" : 17.4500,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 17,
- "ProductName" : "Alice Mutton",
- "SupplierID" : 7,
- "CategoryID" : 6,
- "QuantityPerUnit" : "20 - 1 kg tins",
- "UnitPrice" : 39.0000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 18,
- "ProductName" : "Carnarvon Tigers",
- "SupplierID" : 7,
- "CategoryID" : 8,
- "QuantityPerUnit" : "16 kg pkg.",
- "UnitPrice" : 62.5000,
- "UnitsInStock" : 42,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 19,
- "ProductName" : "Teatime Chocolate Biscuits",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 12 pieces",
- "UnitPrice" : 9.2000,
- "UnitsInStock" : 25,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 20,
- "ProductName" : "Sir Rodney's Marmalade",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "30 gift boxes",
- "UnitPrice" : 81.0000,
- "UnitsInStock" : 40,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 21,
- "ProductName" : "Sir Rodney's Scones",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 pkgs. x 4 pieces",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 3,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 22,
- "ProductName" : "Gustaf's Knäckebröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 500 g pkgs.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 104,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 23,
- "ProductName" : "Tunnbröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "12 - 250 g pkgs.",
- "UnitPrice" : 9.0000,
- "UnitsInStock" : 61,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 24,
- "ProductName" : "Guaraná Fantástica",
- "SupplierID" : 10,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 355 ml cans",
- "UnitPrice" : 4.5000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 25,
- "ProductName" : "NuNuCa Nuß-Nougat-Creme",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "20 - 450 g glasses",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 26,
- "ProductName" : "Gumbär Gummibärchen",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 250 g bags",
- "UnitPrice" : 31.2300,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 27,
- "ProductName" : "Schoggi Schokolade",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 100 g pieces",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 49,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 28,
- "ProductName" : "Rössle Sauerkraut",
- "SupplierID" : 12,
- "CategoryID" : 7,
- "QuantityPerUnit" : "25 - 825 g cans",
- "UnitPrice" : 45.6000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 29,
- "ProductName" : "Thüringer Rostbratwurst",
- "SupplierID" : 12,
- "CategoryID" : 6,
- "QuantityPerUnit" : "50 bags x 30 sausgs.",
- "UnitPrice" : 123.7900,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 30,
- "ProductName" : "Nord-Ost Matjeshering",
- "SupplierID" : 13,
- "CategoryID" : 8,
- "QuantityPerUnit" : "10 - 200 g glasses",
- "UnitPrice" : 25.8900,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 31,
- "ProductName" : "Gorgonzola Telino",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "12 - 100 g pkgs",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 32,
- "ProductName" : "Mascarpone Fabioli",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 32.0000,
- "UnitsInStock" : 9,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 33,
- "ProductName" : "Geitost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "500 g",
- "UnitPrice" : 2.5000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 34,
- "ProductName" : "Sasquatch Ale",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 111,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 35,
- "ProductName" : "Steeleye Stout",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 36,
- "ProductName" : "Inlagd Sill",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 250 g jars",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 37,
- "ProductName" : "Gravad lax",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 500 g pkgs.",
- "UnitPrice" : 26.0000,
- "UnitsInStock" : 11,
- "UnitsOnOrder" : 50,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 38,
- "ProductName" : "Côte de Blaye",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 75 cl bottles",
- "UnitPrice" : 263.5000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 39,
- "ProductName" : "Chartreuse verte",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "750 cc per bottle",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 69,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 40,
- "ProductName" : "Boston Crab Meat",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 4 oz tins",
- "UnitPrice" : 18.4000,
- "UnitsInStock" : 123,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 41,
- "ProductName" : "Jack's New England Clam Chowder",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 12 oz cans",
- "UnitPrice" : 9.6500,
- "UnitsInStock" : 85,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 42,
- "ProductName" : "Singaporean Hokkien Fried Mee",
- "SupplierID" : 20,
- "CategoryID" : 5,
- "QuantityPerUnit" : "32 - 1 kg pkgs.",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 43,
- "ProductName" : "Ipoh Coffee",
- "SupplierID" : 20,
- "CategoryID" : 1,
- "QuantityPerUnit" : "16 - 500 g tins",
- "UnitPrice" : 46.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 44,
- "ProductName" : "Gula Malacca",
- "SupplierID" : 20,
- "CategoryID" : 2,
- "QuantityPerUnit" : "20 - 2 kg bags",
- "UnitPrice" : 19.4500,
- "UnitsInStock" : 27,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 45,
- "ProductName" : "Rogede sild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "1k pkg.",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 5,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 46,
- "ProductName" : "Spegesild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "4 - 450 g glasses",
- "UnitPrice" : 12.0000,
- "UnitsInStock" : 95,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 47,
- "ProductName" : "Zaanse koeken",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 - 4 oz boxes",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 48,
- "ProductName" : "Chocolade",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 pkgs.",
- "UnitPrice" : 12.7500,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 49,
- "ProductName" : "Maxilaku",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 - 50 g pkgs.",
- "UnitPrice" : 20.0000,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 60,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 50,
- "ProductName" : "Valkoinen suklaa",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "12 - 100 g bars",
- "UnitPrice" : 16.2500,
- "UnitsInStock" : 65,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 51,
- "ProductName" : "Manjimup Dried Apples",
- "SupplierID" : 24,
- "CategoryID" : 7,
- "QuantityPerUnit" : "50 - 300 g pkgs.",
- "UnitPrice" : 53.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 52,
- "ProductName" : "Filo Mix",
- "SupplierID" : 24,
- "CategoryID" : 5,
- "QuantityPerUnit" : "16 - 2 kg boxes",
- "UnitPrice" : 7.0000,
- "UnitsInStock" : 38,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 53,
- "ProductName" : "Perth Pasties",
- "SupplierID" : 24,
- "CategoryID" : 6,
- "QuantityPerUnit" : "48 pieces",
- "UnitPrice" : 32.8000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 54,
- "ProductName" : "Tourtière",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "16 pies",
- "UnitPrice" : 7.4500,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 55,
- "ProductName" : "Pâté chinois",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "24 boxes x 2 pies",
- "UnitPrice" : 24.0000,
- "UnitsInStock" : 115,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 56,
- "ProductName" : "Gnocchi di nonna Alice",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 57,
- "ProductName" : "Ravioli Angelo",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 19.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 58,
- "ProductName" : "Escargots de Bourgogne",
- "SupplierID" : 27,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 pieces",
- "UnitPrice" : 13.2500,
- "UnitsInStock" : 62,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 59,
- "ProductName" : "Raclette Courdavault",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 55.0000,
- "UnitsInStock" : 79,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 60,
- "ProductName" : "Camembert Pierrot",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "15 - 300 g rounds",
- "UnitPrice" : 34.0000,
- "UnitsInStock" : 19,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 61,
- "ProductName" : "Sirop d'érable",
- "SupplierID" : 29,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 500 ml bottles",
- "UnitPrice" : 28.5000,
- "UnitsInStock" : 113,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 62,
- "ProductName" : "Tarte au sucre",
- "SupplierID" : 29,
- "CategoryID" : 3,
- "QuantityPerUnit" : "48 pies",
- "UnitPrice" : 49.3000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 63,
- "ProductName" : "Vegie-spread",
- "SupplierID" : 7,
- "CategoryID" : 2,
- "QuantityPerUnit" : "15 - 625 g jars",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 64,
- "ProductName" : "Wimmers gute Semmelknödel",
- "SupplierID" : 12,
- "CategoryID" : 5,
- "QuantityPerUnit" : "20 bags x 4 pieces",
- "UnitPrice" : 33.2500,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 80,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 65,
- "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "32 - 8 oz bottles",
- "UnitPrice" : 21.0500,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 66,
- "ProductName" : "Louisiana Hot Spiced Okra",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 8 oz jars",
- "UnitPrice" : 17.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 100,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 67,
- "ProductName" : "Laughing Lumberjack Lager",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 52,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 68,
- "ProductName" : "Scottish Longbreads",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 8 pieces",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 69,
- "ProductName" : "Gudbrandsdalsost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 kg pkg.",
- "UnitPrice" : 36.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 70,
- "ProductName" : "Outback Lager",
- "SupplierID" : 7,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 355 ml bottles",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 71,
- "ProductName" : "Flotemysost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 21.5000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 72,
- "ProductName" : "Mozzarella di Giovanni",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 34.8000,
- "UnitsInStock" : 14,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 73,
- "ProductName" : "Röd Kaviar",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 150 g jars",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 101,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 74,
- "ProductName" : "Longlife Tofu",
- "SupplierID" : 4,
- "CategoryID" : 7,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 20,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 75,
- "ProductName" : "Rhönbräu Klosterbier",
- "SupplierID" : 12,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 0.5 l bottles",
- "UnitPrice" : 7.7500,
- "UnitsInStock" : 125,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 76,
- "ProductName" : "Lakkalikööri",
- "SupplierID" : 23,
- "CategoryID" : 1,
- "QuantityPerUnit" : "500 ml",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 57,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 77,
- "ProductName" : "Original Frankfurter grüne Soße",
- "SupplierID" : 12,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 boxes",
- "UnitPrice" : 13.0000,
- "UnitsInStock" : 32,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}];
diff --git a/docs/knowledge-base/examples/grid/grid-selection-mobile-scrolling/app.jsx b/docs/knowledge-base/examples/grid/grid-selection-mobile-scrolling/app.jsx
deleted file mode 100644
index f58a75eb..00000000
--- a/docs/knowledge-base/examples/grid/grid-selection-mobile-scrolling/app.jsx
+++ /dev/null
@@ -1,89 +0,0 @@
-import * as React from 'react';
-
-import {
- Grid,
- GridColumn as Column,
- getSelectedState,
-} from '@progress/kendo-react-grid';
-import { getter } from '@progress/kendo-react-common';
-import { useDeviceType } from './isMobile.jsx';
-import products from './shared-products.json';
-const DATA_ITEM_KEY = 'ProductID';
-const SELECTED_FIELD = 'selected';
-const idGetter = getter(DATA_ITEM_KEY);
-
-const App = () => {
- const [dataState, setDataState] = React.useState(
- products.map((dataItem) =>
- Object.assign(
- {
- selected: false,
- },
- dataItem
- )
- )
- );
- const [selectedState, setSelectedState] = React.useState({});
- const onSelectionChange = React.useCallback(
- (event) => {
- const newSelectedState = getSelectedState({
- event,
- selectedState: selectedState,
- dataItemKey: DATA_ITEM_KEY,
- });
- setSelectedState(newSelectedState);
- },
- [selectedState]
- );
- const onHeaderSelectionChange = React.useCallback((event) => {
- const checkboxElement = event.syntheticEvent.target;
- const checked = checkboxElement.checked;
- const newSelectedState = {};
- event.dataItems.forEach((item) => {
- newSelectedState[idGetter(item)] = checked;
- });
- setSelectedState(newSelectedState);
- }, []);
-
- return (
-
- ({
- ...item,
- [SELECTED_FIELD]: selectedState[idGetter(item)],
- }))}
- style={{
- height: '400px',
- }}
- dataItemKey={DATA_ITEM_KEY}
- selectedField={SELECTED_FIELD}
- selectable={
- useDeviceType() === 'Mobile' || useDeviceType() === 'Tablet'
- ? null
- : {
- enabled: true,
- drag: false,
- cell: false,
- mode: 'multiple',
- }
- }
- onSelectionChange={onSelectionChange}
- onHeaderSelectionChange={onHeaderSelectionChange}
- >
- !selectedState[idGetter(item)]) === -1
- }
- />
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-selection-mobile-scrolling/isMobile.jsx b/docs/knowledge-base/examples/grid/grid-selection-mobile-scrolling/isMobile.jsx
deleted file mode 100644
index d0bc47fd..00000000
--- a/docs/knowledge-base/examples/grid/grid-selection-mobile-scrolling/isMobile.jsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import { useState, useEffect } from 'react';
-
-export function useDeviceType() {
- const [device, setDevice] = useState('');
-
- useEffect(() => {
- function handleDeviceDetection() {
- const userAgent = navigator.userAgent.toLowerCase();
- const isMobile = /iphone|ipad|ipod|android|windows phone/g.test(
- userAgent
- );
- const isTablet =
- /(ipad|tablet|playbook|silk)|(android(?!.*mobile))/g.test(userAgent);
-
- if (isMobile) setDevice('Mobile');
- else if (isTablet) setDevice('Tablet');
- else setDevice('Desktop');
- }
-
- handleDeviceDetection();
- window.addEventListener('resize', handleDeviceDetection);
-
- return () => window.removeEventListener('resize', handleDeviceDetection);
- }, []);
-
- return device;
-}
diff --git a/docs/knowledge-base/examples/grid/grid-selection-mobile-scrolling/main.jsx b/docs/knowledge-base/examples/grid/grid-selection-mobile-scrolling/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-selection-mobile-scrolling/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-show-details-in-popover/app.jsx b/docs/knowledge-base/examples/grid/grid-show-details-in-popover/app.jsx
deleted file mode 100644
index f59ae0a5..00000000
--- a/docs/knowledge-base/examples/grid/grid-show-details-in-popover/app.jsx
+++ /dev/null
@@ -1,80 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import { Popover } from '@progress/kendo-react-tooltip';
-
-const GridContext = React.createContext({});
-
-const MyCommandCell = (props) => {
- const { showPopover } = React.useContext(GridContext);
- const { dataItem } = props;
- return (
-
- showPopover(dataItem, ev.target)}
- >
- Show popover
-
-
- );
-};
-
-const PopoverTemplate = (props) => {
- if (props.item) {
- return (
-
-
- Unit Price: {props.item.UnitPrice}
-
-
Product name: {props.item.ProductName}
-
- );
- }
- return 'no data';
-};
-
-const testData = [
- { ProductName: 'name', ProductID: 1, UnitPrice: 5 },
- { ProductName: 'name2', ProductID: 2, UnitPrice: 19 },
-];
-
-const App = () => {
- const [anchor, setAchnor] = React.useState(null);
- const [show, setShow] = React.useState(false);
- const [popoverItem, setPopoverItem] = React.useState(null);
- const [data, setData] = React.useState(testData);
-
- const showPopover = (dataItem, target) => {
- if (show && popoverItem && popoverItem.ProductID == dataItem.ProductID) {
- setShow(false);
- return;
- }
- setPopoverItem(dataItem);
- setTimeout(() => {
- setShow(true);
- });
- setAchnor(target);
- };
-
- return (
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-show-details-in-popover/main.jsx b/docs/knowledge-base/examples/grid/grid-show-details-in-popover/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-show-details-in-popover/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-show-details-in-popover/myCommandCell.jsx b/docs/knowledge-base/examples/grid/grid-show-details-in-popover/myCommandCell.jsx
deleted file mode 100644
index efe7c5a8..00000000
--- a/docs/knowledge-base/examples/grid/grid-show-details-in-popover/myCommandCell.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-export const MyCommandCell = (props) => {
- const { dataItem } = props;
- return (
-
- props.showPopover(dataItem, ev.target)}
- >
- Show popover
-
-
- );
-};
diff --git a/docs/knowledge-base/examples/grid/grid-show-different-field-in-group/app.jsx b/docs/knowledge-base/examples/grid/grid-show-different-field-in-group/app.jsx
deleted file mode 100644
index c6443282..00000000
--- a/docs/knowledge-base/examples/grid/grid-show-different-field-in-group/app.jsx
+++ /dev/null
@@ -1,133 +0,0 @@
-import * as React from 'react';
-
-import { process } from '@progress/kendo-data-query';
-import {
- Grid,
- GridColumn as Column,
- GridToolbar,
-} from '@progress/kendo-react-grid';
-import {
- setGroupIds,
- getGroupIds,
- setExpandedState,
-} from '@progress/kendo-react-data-tools';
-import products from './products.json';
-const initialDataState = {
- take: 10,
- skip: 0,
- group: [
- {
- field: 'ProductID',
- },
- ],
-};
-
-const processWithGroups = (data, dataState) => {
- const newDataState = process(data, dataState);
- setGroupIds({
- data: newDataState.data,
- group: dataState.group,
- });
- return newDataState;
-};
-
-const findFirstDataItem = (item) => {
- if (item.items && item.items.length > 0 && !item.items[0].groupId) {
- return item.items[0];
- } else {
- return findFirstDataItem(item.items[0]);
- }
-};
-
-const App = () => {
- const [dataState, setDataState] = React.useState(initialDataState);
- const [resultState, setResultState] = React.useState(
- processWithGroups(products, initialDataState)
- );
- const [collapsedState, setCollapsedState] = React.useState([]);
- const onDataStateChange = React.useCallback((event) => {
- const newDataState = processWithGroups(products, event.dataState);
- setDataState(event.dataState);
- setResultState(newDataState);
- }, []);
- const onExpandChange = React.useCallback(
- (event) => {
- const item = event.dataItem;
-
- if (item.groupId) {
- const collapsedIds = !event.value
- ? [...collapsedState, item.groupId]
- : collapsedState.filter((groupId) => groupId !== item.groupId);
- setCollapsedState(collapsedIds);
- }
- },
- [collapsedState]
- );
- const onGroupsToggle = React.useCallback(() => {
- const dataStateWithoutPaging = processWithGroups(products, {
- group: dataState.group,
- });
- setCollapsedState(
- collapsedState.length
- ? []
- : getGroupIds({
- data: dataStateWithoutPaging.data,
- })
- );
- }, [collapsedState, dataState]);
- const newData = setExpandedState({
- data: resultState.data,
- collapsedIds: collapsedState,
- });
-
- const cellRender = (td, props) => {
- if (
- props.rowType == 'groupHeader' &&
- props.field == 'value' &&
- props.dataItem.field == 'ProductID' &&
- td
- ) {
- if (td.props.children) {
- let children = (
-
- {td.props.children.props.children}:{' '}
- {findFirstDataItem(props.dataItem).ProductName}
-
- );
- return React.cloneElement(td, td.props, children);
- }
- }
- return td;
- };
- return (
-
-
-
- {collapsedState.length ? 'Expand' : 'Collapse'} Groups
-
-
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-show-different-field-in-group/main.jsx b/docs/knowledge-base/examples/grid/grid-show-different-field-in-group/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-show-different-field-in-group/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-show-different-field-in-group/products.json b/docs/knowledge-base/examples/grid/grid-show-different-field-in-group/products.json
deleted file mode 100644
index 4df1c408..00000000
--- a/docs/knowledge-base/examples/grid/grid-show-different-field-in-group/products.json
+++ /dev/null
@@ -1,1233 +0,0 @@
-[{
- "ProductID" : 1,
- "ProductName" : "Chai",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "10 boxes x 20 bags",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 2,
- "ProductName" : "Chang",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 3,
- "ProductName" : "Aniseed Syrup",
- "SupplierID" : 1,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 550 ml bottles",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 13,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 4,
- "ProductName" : "Chef Anton's Cajun Seasoning",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "48 - 6 oz jars",
- "UnitPrice" : 22.0000,
- "UnitsInStock" : 53,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 5,
- "ProductName" : "Chef Anton's Gumbo Mix",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "36 boxes",
- "UnitPrice" : 21.3500,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 6,
- "ProductName" : "Grandma's Boysenberry Spread",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 8 oz jars",
- "UnitPrice" : 25.0000,
- "UnitsInStock" : 120,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 7,
- "ProductName" : "Uncle Bob's Organic Dried Pears",
- "SupplierID" : 3,
- "CategoryID" : 7,
- "QuantityPerUnit" : "12 - 1 lb pkgs.",
- "UnitPrice" : 30.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 8,
- "ProductName" : "Northwoods Cranberry Sauce",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 12 oz jars",
- "UnitPrice" : 40.0000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 9,
- "ProductName" : "Mishi Kobe Niku",
- "SupplierID" : 4,
- "CategoryID" : 6,
- "QuantityPerUnit" : "18 - 500 g pkgs.",
- "UnitPrice" : 97.0000,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 10,
- "ProductName" : "Ikura",
- "SupplierID" : 4,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 200 ml jars",
- "UnitPrice" : 31.0000,
- "UnitsInStock" : 31,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 11,
- "ProductName" : "Queso Cabrales",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "1 kg pkg.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 30,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 12,
- "ProductName" : "Queso Manchego La Pastora",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 86,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 13,
- "ProductName" : "Konbu",
- "SupplierID" : 6,
- "CategoryID" : 8,
- "QuantityPerUnit" : "2 kg box",
- "UnitPrice" : 6.0000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 14,
- "ProductName" : "Tofu",
- "SupplierID" : 6,
- "CategoryID" : 7,
- "QuantityPerUnit" : "40 - 100 g pkgs.",
- "UnitPrice" : 23.2500,
- "UnitsInStock" : 35,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 15,
- "ProductName" : "Genen Shouyu",
- "SupplierID" : 6,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 250 ml bottles",
- "UnitPrice" : 15.5000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 16,
- "ProductName" : "Pavlova",
- "SupplierID" : 7,
- "CategoryID" : 3,
- "QuantityPerUnit" : "32 - 500 g boxes",
- "UnitPrice" : 17.4500,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 17,
- "ProductName" : "Alice Mutton",
- "SupplierID" : 7,
- "CategoryID" : 6,
- "QuantityPerUnit" : "20 - 1 kg tins",
- "UnitPrice" : 39.0000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 18,
- "ProductName" : "Carnarvon Tigers",
- "SupplierID" : 7,
- "CategoryID" : 8,
- "QuantityPerUnit" : "16 kg pkg.",
- "UnitPrice" : 62.5000,
- "UnitsInStock" : 42,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 19,
- "ProductName" : "Teatime Chocolate Biscuits",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 12 pieces",
- "UnitPrice" : 9.2000,
- "UnitsInStock" : 25,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 20,
- "ProductName" : "Sir Rodney's Marmalade",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "30 gift boxes",
- "UnitPrice" : 81.0000,
- "UnitsInStock" : 40,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 21,
- "ProductName" : "Sir Rodney's Scones",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 pkgs. x 4 pieces",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 3,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 22,
- "ProductName" : "Gustaf's Knäckebröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 500 g pkgs.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 104,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 23,
- "ProductName" : "Tunnbröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "12 - 250 g pkgs.",
- "UnitPrice" : 9.0000,
- "UnitsInStock" : 61,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 24,
- "ProductName" : "Guaraná Fantástica",
- "SupplierID" : 10,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 355 ml cans",
- "UnitPrice" : 4.5000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 25,
- "ProductName" : "NuNuCa Nuß-Nougat-Creme",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "20 - 450 g glasses",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 26,
- "ProductName" : "Gumbär Gummibärchen",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 250 g bags",
- "UnitPrice" : 31.2300,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 27,
- "ProductName" : "Schoggi Schokolade",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 100 g pieces",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 49,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 28,
- "ProductName" : "Rössle Sauerkraut",
- "SupplierID" : 12,
- "CategoryID" : 7,
- "QuantityPerUnit" : "25 - 825 g cans",
- "UnitPrice" : 45.6000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 29,
- "ProductName" : "Thüringer Rostbratwurst",
- "SupplierID" : 12,
- "CategoryID" : 6,
- "QuantityPerUnit" : "50 bags x 30 sausgs.",
- "UnitPrice" : 123.7900,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 30,
- "ProductName" : "Nord-Ost Matjeshering",
- "SupplierID" : 13,
- "CategoryID" : 8,
- "QuantityPerUnit" : "10 - 200 g glasses",
- "UnitPrice" : 25.8900,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 31,
- "ProductName" : "Gorgonzola Telino",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "12 - 100 g pkgs",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 32,
- "ProductName" : "Mascarpone Fabioli",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 32.0000,
- "UnitsInStock" : 9,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 33,
- "ProductName" : "Geitost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "500 g",
- "UnitPrice" : 2.5000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 34,
- "ProductName" : "Sasquatch Ale",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 111,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 35,
- "ProductName" : "Steeleye Stout",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 36,
- "ProductName" : "Inlagd Sill",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 250 g jars",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 37,
- "ProductName" : "Gravad lax",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 500 g pkgs.",
- "UnitPrice" : 26.0000,
- "UnitsInStock" : 11,
- "UnitsOnOrder" : 50,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 38,
- "ProductName" : "Côte de Blaye",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 75 cl bottles",
- "UnitPrice" : 263.5000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 39,
- "ProductName" : "Chartreuse verte",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "750 cc per bottle",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 69,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 40,
- "ProductName" : "Boston Crab Meat",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 4 oz tins",
- "UnitPrice" : 18.4000,
- "UnitsInStock" : 123,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 41,
- "ProductName" : "Jack's New England Clam Chowder",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 12 oz cans",
- "UnitPrice" : 9.6500,
- "UnitsInStock" : 85,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 42,
- "ProductName" : "Singaporean Hokkien Fried Mee",
- "SupplierID" : 20,
- "CategoryID" : 5,
- "QuantityPerUnit" : "32 - 1 kg pkgs.",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 43,
- "ProductName" : "Ipoh Coffee",
- "SupplierID" : 20,
- "CategoryID" : 1,
- "QuantityPerUnit" : "16 - 500 g tins",
- "UnitPrice" : 46.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 44,
- "ProductName" : "Gula Malacca",
- "SupplierID" : 20,
- "CategoryID" : 2,
- "QuantityPerUnit" : "20 - 2 kg bags",
- "UnitPrice" : 19.4500,
- "UnitsInStock" : 27,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 45,
- "ProductName" : "Rogede sild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "1k pkg.",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 5,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 46,
- "ProductName" : "Spegesild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "4 - 450 g glasses",
- "UnitPrice" : 12.0000,
- "UnitsInStock" : 95,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 47,
- "ProductName" : "Zaanse koeken",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 - 4 oz boxes",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 48,
- "ProductName" : "Chocolade",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 pkgs.",
- "UnitPrice" : 12.7500,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 49,
- "ProductName" : "Maxilaku",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 - 50 g pkgs.",
- "UnitPrice" : 20.0000,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 60,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 50,
- "ProductName" : "Valkoinen suklaa",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "12 - 100 g bars",
- "UnitPrice" : 16.2500,
- "UnitsInStock" : 65,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 51,
- "ProductName" : "Manjimup Dried Apples",
- "SupplierID" : 24,
- "CategoryID" : 7,
- "QuantityPerUnit" : "50 - 300 g pkgs.",
- "UnitPrice" : 53.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 52,
- "ProductName" : "Filo Mix",
- "SupplierID" : 24,
- "CategoryID" : 5,
- "QuantityPerUnit" : "16 - 2 kg boxes",
- "UnitPrice" : 7.0000,
- "UnitsInStock" : 38,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 53,
- "ProductName" : "Perth Pasties",
- "SupplierID" : 24,
- "CategoryID" : 6,
- "QuantityPerUnit" : "48 pieces",
- "UnitPrice" : 32.8000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 54,
- "ProductName" : "Tourtière",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "16 pies",
- "UnitPrice" : 7.4500,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 55,
- "ProductName" : "Pâté chinois",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "24 boxes x 2 pies",
- "UnitPrice" : 24.0000,
- "UnitsInStock" : 115,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 56,
- "ProductName" : "Gnocchi di nonna Alice",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 57,
- "ProductName" : "Ravioli Angelo",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 19.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 58,
- "ProductName" : "Escargots de Bourgogne",
- "SupplierID" : 27,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 pieces",
- "UnitPrice" : 13.2500,
- "UnitsInStock" : 62,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 59,
- "ProductName" : "Raclette Courdavault",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 55.0000,
- "UnitsInStock" : 79,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 60,
- "ProductName" : "Camembert Pierrot",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "15 - 300 g rounds",
- "UnitPrice" : 34.0000,
- "UnitsInStock" : 19,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 61,
- "ProductName" : "Sirop d'érable",
- "SupplierID" : 29,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 500 ml bottles",
- "UnitPrice" : 28.5000,
- "UnitsInStock" : 113,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 62,
- "ProductName" : "Tarte au sucre",
- "SupplierID" : 29,
- "CategoryID" : 3,
- "QuantityPerUnit" : "48 pies",
- "UnitPrice" : 49.3000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 63,
- "ProductName" : "Vegie-spread",
- "SupplierID" : 7,
- "CategoryID" : 2,
- "QuantityPerUnit" : "15 - 625 g jars",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 64,
- "ProductName" : "Wimmers gute Semmelknödel",
- "SupplierID" : 12,
- "CategoryID" : 5,
- "QuantityPerUnit" : "20 bags x 4 pieces",
- "UnitPrice" : 33.2500,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 80,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 65,
- "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "32 - 8 oz bottles",
- "UnitPrice" : 21.0500,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 66,
- "ProductName" : "Louisiana Hot Spiced Okra",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 8 oz jars",
- "UnitPrice" : 17.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 100,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 67,
- "ProductName" : "Laughing Lumberjack Lager",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 52,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 68,
- "ProductName" : "Scottish Longbreads",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 8 pieces",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 69,
- "ProductName" : "Gudbrandsdalsost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 kg pkg.",
- "UnitPrice" : 36.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 70,
- "ProductName" : "Outback Lager",
- "SupplierID" : 7,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 355 ml bottles",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 71,
- "ProductName" : "Flotemysost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 21.5000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 72,
- "ProductName" : "Mozzarella di Giovanni",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 34.8000,
- "UnitsInStock" : 14,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 73,
- "ProductName" : "Röd Kaviar",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 150 g jars",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 101,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 74,
- "ProductName" : "Longlife Tofu",
- "SupplierID" : 4,
- "CategoryID" : 7,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 20,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 75,
- "ProductName" : "Rhönbräu Klosterbier",
- "SupplierID" : 12,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 0.5 l bottles",
- "UnitPrice" : 7.7500,
- "UnitsInStock" : 125,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 76,
- "ProductName" : "Lakkalikööri",
- "SupplierID" : 23,
- "CategoryID" : 1,
- "QuantityPerUnit" : "500 ml",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 57,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 77,
- "ProductName" : "Original Frankfurter grüne Soße",
- "SupplierID" : 12,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 boxes",
- "UnitPrice" : 13.0000,
- "UnitsInStock" : 32,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}]
diff --git a/docs/knowledge-base/examples/grid/grid-show-placeholder-for-filters/app.jsx b/docs/knowledge-base/examples/grid/grid-show-placeholder-for-filters/app.jsx
deleted file mode 100644
index c6c40758..00000000
--- a/docs/knowledge-base/examples/grid/grid-show-placeholder-for-filters/app.jsx
+++ /dev/null
@@ -1,50 +0,0 @@
-import * as React from 'react';
-
-import { GridWithFiltering } from './grid-with-filtering';
-import {
- NumericTextBoxPropsContext,
- InputPropsContext,
-} from '@progress/kendo-react-inputs';
-import { DatePickerPropsContext } from '@progress/kendo-react-dateinputs';
-const App = () => {
- const numericTextBoxPropsCallback = React.useCallback((props) => {
- if (props.ariaLabel == 'Filter') {
- return {
- ...props,
- placeholder: 'Search...',
- };
- } else {
- return { ...props };
- }
- }, []);
-
- const datePickerPropsCallback = React.useCallback((props) => {
- if (props.ariaLabel == 'Filter') {
- return {
- ...props,
- placeholder: 'Search...',
- };
- } else {
- return { ...props };
- }
- }, []);
-
- React.useEffect(() => {
- let filterInputs = document.querySelectorAll(
- '.k-filtercell-wrapper .k-textbox .k-input-inner'
- );
- if (filterInputs.length > 0) {
- filterInputs.forEach((el) => {
- el.setAttribute('placeholder', 'Search...');
- });
- }
- }, []);
- return (
-
-
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-show-placeholder-for-filters/grid-with-filtering.jsx b/docs/knowledge-base/examples/grid/grid-show-placeholder-for-filters/grid-with-filtering.jsx
deleted file mode 100644
index 221dc074..00000000
--- a/docs/knowledge-base/examples/grid/grid-show-placeholder-for-filters/grid-with-filtering.jsx
+++ /dev/null
@@ -1,43 +0,0 @@
-import * as React from 'react';
-import { Grid, GridColumn } from '@progress/kendo-react-grid';
-import { filterBy } from '@progress/kendo-data-query';
-import { sampleProducts } from './sample-products';
-const initialFilter = {
- logic: 'and',
- filters: [],
-};
-export const GridWithFiltering = () => {
- const [filter, setFilter] = React.useState(initialFilter);
- return (
- setFilter(e.filter)}
- >
-
-
-
-
-
-
- );
-};
diff --git a/docs/knowledge-base/examples/grid/grid-show-placeholder-for-filters/main.jsx b/docs/knowledge-base/examples/grid/grid-show-placeholder-for-filters/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-show-placeholder-for-filters/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-show-placeholder-for-filters/sample-products.js b/docs/knowledge-base/examples/grid/grid-show-placeholder-for-filters/sample-products.js
deleted file mode 100644
index e06a78e4..00000000
--- a/docs/knowledge-base/examples/grid/grid-show-placeholder-for-filters/sample-products.js
+++ /dev/null
@@ -1,171 +0,0 @@
-export const sampleProducts = [{
- "ProductID": 1,
- "ProductName": "Chai",
- "SupplierID": 1,
- "CategoryID": 1,
- "QuantityPerUnit": "10 boxes x 20 bags",
- "UnitPrice": 18,
- "UnitsInStock": 39,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- },
- "FirstOrderedOn": new Date(1996, 8, 20)
- }, {
- "ProductID": 2,
- "ProductName": "Chang",
- "SupplierID": 1,
- "CategoryID": 1,
- "QuantityPerUnit": "24 - 12 oz bottles",
- "UnitPrice": 19,
- "UnitsInStock": 17,
- "UnitsOnOrder": 40,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- },
- "FirstOrderedOn": new Date(1996, 7, 12)
- }, {
- "ProductID": 3,
- "ProductName": "Aniseed Syrup",
- "SupplierID": 1,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 550 ml bottles",
- "UnitPrice": 10,
- "UnitsInStock": 13,
- "UnitsOnOrder": 70,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- },
- "FirstOrderedOn": new Date(1996, 8, 26)
- }, {
- "ProductID": 4,
- "ProductName": "Chef Anton's Cajun Seasoning",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "48 - 6 oz jars",
- "UnitPrice": 22,
- "UnitsInStock": 53,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- },
- "FirstOrderedOn": new Date(1996, 9, 19)
- }, {
- "ProductID": 5,
- "ProductName": "Chef Anton's Gumbo Mix",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "36 boxes",
- "UnitPrice": 21.35,
- "UnitsInStock": 0,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- },
- "FirstOrderedOn": new Date(1996, 7, 17)
- }, {
- "ProductID": 6,
- "ProductName": "Grandma's Boysenberry Spread",
- "SupplierID": 3,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 8 oz jars",
- "UnitPrice": 25,
- "UnitsInStock": 120,
- "UnitsOnOrder": 0,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- },
- "FirstOrderedOn": new Date(1996, 9, 19)
- }, {
- "ProductID": 7,
- "ProductName": "Uncle Bob's Organic Dried Pears",
- "SupplierID": 3,
- "CategoryID": 7,
- "QuantityPerUnit": "12 - 1 lb pkgs.",
- "UnitPrice": 30,
- "UnitsInStock": 15,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 7,
- "CategoryName": "Produce",
- "Description": "Dried fruit and bean curd"
- },
- "FirstOrderedOn": new Date(1996, 7, 22)
- }, {
- "ProductID": 8,
- "ProductName": "Northwoods Cranberry Sauce",
- "SupplierID": 3,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 12 oz jars",
- "UnitPrice": 40,
- "UnitsInStock": 6,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- },
- "FirstOrderedOn": new Date(1996, 11, 1)
- }, {
- "ProductID": 9,
- "ProductName": "Mishi Kobe Niku",
- "SupplierID": 4,
- "CategoryID": 6,
- "QuantityPerUnit": "18 - 500 g pkgs.",
- "UnitPrice": 97,
- "UnitsInStock": 29,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 6,
- "CategoryName": "Meat/Poultry",
- "Description": "Prepared meats"
- },
- "FirstOrderedOn": new Date(1997, 1, 21)
- }, {
- "ProductID": 10,
- "ProductName": "Ikura",
- "SupplierID": 4,
- "CategoryID": 8,
- "QuantityPerUnit": "12 - 200 ml jars",
- "UnitPrice": 31,
- "UnitsInStock": 31,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- },
- "FirstOrderedOn": new Date(1996, 8, 5)
- }];
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/CSS/app.jsx b/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/CSS/app.jsx
deleted file mode 100644
index 10d31c51..00000000
--- a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/CSS/app.jsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn } from '@progress/kendo-react-grid';
-import products from './shared-products.json';
-const App = () => {
- return (
-
-
-
-
-
-
-
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/CSS/main.jsx b/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/CSS/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/CSS/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/cell/app.jsx b/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/cell/app.jsx
deleted file mode 100644
index 8b21243e..00000000
--- a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/cell/app.jsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn } from '@progress/kendo-react-grid';
-import products from './shared-products.json';
-const App = () => {
- const CellRender = (props) => {
- return (
-
- {props.dataItem.ProductName}
-
- );
- };
- return (
-
-
-
-
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/cell/main.jsx b/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/cell/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/cell/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/cellRender/app.jsx b/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/cellRender/app.jsx
deleted file mode 100644
index 51043034..00000000
--- a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/cellRender/app.jsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn } from '@progress/kendo-react-grid';
-import products from './shared-products.json';
-const App = () => {
- const CellRender = (props) => {
- return (
-
- {props.props.children}
-
- );
- };
- return (
-
-
-
-
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/cellRender/main.jsx b/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/cellRender/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/cellRender/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/shared/products.json b/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/shared/products.json
deleted file mode 100644
index 4df1c408..00000000
--- a/docs/knowledge-base/examples/grid/grid-whitespace-textoverflow/shared/products.json
+++ /dev/null
@@ -1,1233 +0,0 @@
-[{
- "ProductID" : 1,
- "ProductName" : "Chai",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "10 boxes x 20 bags",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 2,
- "ProductName" : "Chang",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 3,
- "ProductName" : "Aniseed Syrup",
- "SupplierID" : 1,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 550 ml bottles",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 13,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 4,
- "ProductName" : "Chef Anton's Cajun Seasoning",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "48 - 6 oz jars",
- "UnitPrice" : 22.0000,
- "UnitsInStock" : 53,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 5,
- "ProductName" : "Chef Anton's Gumbo Mix",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "36 boxes",
- "UnitPrice" : 21.3500,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 6,
- "ProductName" : "Grandma's Boysenberry Spread",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 8 oz jars",
- "UnitPrice" : 25.0000,
- "UnitsInStock" : 120,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 7,
- "ProductName" : "Uncle Bob's Organic Dried Pears",
- "SupplierID" : 3,
- "CategoryID" : 7,
- "QuantityPerUnit" : "12 - 1 lb pkgs.",
- "UnitPrice" : 30.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 8,
- "ProductName" : "Northwoods Cranberry Sauce",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 12 oz jars",
- "UnitPrice" : 40.0000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 9,
- "ProductName" : "Mishi Kobe Niku",
- "SupplierID" : 4,
- "CategoryID" : 6,
- "QuantityPerUnit" : "18 - 500 g pkgs.",
- "UnitPrice" : 97.0000,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 10,
- "ProductName" : "Ikura",
- "SupplierID" : 4,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 200 ml jars",
- "UnitPrice" : 31.0000,
- "UnitsInStock" : 31,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 11,
- "ProductName" : "Queso Cabrales",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "1 kg pkg.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 30,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 12,
- "ProductName" : "Queso Manchego La Pastora",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 86,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 13,
- "ProductName" : "Konbu",
- "SupplierID" : 6,
- "CategoryID" : 8,
- "QuantityPerUnit" : "2 kg box",
- "UnitPrice" : 6.0000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 14,
- "ProductName" : "Tofu",
- "SupplierID" : 6,
- "CategoryID" : 7,
- "QuantityPerUnit" : "40 - 100 g pkgs.",
- "UnitPrice" : 23.2500,
- "UnitsInStock" : 35,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 15,
- "ProductName" : "Genen Shouyu",
- "SupplierID" : 6,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 250 ml bottles",
- "UnitPrice" : 15.5000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 16,
- "ProductName" : "Pavlova",
- "SupplierID" : 7,
- "CategoryID" : 3,
- "QuantityPerUnit" : "32 - 500 g boxes",
- "UnitPrice" : 17.4500,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 17,
- "ProductName" : "Alice Mutton",
- "SupplierID" : 7,
- "CategoryID" : 6,
- "QuantityPerUnit" : "20 - 1 kg tins",
- "UnitPrice" : 39.0000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 18,
- "ProductName" : "Carnarvon Tigers",
- "SupplierID" : 7,
- "CategoryID" : 8,
- "QuantityPerUnit" : "16 kg pkg.",
- "UnitPrice" : 62.5000,
- "UnitsInStock" : 42,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 19,
- "ProductName" : "Teatime Chocolate Biscuits",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 12 pieces",
- "UnitPrice" : 9.2000,
- "UnitsInStock" : 25,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 20,
- "ProductName" : "Sir Rodney's Marmalade",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "30 gift boxes",
- "UnitPrice" : 81.0000,
- "UnitsInStock" : 40,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 21,
- "ProductName" : "Sir Rodney's Scones",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 pkgs. x 4 pieces",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 3,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 22,
- "ProductName" : "Gustaf's Knäckebröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 500 g pkgs.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 104,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 23,
- "ProductName" : "Tunnbröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "12 - 250 g pkgs.",
- "UnitPrice" : 9.0000,
- "UnitsInStock" : 61,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 24,
- "ProductName" : "Guaraná Fantástica",
- "SupplierID" : 10,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 355 ml cans",
- "UnitPrice" : 4.5000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 25,
- "ProductName" : "NuNuCa Nuß-Nougat-Creme",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "20 - 450 g glasses",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 26,
- "ProductName" : "Gumbär Gummibärchen",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 250 g bags",
- "UnitPrice" : 31.2300,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 27,
- "ProductName" : "Schoggi Schokolade",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 100 g pieces",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 49,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 28,
- "ProductName" : "Rössle Sauerkraut",
- "SupplierID" : 12,
- "CategoryID" : 7,
- "QuantityPerUnit" : "25 - 825 g cans",
- "UnitPrice" : 45.6000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 29,
- "ProductName" : "Thüringer Rostbratwurst",
- "SupplierID" : 12,
- "CategoryID" : 6,
- "QuantityPerUnit" : "50 bags x 30 sausgs.",
- "UnitPrice" : 123.7900,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 30,
- "ProductName" : "Nord-Ost Matjeshering",
- "SupplierID" : 13,
- "CategoryID" : 8,
- "QuantityPerUnit" : "10 - 200 g glasses",
- "UnitPrice" : 25.8900,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 31,
- "ProductName" : "Gorgonzola Telino",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "12 - 100 g pkgs",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 32,
- "ProductName" : "Mascarpone Fabioli",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 32.0000,
- "UnitsInStock" : 9,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 33,
- "ProductName" : "Geitost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "500 g",
- "UnitPrice" : 2.5000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 34,
- "ProductName" : "Sasquatch Ale",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 111,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 35,
- "ProductName" : "Steeleye Stout",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 36,
- "ProductName" : "Inlagd Sill",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 250 g jars",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 37,
- "ProductName" : "Gravad lax",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 500 g pkgs.",
- "UnitPrice" : 26.0000,
- "UnitsInStock" : 11,
- "UnitsOnOrder" : 50,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 38,
- "ProductName" : "Côte de Blaye",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 75 cl bottles",
- "UnitPrice" : 263.5000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 39,
- "ProductName" : "Chartreuse verte",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "750 cc per bottle",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 69,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 40,
- "ProductName" : "Boston Crab Meat",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 4 oz tins",
- "UnitPrice" : 18.4000,
- "UnitsInStock" : 123,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 41,
- "ProductName" : "Jack's New England Clam Chowder",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 12 oz cans",
- "UnitPrice" : 9.6500,
- "UnitsInStock" : 85,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 42,
- "ProductName" : "Singaporean Hokkien Fried Mee",
- "SupplierID" : 20,
- "CategoryID" : 5,
- "QuantityPerUnit" : "32 - 1 kg pkgs.",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 43,
- "ProductName" : "Ipoh Coffee",
- "SupplierID" : 20,
- "CategoryID" : 1,
- "QuantityPerUnit" : "16 - 500 g tins",
- "UnitPrice" : 46.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 44,
- "ProductName" : "Gula Malacca",
- "SupplierID" : 20,
- "CategoryID" : 2,
- "QuantityPerUnit" : "20 - 2 kg bags",
- "UnitPrice" : 19.4500,
- "UnitsInStock" : 27,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 45,
- "ProductName" : "Rogede sild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "1k pkg.",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 5,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 46,
- "ProductName" : "Spegesild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "4 - 450 g glasses",
- "UnitPrice" : 12.0000,
- "UnitsInStock" : 95,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 47,
- "ProductName" : "Zaanse koeken",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 - 4 oz boxes",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 48,
- "ProductName" : "Chocolade",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 pkgs.",
- "UnitPrice" : 12.7500,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 49,
- "ProductName" : "Maxilaku",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 - 50 g pkgs.",
- "UnitPrice" : 20.0000,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 60,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 50,
- "ProductName" : "Valkoinen suklaa",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "12 - 100 g bars",
- "UnitPrice" : 16.2500,
- "UnitsInStock" : 65,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 51,
- "ProductName" : "Manjimup Dried Apples",
- "SupplierID" : 24,
- "CategoryID" : 7,
- "QuantityPerUnit" : "50 - 300 g pkgs.",
- "UnitPrice" : 53.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 52,
- "ProductName" : "Filo Mix",
- "SupplierID" : 24,
- "CategoryID" : 5,
- "QuantityPerUnit" : "16 - 2 kg boxes",
- "UnitPrice" : 7.0000,
- "UnitsInStock" : 38,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 53,
- "ProductName" : "Perth Pasties",
- "SupplierID" : 24,
- "CategoryID" : 6,
- "QuantityPerUnit" : "48 pieces",
- "UnitPrice" : 32.8000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 54,
- "ProductName" : "Tourtière",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "16 pies",
- "UnitPrice" : 7.4500,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 55,
- "ProductName" : "Pâté chinois",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "24 boxes x 2 pies",
- "UnitPrice" : 24.0000,
- "UnitsInStock" : 115,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 56,
- "ProductName" : "Gnocchi di nonna Alice",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 57,
- "ProductName" : "Ravioli Angelo",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 19.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 58,
- "ProductName" : "Escargots de Bourgogne",
- "SupplierID" : 27,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 pieces",
- "UnitPrice" : 13.2500,
- "UnitsInStock" : 62,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 59,
- "ProductName" : "Raclette Courdavault",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 55.0000,
- "UnitsInStock" : 79,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 60,
- "ProductName" : "Camembert Pierrot",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "15 - 300 g rounds",
- "UnitPrice" : 34.0000,
- "UnitsInStock" : 19,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 61,
- "ProductName" : "Sirop d'érable",
- "SupplierID" : 29,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 500 ml bottles",
- "UnitPrice" : 28.5000,
- "UnitsInStock" : 113,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 62,
- "ProductName" : "Tarte au sucre",
- "SupplierID" : 29,
- "CategoryID" : 3,
- "QuantityPerUnit" : "48 pies",
- "UnitPrice" : 49.3000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 63,
- "ProductName" : "Vegie-spread",
- "SupplierID" : 7,
- "CategoryID" : 2,
- "QuantityPerUnit" : "15 - 625 g jars",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 64,
- "ProductName" : "Wimmers gute Semmelknödel",
- "SupplierID" : 12,
- "CategoryID" : 5,
- "QuantityPerUnit" : "20 bags x 4 pieces",
- "UnitPrice" : 33.2500,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 80,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 65,
- "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "32 - 8 oz bottles",
- "UnitPrice" : 21.0500,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 66,
- "ProductName" : "Louisiana Hot Spiced Okra",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 8 oz jars",
- "UnitPrice" : 17.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 100,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 67,
- "ProductName" : "Laughing Lumberjack Lager",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 52,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 68,
- "ProductName" : "Scottish Longbreads",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 8 pieces",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 69,
- "ProductName" : "Gudbrandsdalsost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 kg pkg.",
- "UnitPrice" : 36.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 70,
- "ProductName" : "Outback Lager",
- "SupplierID" : 7,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 355 ml bottles",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 71,
- "ProductName" : "Flotemysost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 21.5000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 72,
- "ProductName" : "Mozzarella di Giovanni",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 34.8000,
- "UnitsInStock" : 14,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 73,
- "ProductName" : "Röd Kaviar",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 150 g jars",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 101,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 74,
- "ProductName" : "Longlife Tofu",
- "SupplierID" : 4,
- "CategoryID" : 7,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 20,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 75,
- "ProductName" : "Rhönbräu Klosterbier",
- "SupplierID" : 12,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 0.5 l bottles",
- "UnitPrice" : 7.7500,
- "UnitsInStock" : 125,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 76,
- "ProductName" : "Lakkalikööri",
- "SupplierID" : 23,
- "CategoryID" : 1,
- "QuantityPerUnit" : "500 ml",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 57,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 77,
- "ProductName" : "Original Frankfurter grüne Soße",
- "SupplierID" : 12,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 boxes",
- "UnitPrice" : 13.0000,
- "UnitsInStock" : 32,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}]
diff --git a/docs/knowledge-base/examples/grid/group-header-render/app.jsx b/docs/knowledge-base/examples/grid/group-header-render/app.jsx
deleted file mode 100644
index 0349a7e5..00000000
--- a/docs/knowledge-base/examples/grid/group-header-render/app.jsx
+++ /dev/null
@@ -1,69 +0,0 @@
-import * as React from 'react';
-
-
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import { process } from '@progress/kendo-data-query';
-
-import products from './shared-products.json';
-
-class App extends React.PureComponent {
- state = this.createAppState({
- take: 10,
- group: [{ field: 'UnitsInStock' }]
- });
-
- cellRender = (td, props) => {
- if(td && td.props.children && props.rowType === "groupHeader"){
- let children = {td.props.children.props.children} count: {props.dataItem.items.length}
- return React.cloneElement(td, td.props, children);
- }
- return td
- }
-
- render() {
- return (
-
-
-
-
-
-
-
- );
- }
-
- createAppState(dataState) {
- return {
- result: process(products, dataState),
- dataState: dataState
- };
- }
-
- dataStateChange = (event) => {
- this.setState(this.createAppState(event.data));
- }
-
- expandChange = (event) => {
- event.dataItem[event.target.props.expandField] = event.value;
- this.setState({
- result: Object.assign({}, this.state.result),
- dataState: this.state.dataState
- });
- }
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/group-header-render/cells-header/app.jsx b/docs/knowledge-base/examples/grid/group-header-render/cells-header/app.jsx
deleted file mode 100644
index 57d53848..00000000
--- a/docs/knowledge-base/examples/grid/group-header-render/cells-header/app.jsx
+++ /dev/null
@@ -1,106 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import { groupBy } from '@progress/kendo-data-query';
-import {
- setExpandedState,
- setGroupIds,
-} from '@progress/kendo-react-data-tools';
-import products from './shared-products.json';
-const initialGroup = [
- {
- field: 'UnitsInStock',
- },
- {
- field: 'ProductName',
- },
-];
-const processWithGroups = (data, group) => {
- const newDataState = groupBy(data, group);
- setGroupIds({
- data: newDataState,
- group: group,
- });
- return newDataState;
-};
-
-const CustomCell = (props) => {
- return (
- props.tdProps && (
-
- {props.children && (
-
- {props.children.props.children[0]}
- {props.dataItem.items.length}:{props.dataItem[props.field]}
-
- )}
-
- )
- );
-};
-
-const GroupMyHeaderCustomCell = (props) => (
-
-);
-
-const App = () => {
- const [group, setGroup] = React.useState(initialGroup);
- const [resultState, setResultState] = React.useState(
- processWithGroups(products, initialGroup)
- );
- const [collapsedState, setCollapsedState] = React.useState([]);
- const onGroupChange = React.useCallback(
- (event) => {
- const newDataState = processWithGroups(products, event.group);
- setGroup(event.group);
- setResultState(newDataState);
- },
- [group]
- );
- const onExpandChange = React.useCallback(
- (event) => {
- const item = event.dataItem;
- if (item.groupId) {
- const newCollapsedIds = !event.value
- ? [...collapsedState, item.groupId]
- : collapsedState.filter((groupId) => groupId !== item.groupId);
- setCollapsedState(newCollapsedIds);
- }
- },
- [collapsedState]
- );
- const newData = setExpandedState({
- data: resultState,
- collapsedIds: collapsedState,
- });
- return (
-
-
-
-
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/group-header-render/cells-header/main.jsx b/docs/knowledge-base/examples/grid/group-header-render/cells-header/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/group-header-render/cells-header/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/group-header-render/main.jsx b/docs/knowledge-base/examples/grid/group-header-render/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/group-header-render/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/grouping-with-custom-cell/app.jsx b/docs/knowledge-base/examples/grid/grouping-with-custom-cell/app.jsx
deleted file mode 100644
index 6a875ad9..00000000
--- a/docs/knowledge-base/examples/grid/grouping-with-custom-cell/app.jsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import * as React from "react";
-
-import { Grid, GridColumn as Column } from "@progress/kendo-react-grid";
-import { process } from "@progress/kendo-data-query";
-
-import products from "./shared-products.json";
-
-const ProductNameCell = ({ dataItem, field, rowType }) => {
- if (rowType === "groupHeader") {
- return null;
- }
- return {dataItem[field]} ;
-};
-
-const CategoryNameCell = ({ dataItem, rowType }) => {
- if (rowType === "groupHeader") {
- return null;
- }
- return (
-
- {dataItem && dataItem.Category && dataItem.Category.CategoryName}
-
- );
-};
-
-class App extends React.PureComponent {
- state = this.createAppState({
- take: 10,
- group: [{ field: "UnitsInStock" }]
- });
-
- render() {
- return (
-
-
-
-
-
-
-
- );
- }
-
- createAppState(dataState) {
- return {
- result: process(products, dataState),
- dataState: dataState
- };
- }
-
- dataStateChange = event => {
- this.setState(this.createAppState(event.data));
- };
-
- expandChange = event => {
- event.dataItem[event.target.props.expandField] = event.value;
- this.setState({
- result: Object.assign({}, this.state.result),
- dataState: this.state.dataState
- });
- };
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/grouping-with-custom-cell/main.jsx b/docs/knowledge-base/examples/grid/grouping-with-custom-cell/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/grouping-with-custom-cell/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/ignore-diacritics/app.jsx b/docs/knowledge-base/examples/grid/ignore-diacritics/app.jsx
deleted file mode 100644
index 1f5e5f3d..00000000
--- a/docs/knowledge-base/examples/grid/ignore-diacritics/app.jsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import { filterBy } from '@progress/kendo-data-query';
-
-import { InputFilterCell } from './inputFilterCell';
-import { sampleProducts } from './shared-sample-products';
-const categories = Array.from(
- new Set(
- sampleProducts.map((p) => (p.Category ? p.Category.CategoryName : ''))
- )
-);
-
-const App = () => {
- const [data, setData] = React.useState(sampleProducts);
- const [filter, setFilter] = React.useState();
- const filterChange = (event) => {
- setData(filterBy(sampleProducts, event.filter));
- setFilter(event.filter);
- };
- return (
-
-
-
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/ignore-diacritics/inputFilterCell.jsx b/docs/knowledge-base/examples/grid/ignore-diacritics/inputFilterCell.jsx
deleted file mode 100644
index ee55e0ed..00000000
--- a/docs/knowledge-base/examples/grid/ignore-diacritics/inputFilterCell.jsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import * as React from 'react';
-import { Input } from '@progress/kendo-react-inputs';
-import { Button } from '@progress/kendo-react-buttons';
-
-export const InputFilterCell = (props) => {
- let hasValue = (value) => Boolean(value);
- const onChange = (event) => {
- hasValue = hasValue(event.target.value);
- props.onChange({
- value: hasValue
- ? event.target.value.normalize('NFD').replace(/[\u0300-\u036f]/g, '')
- : '',
- operator: hasValue ? 'contains' : '',
- syntheticEvent: event.syntheticEvent,
- });
- };
- const onClearButtonClick = (event) => {
- event.preventDefault();
- props.onChange({
- value: '',
- operator: '',
- syntheticEvent: event,
- });
- };
- return (
-
-
-
-
- );
-};
diff --git a/docs/knowledge-base/examples/grid/ignore-diacritics/main.jsx b/docs/knowledge-base/examples/grid/ignore-diacritics/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/ignore-diacritics/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/limit-numeric-filter-value/app.jsx b/docs/knowledge-base/examples/grid/limit-numeric-filter-value/app.jsx
deleted file mode 100644
index 7c8301ee..00000000
--- a/docs/knowledge-base/examples/grid/limit-numeric-filter-value/app.jsx
+++ /dev/null
@@ -1,174 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import { filterBy } from '@progress/kendo-data-query';
-import { NumericTextBox } from '@progress/kendo-react-inputs';
-
-import products from './shared-products.json';
-
-export const RangeFilterCell = (props) => {
- let minTextBox;
- let maxTextBox;
-
- const inRange = (current, { min, max }) =>
- (min === null || current >= min) && (max === null || current <= max);
-
- const onChange = (event) => {
- props.onChange({
- value: {
- min: minTextBox.value,
- max: maxTextBox.value,
- },
- operator: inRange,
- syntheticEvent: event.syntheticEvent,
- });
- };
-
- const onClearButtonClick = (event) => {
- event.preventDefault();
- props.onChange({
- value: null,
- operator: '',
- syntheticEvent: event,
- });
- };
-
- const value = props.value || null;
- return (
-
- Min:
-
- {
- minTextBox = numeric;
- }}
- onChange={onChange}
- />
-
- Max:
-
- {
- maxTextBox = numeric;
- }}
- onChange={onChange}
- />
-
-
-
-
-
- );
-};
-
-import { DropDownList } from '@progress/kendo-react-dropdowns';
-export const DropdownFilterCell = (props) => {
- let hasValue = (value) => Boolean(value && value !== props.defaultItem);
-
- const onChange = (event) => {
- hasValue = hasValue(event.target.value);
- props.onChange({
- value: hasValue ? event.target.value : '',
- operator: hasValue ? 'eq' : '',
- syntheticEvent: event.syntheticEvent,
- });
- };
-
- const onClearButtonClick = (event) => {
- event.preventDefault();
- props.onChange({
- value: '',
- operator: '',
- syntheticEvent: event,
- });
- };
-
- return (
-
-
-
-
-
-
- );
-};
-const categories = Array.from(
- new Set(
- products.map((p) => (p.Category ? p.Category.CategoryName : ''))
- )
-);
-
-const CategoryFilterCell = (props) => (
-
-);
-
-const App = () => {
- const [data, setData] = React.useState(products);
- const [filter, setFilter] = React.useState();
-
- const filterChange = (event) => {
- setData(filterBy(products, event.filter));
- setFilter(event.filter);
- };
-
- return (
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/limit-numeric-filter-value/main.jsx b/docs/knowledge-base/examples/grid/limit-numeric-filter-value/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/limit-numeric-filter-value/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/lock-row-headers/app.jsx b/docs/knowledge-base/examples/grid/lock-row-headers/app.jsx
deleted file mode 100644
index 5415844f..00000000
--- a/docs/knowledge-base/examples/grid/lock-row-headers/app.jsx
+++ /dev/null
@@ -1,66 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import { Button } from '@progress/kendo-react-buttons';
-import products from './shared-products-with-sections.json';
-import { filterBy } from '@progress/kendo-data-query';
-
-const rowHeight = 50;
-
-const App = () => {
- const [data, setData] = React.useState(products);
-
- const cellRender = (td, props) => {
- let extraProps = {};
-
- if (props.dataItem.locked) {
- (extraProps.style = {
- top: 0,
- ...props.style,
- backgroundColor: 'rgb(201 197 197)',
- fontWeight: 'bold'
- }),
- (extraProps.className = props.className + ' k-grid-row-sticky');
- }
-
- return React.cloneElement(
- td,
- { ...td.props, ...extraProps },
- td.props.children
- );
- };
-
- const collapseAll = () => {
- let onlyHeaders = filterBy(products, [{field: 'locked', operator: 'eq', value: true}]);
- setData(onlyHeaders);
- }
-
- const expandAll = () => {
- let allExpanded = filterBy(products, []);
- setData(allExpanded);
- }
-
-
- return (
-
- Collapse All
- Expand All
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/lock-row-headers/main.jsx b/docs/knowledge-base/examples/grid/lock-row-headers/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/lock-row-headers/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/merge-rows-and-cells/app.jsx b/docs/knowledge-base/examples/grid/merge-rows-and-cells/app.jsx
deleted file mode 100644
index 4d1a39e1..00000000
--- a/docs/knowledge-base/examples/grid/merge-rows-and-cells/app.jsx
+++ /dev/null
@@ -1,71 +0,0 @@
-import React, { useState } from 'react';
-import ReactDOM from 'react-dom';
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import products from './products.json';
-
-const App = () => {
- const [gridData, setGridData] = useState(products);
- const gridRef = React.useRef(null);
- const cellRender = (cell, props) => {
- const { dataItem, field } = props;
- let duplicate = false;
- if (gridRef.current) {
- const rowIndex = props.dataIndex;
- const columns = gridRef.current.columns;
- const colIndex = columns.findIndex((c) => c.field == props.field);
-
- if (colIndex > 0) {
- if (
- dataItem[columns[colIndex].field] ==
- dataItem[columns[colIndex - 1].field]
- ) {
- duplicate = true;
- }
- }
- if (rowIndex > 0) {
- if (
- dataItem[props.field] ==
- gridRef.current.props.data[rowIndex - 1][props.field]
- ) {
- duplicate = true;
- }
- }
- }
- let style = { ...cell.props.style };
- if (typeof dataItem[props.field] == 'boolean') {
- style.backgroundColor = dataItem[props.field] ? '#1fb542' : '#b51f2e';
- style.color = dataItem[props.field] ? '#1fb542' : '#b51f2e';
- style.border = 'none';
- }
-
- if (duplicate) {
- return (
-
- {' '}
-
- );
- } else {
- return ;
- }
- };
- return (
-
-
-
-
-
-
-
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/merge-rows-and-cells/main.jsx b/docs/knowledge-base/examples/grid/merge-rows-and-cells/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/merge-rows-and-cells/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/merge-rows-and-cells/products.json b/docs/knowledge-base/examples/grid/merge-rows-and-cells/products.json
deleted file mode 100644
index 4730f74a..00000000
--- a/docs/knowledge-base/examples/grid/merge-rows-and-cells/products.json
+++ /dev/null
@@ -1,143 +0,0 @@
-[
- {
- "ProductID": 1,
- "ProductName": "Chai",
- "SupplierID": 1,
- "CategoryID": 1,
- "QuantityPerUnit": "10 boxes x 20 bags",
- "UnitPrice": 18.0,
- "UnitsInStock": 39,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Discontinued2": false,
- "CategoryName": "Beverages"
- },
- {
- "ProductID": 2,
- "ProductName": "Chang",
- "SupplierID": 1,
- "CategoryID": 1,
- "QuantityPerUnit": "24 - 12 oz bottles",
- "UnitPrice": 19.0,
- "UnitsInStock": 17,
- "UnitsOnOrder": 40,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Discontinued2": false,
- "CategoryName": "Beverages"
- },
- {
- "ProductID": 3,
- "ProductName": "Aniseed Syrup",
- "SupplierID": 1,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 550 ml bottles",
- "UnitPrice": 10.0,
- "UnitsInStock": 13,
- "UnitsOnOrder": 70,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Discontinued2": true,
- "CategoryName": "Condiments"
- },
- {
- "ProductID": 4,
- "ProductName": "Chef Anton's Cajun Seasoning",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "48 - 6 oz jars",
- "UnitPrice": 22.0,
- "UnitsInStock": 53,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Discontinued2": true,
- "CategoryName": "Condiments"
- },
- {
- "ProductID": 5,
- "ProductName": "Chef Anton's Gumbo Mix",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "36 boxes",
- "UnitPrice": 21.35,
- "UnitsInStock": 0,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Discontinued2": true,
- "CategoryName": "Condiments"
- },
- {
- "ProductID": 6,
- "ProductName": "Grandma's Boysenberry Spread",
- "SupplierID": 3,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 8 oz jars",
- "UnitPrice": 25.0,
- "UnitsInStock": 120,
- "UnitsOnOrder": 0,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Discontinued2": true,
- "CategoryName": "Condiments"
- },
- {
- "ProductID": 7,
- "ProductName": "Uncle Bob's Organic Dried Pears",
- "SupplierID": 3,
- "CategoryID": 7,
- "QuantityPerUnit": "12 - 1 lb pkgs.",
- "UnitPrice": 30.0,
- "UnitsInStock": 15,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Discontinued2": false,
- "CategoryName": "Produce"
- },
- {
- "ProductID": 8,
- "ProductName": "Northwoods Cranberry Sauce",
- "SupplierID": 3,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 12 oz jars",
- "UnitPrice": 40.0,
- "UnitsInStock": 6,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Discontinued2": true,
- "CategoryName": "Condiments"
- },
- {
- "ProductID": 9,
- "ProductName": "Mishi Kobe Niku",
- "SupplierID": 4,
- "CategoryID": 6,
- "QuantityPerUnit": "18 - 500 g pkgs.",
- "UnitPrice": 97.0,
- "UnitsInStock": 29,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Discontinued2": true,
- "CategoryName": "Meat/Poultry"
- },
- {
- "ProductID": 10,
- "ProductName": "Ikura",
- "SupplierID": 4,
- "CategoryID": 8,
- "QuantityPerUnit": "12 - 200 ml jars",
- "UnitPrice": 31.0,
- "UnitsInStock": 31,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Discontinued2": false,
- "CategoryName": "Seafood"
- }
- ]
-
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/merge-rows/app.jsx b/docs/knowledge-base/examples/grid/merge-rows/app.jsx
deleted file mode 100644
index e2edb82b..00000000
--- a/docs/knowledge-base/examples/grid/merge-rows/app.jsx
+++ /dev/null
@@ -1,159 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-
-import products from './shared-products.json';
-
-const updateItem = (item) => {
- let index = products.findIndex(
- (record) => record.ProductID === item.ProductID
- );
- products[index] = item;
- return products;
-};
-
-// dummy test with even odd merged cells
-// products.forEach((p) => {
-// p.discontinuedCellRowSpan = p.ProductID % 2 !== 0 ? 2 : undefined;
-// });
-
-// merge cells with the same value in the 'Discontinued' column
-let looped = 1;
-for (let i = 0; i < products.length; i += looped) {
- let rowSpan = 1;
- looped = 1;
- for (let j = i + 1; j < products.length; j++) {
- if (products[i].Discontinued === products[j].Discontinued) {
- looped++;
- rowSpan++;
- } else {
- break;
- }
- }
-
- // add special property for the 'Discontinued' column cells rowSpan
- products[i].discontinuedCellRowSpan =
- rowSpan === 1 ? (looped === 1 ? 1 : undefined) : rowSpan;
-}
-
-class App extends React.Component {
- state = {
- gridData: products,
- };
-
- getItemIndex = (dataItem) => {
- return this.state.gridData.findIndex(
- (record) => record.ProductID === dataItem.ProductID
- );
- };
-
- hoverMergedCellByIndex = (index, hover) => {
- let currentIndex = index;
- let currentDataItem = this.state.gridData[currentIndex];
- while (!currentDataItem.discontinuedCellRowSpan) {
- currentIndex--;
- currentDataItem = this.state.gridData[currentIndex];
- }
- // add special property for the 'Discontinued' column cells hover
- currentDataItem.discontinuedClassName = hover ? 'k-hover' : undefined;
- this.update(currentDataItem);
- };
-
- updateNextItems = (index, count, hover) => {
- for (let i = index; i < index + count; i++) {
- const dataItem = this.state.gridData[i];
- dataItem.className = hover ? 'k-hover' : undefined;
- this.update(dataItem);
- }
- };
-
- handleMergedHover = (dataItem, rowSpanNumber, hover) => {
- const index = this.getItemIndex(dataItem);
- this.updateNextItems(index, rowSpanNumber, hover);
- };
-
- handleCellHover = (dataItem, hover) => {
- if (dataItem.discontinuedCellRowSpan) {
- return;
- }
- let index = this.getItemIndex(dataItem);
- this.hoverMergedCellByIndex(index, hover);
- };
-
- update = (dataItem) => {
- const gridData = updateItem(dataItem);
- this.setState({ gridData });
- };
-
- cellRender = (cell, props) => {
- const { dataItem, field } = props;
-
- if (field === 'Discontinued') {
- if (dataItem.discontinuedCellRowSpan) {
- return (
- {
- this.handleMergedHover(
- dataItem,
- dataItem.discontinuedCellRowSpan,
- true
- );
- }}
- onMouseOut={() => {
- this.handleMergedHover(
- dataItem,
- dataItem.discontinuedCellRowSpan,
- false
- );
- }}
- >
- {cell.props.children}
-
- );
- } else if (dataItem.discontinuedCellRowSpan === 1) {
- return {cell.props.children} ;
- } else {
- return null;
- }
- }
- return (
- {
- this.handleCellHover(props.dataItem, true);
- }}
- onMouseOut={() => {
- this.handleCellHover(props.dataItem, false);
- }}
- >
- {cell.props.children}
-
- );
- };
-
- render() {
- return (
-
-
-
-
-
-
-
-
-
-
- );
- }
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/merge-rows/main.jsx b/docs/knowledge-base/examples/grid/merge-rows/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/merge-rows/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/multiple-functionalities/app.jsx b/docs/knowledge-base/examples/grid/multiple-functionalities/app.jsx
deleted file mode 100644
index b7a7b399..00000000
--- a/docs/knowledge-base/examples/grid/multiple-functionalities/app.jsx
+++ /dev/null
@@ -1,120 +0,0 @@
-import * as React from "react";
-import { Grid, GridColumn as Column } from "@progress/kendo-react-grid";
-import { process } from "@progress/kendo-data-query";
-import EditForm from "./editForm.jsx";
-
-import products from "./shared-products.json";
-
-const EditCommandCell = props => {
- return (
-
- props.enterEdit(props.dataItem)}
- >
- Edit
-
-
- );
-};
-
-class App extends React.Component {
- state = {
- openForm: false,
- editItem: {},
- data: [...products],
- result: process(products, {}),
- dataState: {}
- };
-
- enterEdit = item => {
- this.setState({
- openForm: true,
- editItem: item
- });
- };
-
- handleSubmit = event => {
- const newData = this.state.data.map((item, i) => {
- if (event.ProductID === item.ProductID) {
- item = { ...event };
- }
- return item;
- });
- this.setState({
- data: newData,
- result: process(newData, this.state.dataState),
- openForm: false
- });
- };
-
- handleCancelEdit = () => {
- this.setState({ openForm: false });
- };
-
- MyEditCommandCell = props => (
-
- );
-
- render() {
- console.log(this.state.result);
-
- return (
- <>
-
-
-
-
-
-
-
-
- {this.state.openForm && (
-
- )}
- >
- );
- }
-
- dataStateChange = event => {
- this.setState({
- result: process(this.state.data, event.dataState),
- dataState: event.dataState
- });
- };
-
- expandChange = event => {
- event.dataItem[event.target.props.expandField] = event.value;
- this.setState({
- result: Object.assign({}, this.state.result),
- dataState: this.state.dataState
- });
- };
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/multiple-functionalities/editForm.jsx b/docs/knowledge-base/examples/grid/multiple-functionalities/editForm.jsx
deleted file mode 100644
index 68fb7e7f..00000000
--- a/docs/knowledge-base/examples/grid/multiple-functionalities/editForm.jsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import * as React from "react";
-import { Dialog } from "@progress/kendo-react-dialogs";
-import { Form, Field, FormElement } from "@progress/kendo-react-form";
-import { Input, NumericTextBox } from "@progress/kendo-react-inputs";
-import { DropDownList } from "@progress/kendo-react-dropdowns";
-import { Error } from "@progress/kendo-react-labels";
-import products from "./shared-products.json";
-
-const minValueValidator = value =>
- value >= 0 ? "" : "The value must be 0 or higher";
-const NonNegativeNumericInput = fieldRenderProps => {
- const { validationMessage, visited, ...others } = fieldRenderProps;
- return (
-
-
- {visited && validationMessage && {validationMessage} }
-
- );
-};
-
-const EditForm = props => {
- return (
-
-
- );
-};
-export default EditForm;
diff --git a/docs/knowledge-base/examples/grid/multiple-functionalities/main.jsx b/docs/knowledge-base/examples/grid/multiple-functionalities/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/multiple-functionalities/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/multiple-grid-export-excel/app.jsx b/docs/knowledge-base/examples/grid/multiple-grid-export-excel/app.jsx
deleted file mode 100644
index d72bad43..00000000
--- a/docs/knowledge-base/examples/grid/multiple-grid-export-excel/app.jsx
+++ /dev/null
@@ -1,66 +0,0 @@
-
-import * as React from 'react';
-
-import { Grid, GridColumn, GridToolbar } from '@progress/kendo-react-grid';
-import { ExcelExport } from '@progress/kendo-react-excel-export';
-
-import products from './shared-products.json';
-
-class App extends React.Component {
- _export;
- export = () => {
- const optionsGridOne = this._exportGridOne.workbookOptions();
- const optionsGridTwo = this._exportGridTwo.workbookOptions();
- optionsGridOne.sheets[1] = optionsGridTwo.sheets[0];
- optionsGridOne.sheets[0].title = "First Grid data"
- optionsGridOne.sheets[1].title = "Second Grid data"
- this._exportGridOne.save(optionsGridOne);
- }
- render() {
- return (
-
- { this._exportGridOne = exporter; }}
- >
-
-
-
- Export to Excel
-
-
-
-
-
-
-
- { this._exportGridTwo = exporter; }}
- >
-
-
-
- Export to Excel
-
-
-
-
-
-
-
-
- );
- }
-}
-
-export default App;
-
diff --git a/docs/knowledge-base/examples/grid/multiple-grid-export-excel/main.jsx b/docs/knowledge-base/examples/grid/multiple-grid-export-excel/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/multiple-grid-export-excel/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/multiselect-filter-cell/app.jsx b/docs/knowledge-base/examples/grid/multiselect-filter-cell/app.jsx
deleted file mode 100644
index 48a79113..00000000
--- a/docs/knowledge-base/examples/grid/multiselect-filter-cell/app.jsx
+++ /dev/null
@@ -1,60 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import { process } from '@progress/kendo-data-query';
-import products from './products.json';
-import MultiSelectFilterCell from './multiSelectFilterCell';
-
-const initialDataState = {
- sort: [
- {
- field: 'code',
- dir: 'asc',
- },
- ],
- take: 10,
- skip: 0,
-};
-
-const categories = Array.from(
- new Set(products.map((p) => p.Category.CategoryName))
-);
-
-const MyMultiSelectFilter = (props) => {
- return ;
-};
-
-const App = () => {
- const [dataState, setDataState] = React.useState(initialDataState);
- return (
- {
- setDataState(e.dataState);
- }}
- >
-
-
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/multiselect-filter-cell/main.jsx b/docs/knowledge-base/examples/grid/multiselect-filter-cell/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/multiselect-filter-cell/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/multiselect-filter-cell/multiSelectFilterCell.jsx b/docs/knowledge-base/examples/grid/multiselect-filter-cell/multiSelectFilterCell.jsx
deleted file mode 100644
index 94c45ca8..00000000
--- a/docs/knowledge-base/examples/grid/multiselect-filter-cell/multiSelectFilterCell.jsx
+++ /dev/null
@@ -1,69 +0,0 @@
-import React from 'react';
-
-import { MultiSelect } from '@progress/kendo-react-dropdowns';
-
-const hasValue = (value) => {
- return value && value.length > 0;
-};
-
-export default function MultiSelectFilterCell(props) {
- const data = [...props.data];
- data.unshift('Not Selected');
-
- const multiSelectFilterOperator = (value, current) => {
- let newValue =
- !value ||
- !value.length ||
- value.find((val) =>
- val === 'Not Selected' && current === null
- ? 'isnull'
- : value.find((val) => val === current)
- );
- return newValue;
- };
- const [stateValue, setStateValue] = React.useState(
- props.value ? [props.value] : null
- );
- React.useEffect(() => {
- console.log(stateValue);
- }, [stateValue]);
- const handleChange = (event) => {
- const value = event.target.value;
- setStateValue([...value]);
- props.onChange({
- value: event.value,
- operator: multiSelectFilterOperator.bind(undefined, value),
- syntheticEvent: event.syntheticEvent,
- });
- };
-
- const handleClearClick = (event) => {
- event.preventDefault();
- const value = event.target.value;
-
- setStateValue([]);
- props.onChange({
- value: [],
- operator: 'eq',
- syntheticEvent: event,
- });
- };
- return (
-
-
-
-
-
-
- );
-}
diff --git a/docs/knowledge-base/examples/grid/multiselect-filter-cell/products.json b/docs/knowledge-base/examples/grid/multiselect-filter-cell/products.json
deleted file mode 100644
index e9a52241..00000000
--- a/docs/knowledge-base/examples/grid/multiselect-filter-cell/products.json
+++ /dev/null
@@ -1,1233 +0,0 @@
-[{
- "ProductID" : 1,
- "ProductName" : "Chai",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "10 boxes x 20 bags",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 2,
- "ProductName" : "Chang",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 3,
- "ProductName" : "Aniseed Syrup",
- "SupplierID" : 1,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 550 ml bottles",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 13,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 4,
- "ProductName" : "Chef Anton's Cajun Seasoning",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "48 - 6 oz jars",
- "UnitPrice" : 22.0000,
- "UnitsInStock" : 53,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 5,
- "ProductName" : "Chef Anton's Gumbo Mix",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "36 boxes",
- "UnitPrice" : 21.3500,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 6,
- "ProductName" : "Grandma's Boysenberry Spread",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 8 oz jars",
- "UnitPrice" : 25.0000,
- "UnitsInStock" : 120,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 7,
- "ProductName" : "Uncle Bob's Organic Dried Pears",
- "SupplierID" : 3,
- "CategoryID" : 7,
- "QuantityPerUnit" : "12 - 1 lb pkgs.",
- "UnitPrice" : 30.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 8,
- "ProductName" : "Northwoods Cranberry Sauce",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 12 oz jars",
- "UnitPrice" : 40.0000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 9,
- "ProductName" : "Mishi Kobe Niku",
- "SupplierID" : 4,
- "CategoryID" : 6,
- "QuantityPerUnit" : "18 - 500 g pkgs.",
- "UnitPrice" : 97.0000,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 10,
- "ProductName" : "Ikura",
- "SupplierID" : 4,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 200 ml jars",
- "UnitPrice" : 31.0000,
- "UnitsInStock" : 31,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 11,
- "ProductName" : "Queso Cabrales",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "1 kg pkg.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 30,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 12,
- "ProductName" : "Queso Manchego La Pastora",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 86,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 13,
- "ProductName" : "Konbu",
- "SupplierID" : 6,
- "CategoryID" : 8,
- "QuantityPerUnit" : "2 kg box",
- "UnitPrice" : 6.0000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 14,
- "ProductName" : "Tofu",
- "SupplierID" : 6,
- "CategoryID" : 7,
- "QuantityPerUnit" : "40 - 100 g pkgs.",
- "UnitPrice" : 23.2500,
- "UnitsInStock" : 35,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 15,
- "ProductName" : "Genen Shouyu",
- "SupplierID" : 6,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 250 ml bottles",
- "UnitPrice" : 15.5000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 16,
- "ProductName" : "Pavlova",
- "SupplierID" : 7,
- "CategoryID" : 3,
- "QuantityPerUnit" : "32 - 500 g boxes",
- "UnitPrice" : 17.4500,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 17,
- "ProductName" : "Alice Mutton",
- "SupplierID" : 7,
- "CategoryID" : 6,
- "QuantityPerUnit" : "20 - 1 kg tins",
- "UnitPrice" : 39.0000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 18,
- "ProductName" : "Carnarvon Tigers",
- "SupplierID" : 7,
- "CategoryID" : 8,
- "QuantityPerUnit" : "16 kg pkg.",
- "UnitPrice" : 62.5000,
- "UnitsInStock" : 42,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 19,
- "ProductName" : "Teatime Chocolate Biscuits",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 12 pieces",
- "UnitPrice" : 9.2000,
- "UnitsInStock" : 25,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 20,
- "ProductName" : "Sir Rodney's Marmalade",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "30 gift boxes",
- "UnitPrice" : 81.0000,
- "UnitsInStock" : 40,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 21,
- "ProductName" : "Sir Rodney's Scones",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 pkgs. x 4 pieces",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 3,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 22,
- "ProductName" : "Gustaf's Knäckebröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 500 g pkgs.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 104,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 23,
- "ProductName" : "Tunnbröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "12 - 250 g pkgs.",
- "UnitPrice" : 9.0000,
- "UnitsInStock" : 61,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 24,
- "ProductName" : "Guaraná Fantástica",
- "SupplierID" : 10,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 355 ml cans",
- "UnitPrice" : 4.5000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 25,
- "ProductName" : "NuNuCa Nuß-Nougat-Creme",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "20 - 450 g glasses",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 26,
- "ProductName" : "Gumbär Gummibärchen",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 250 g bags",
- "UnitPrice" : 31.2300,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 27,
- "ProductName" : "Schoggi Schokolade",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 100 g pieces",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 49,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 28,
- "ProductName" : "Rössle Sauerkraut",
- "SupplierID" : 12,
- "CategoryID" : 7,
- "QuantityPerUnit" : "25 - 825 g cans",
- "UnitPrice" : 45.6000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 29,
- "ProductName" : "Thüringer Rostbratwurst",
- "SupplierID" : 12,
- "CategoryID" : 6,
- "QuantityPerUnit" : "50 bags x 30 sausgs.",
- "UnitPrice" : 123.7900,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 30,
- "ProductName" : "Nord-Ost Matjeshering",
- "SupplierID" : 13,
- "CategoryID" : 8,
- "QuantityPerUnit" : "10 - 200 g glasses",
- "UnitPrice" : 25.8900,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 31,
- "ProductName" : "Gorgonzola Telino",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "12 - 100 g pkgs",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 32,
- "ProductName" : "Mascarpone Fabioli",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 32.0000,
- "UnitsInStock" : 9,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 33,
- "ProductName" : "Geitost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "500 g",
- "UnitPrice" : 2.5000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 34,
- "ProductName" : "Sasquatch Ale",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 111,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 35,
- "ProductName" : "Steeleye Stout",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 36,
- "ProductName" : "Inlagd Sill",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 250 g jars",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 37,
- "ProductName" : "Gravad lax",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 500 g pkgs.",
- "UnitPrice" : 26.0000,
- "UnitsInStock" : 11,
- "UnitsOnOrder" : 50,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 38,
- "ProductName" : "Côte de Blaye",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 75 cl bottles",
- "UnitPrice" : 263.5000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 39,
- "ProductName" : "Chartreuse verte",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "750 cc per bottle",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 69,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 40,
- "ProductName" : "Boston Crab Meat",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 4 oz tins",
- "UnitPrice" : 18.4000,
- "UnitsInStock" : 123,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 41,
- "ProductName" : "Jack's New England Clam Chowder",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 12 oz cans",
- "UnitPrice" : 9.6500,
- "UnitsInStock" : 85,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 42,
- "ProductName" : "Singaporean Hokkien Fried Mee",
- "SupplierID" : 20,
- "CategoryID" : 5,
- "QuantityPerUnit" : "32 - 1 kg pkgs.",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 43,
- "ProductName" : "Ipoh Coffee",
- "SupplierID" : 20,
- "CategoryID" : 1,
- "QuantityPerUnit" : "16 - 500 g tins",
- "UnitPrice" : 46.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 44,
- "ProductName" : "Gula Malacca",
- "SupplierID" : 20,
- "CategoryID" : 2,
- "QuantityPerUnit" : "20 - 2 kg bags",
- "UnitPrice" : 19.4500,
- "UnitsInStock" : 27,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 45,
- "ProductName" : "Rogede sild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "1k pkg.",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 5,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 46,
- "ProductName" : "Spegesild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "4 - 450 g glasses",
- "UnitPrice" : 12.0000,
- "UnitsInStock" : 95,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 47,
- "ProductName" : "Zaanse koeken",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 - 4 oz boxes",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 48,
- "ProductName" : "Chocolade",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 pkgs.",
- "UnitPrice" : 12.7500,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 49,
- "ProductName" : "Maxilaku",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 - 50 g pkgs.",
- "UnitPrice" : 20.0000,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 60,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 50,
- "ProductName" : "Valkoinen suklaa",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "12 - 100 g bars",
- "UnitPrice" : 16.2500,
- "UnitsInStock" : 65,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 51,
- "ProductName" : "Manjimup Dried Apples",
- "SupplierID" : 24,
- "CategoryID" : 7,
- "QuantityPerUnit" : "50 - 300 g pkgs.",
- "UnitPrice" : 53.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 52,
- "ProductName" : "Filo Mix",
- "SupplierID" : 24,
- "CategoryID" : 5,
- "QuantityPerUnit" : "16 - 2 kg boxes",
- "UnitPrice" : 7.0000,
- "UnitsInStock" : 38,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 53,
- "ProductName" : "Perth Pasties",
- "SupplierID" : 24,
- "CategoryID" : 6,
- "QuantityPerUnit" : "48 pieces",
- "UnitPrice" : 32.8000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 54,
- "ProductName" : "Tourtière",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "16 pies",
- "UnitPrice" : 7.4500,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 55,
- "ProductName" : "Pâté chinois",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "24 boxes x 2 pies",
- "UnitPrice" : 24.0000,
- "UnitsInStock" : 115,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 56,
- "ProductName" : "Gnocchi di nonna Alice",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 57,
- "ProductName" : "Ravioli Angelo",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 19.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 58,
- "ProductName" : "Escargots de Bourgogne",
- "SupplierID" : 27,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 pieces",
- "UnitPrice" : 13.2500,
- "UnitsInStock" : 62,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 59,
- "ProductName" : "Raclette Courdavault",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 55.0000,
- "UnitsInStock" : 79,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 60,
- "ProductName" : "Camembert Pierrot",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "15 - 300 g rounds",
- "UnitPrice" : 34.0000,
- "UnitsInStock" : 19,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 61,
- "ProductName" : "Sirop d'érable",
- "SupplierID" : 29,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 500 ml bottles",
- "UnitPrice" : 28.5000,
- "UnitsInStock" : 113,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 62,
- "ProductName" : "Tarte au sucre",
- "SupplierID" : 29,
- "CategoryID" : 3,
- "QuantityPerUnit" : "48 pies",
- "UnitPrice" : 49.3000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 63,
- "ProductName" : "Vegie-spread",
- "SupplierID" : 7,
- "CategoryID" : 2,
- "QuantityPerUnit" : "15 - 625 g jars",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 64,
- "ProductName" : "Wimmers gute Semmelknödel",
- "SupplierID" : 12,
- "CategoryID" : 5,
- "QuantityPerUnit" : "20 bags x 4 pieces",
- "UnitPrice" : 33.2500,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 80,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 65,
- "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "32 - 8 oz bottles",
- "UnitPrice" : 21.0500,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 66,
- "ProductName" : "Louisiana Hot Spiced Okra",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 8 oz jars",
- "UnitPrice" : 17.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 100,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 67,
- "ProductName" : "Laughing Lumberjack Lager",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 52,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 68,
- "ProductName" : "Scottish Longbreads",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 8 pieces",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 69,
- "ProductName" : "Gudbrandsdalsost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 kg pkg.",
- "UnitPrice" : 36.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 70,
- "ProductName" : "Outback Lager",
- "SupplierID" : 7,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 355 ml bottles",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 71,
- "ProductName" : "Flotemysost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 21.5000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 72,
- "ProductName" : "Mozzarella di Giovanni",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 34.8000,
- "UnitsInStock" : 14,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 73,
- "ProductName" : "Röd Kaviar",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 150 g jars",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 101,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 74,
- "ProductName" : "Longlife Tofu",
- "SupplierID" : 4,
- "CategoryID" : 7,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 20,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 75,
- "ProductName" : "Rhönbräu Klosterbier",
- "SupplierID" : 12,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 0.5 l bottles",
- "UnitPrice" : 7.7500,
- "UnitsInStock" : 125,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 76,
- "ProductName" : "Lakkalikööri",
- "SupplierID" : 23,
- "CategoryID" : 1,
- "QuantityPerUnit" : "500 ml",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 57,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 77,
- "ProductName" : "Original Frankfurter grüne Soße",
- "SupplierID" : 12,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 boxes",
- "UnitPrice" : 13.0000,
- "UnitsInStock" : 32,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}]
diff --git a/docs/knowledge-base/examples/grid/odata-server-operations/app.jsx b/docs/knowledge-base/examples/grid/odata-server-operations/app.jsx
deleted file mode 100644
index 9fde1dfd..00000000
--- a/docs/knowledge-base/examples/grid/odata-server-operations/app.jsx
+++ /dev/null
@@ -1,56 +0,0 @@
-import * as React from 'react';
-
-
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import { ProductsLoader } from './shared-products-loader.jsx';
-
-class App extends React.Component {
- constructor(props) {
- super(props);
- this.state = {
- products: { data: [], total: 0 },
- dataState: { take: 10, skip: 0 }
- };
- }
-
- dataStateChange = (e) => {
- this.setState({
- ...this.state,
- dataState: e.dataState
- });
- }
-
- dataReceived = (products) => {
- this.setState({
- ...this.state,
- products: products
- });
- }
-
- render() {
- return (
-
- );
- }
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/odata-server-operations/main.jsx b/docs/knowledge-base/examples/grid/odata-server-operations/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/odata-server-operations/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/paste-from-excel/app.jsx b/docs/knowledge-base/examples/grid/paste-from-excel/app.jsx
deleted file mode 100644
index e4b96b02..00000000
--- a/docs/knowledge-base/examples/grid/paste-from-excel/app.jsx
+++ /dev/null
@@ -1,69 +0,0 @@
-import * as React from "react";
-import * as ReactDOM from "react-dom";
-import { Grid, GridColumn as Column } from "@progress/kendo-react-grid";
-
-class App extends React.Component {
- state = {
- data: []
- };
-
- handlePaste = e => {
- if (e.target.tagName && e.target.tagName.match(/(input|textarea)/i)) {
- // Do not handle past when an input element is currently focused
- return;
- }
-
- // Get clipboard data as text
- const data = e.clipboardData.getData("text");
-
- // Simplified parsing of the TSV data with hard-coded columns
- const rows = data.split("\n");
- const result = rows.map(row => {
- const cells = row.split("\t");
- return {
- ProductID: cells[0],
- ProductName: cells[1],
- Category: { CategoryName: cells[2] },
- UnitPrice: cells[3],
- UnitsInStock: cells[4]
- };
- });
- this.setState({
- data: result
- });
- };
-
- render() {
- return (
- <>
-
-
- Select the sample TSV snippet below:
-
- {`1 Chai Beverages 18 39
-2 Chang Beverages 19 17
-3 Aniseed Syrup Condiments 10 13
-4 Chef Anton's Cajun Seasoning Condiments 22 53
-5 Chef Anton's Gumbo Mix Condiments 21.35 0
-6 Grandma's Boysenberry Spread Condiments 25 120
-7 Uncle Bob's Organic Dried Pears Produce 30 15
-`}
-
-
- Click on the Grid and paste it with Ctrl+V or ⌘+V
-
-
-
-
-
-
-
-
-
-
- >
- );
- }
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/paste-from-excel/main.jsx b/docs/knowledge-base/examples/grid/paste-from-excel/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/paste-from-excel/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/remove-select-all/app.jsx b/docs/knowledge-base/examples/grid/remove-select-all/app.jsx
deleted file mode 100644
index 271701f4..00000000
--- a/docs/knowledge-base/examples/grid/remove-select-all/app.jsx
+++ /dev/null
@@ -1,79 +0,0 @@
-import * as React from 'react';
-
-import {
- Grid,
- GridColumn as Column,
- getSelectedState,
-} from '@progress/kendo-react-grid';
-import { getter } from '@progress/kendo-react-common';
-import products from './products.json';
-const DATA_ITEM_KEY = 'ProductID';
-const SELECTED_FIELD = 'selected';
-const idGetter = getter(DATA_ITEM_KEY);
-
-const App = () => {
- const [dataState, setDataState] = React.useState(
- products.map((dataItem) =>
- Object.assign(
- {
- selected: false,
- },
- dataItem
- )
- )
- );
- const [selectedState, setSelectedState] = React.useState({});
- const onSelectionChange = React.useCallback(
- (event) => {
- const newSelectedState = getSelectedState({
- event,
- selectedState: selectedState,
- dataItemKey: DATA_ITEM_KEY,
- });
- setSelectedState(newSelectedState);
- },
- [selectedState]
- );
-
-
- const headerCellRender = (td, props) => {
- if (props.field == SELECTED_FIELD) {
- return ;
- }
- return td;
- };
- return (
-
- ({
- ...item,
- [SELECTED_FIELD]: selectedState[idGetter(item)],
- }))}
- style={{
- height: '400px',
- }}
- headerCellRender={headerCellRender}
- dataItemKey={DATA_ITEM_KEY}
- selectedField={SELECTED_FIELD}
- selectable={{
- enabled: true,
- drag: false,
- cell: false,
- mode: 'multiple',
- }}
- onSelectionChange={onSelectionChange}
- >
-
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/remove-select-all/main.jsx b/docs/knowledge-base/examples/grid/remove-select-all/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/remove-select-all/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/remove-select-all/products.json b/docs/knowledge-base/examples/grid/remove-select-all/products.json
deleted file mode 100644
index 4df1c408..00000000
--- a/docs/knowledge-base/examples/grid/remove-select-all/products.json
+++ /dev/null
@@ -1,1233 +0,0 @@
-[{
- "ProductID" : 1,
- "ProductName" : "Chai",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "10 boxes x 20 bags",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 2,
- "ProductName" : "Chang",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 3,
- "ProductName" : "Aniseed Syrup",
- "SupplierID" : 1,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 550 ml bottles",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 13,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 4,
- "ProductName" : "Chef Anton's Cajun Seasoning",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "48 - 6 oz jars",
- "UnitPrice" : 22.0000,
- "UnitsInStock" : 53,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 5,
- "ProductName" : "Chef Anton's Gumbo Mix",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "36 boxes",
- "UnitPrice" : 21.3500,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 6,
- "ProductName" : "Grandma's Boysenberry Spread",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 8 oz jars",
- "UnitPrice" : 25.0000,
- "UnitsInStock" : 120,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 7,
- "ProductName" : "Uncle Bob's Organic Dried Pears",
- "SupplierID" : 3,
- "CategoryID" : 7,
- "QuantityPerUnit" : "12 - 1 lb pkgs.",
- "UnitPrice" : 30.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 8,
- "ProductName" : "Northwoods Cranberry Sauce",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 12 oz jars",
- "UnitPrice" : 40.0000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 9,
- "ProductName" : "Mishi Kobe Niku",
- "SupplierID" : 4,
- "CategoryID" : 6,
- "QuantityPerUnit" : "18 - 500 g pkgs.",
- "UnitPrice" : 97.0000,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 10,
- "ProductName" : "Ikura",
- "SupplierID" : 4,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 200 ml jars",
- "UnitPrice" : 31.0000,
- "UnitsInStock" : 31,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 11,
- "ProductName" : "Queso Cabrales",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "1 kg pkg.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 30,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 12,
- "ProductName" : "Queso Manchego La Pastora",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 86,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 13,
- "ProductName" : "Konbu",
- "SupplierID" : 6,
- "CategoryID" : 8,
- "QuantityPerUnit" : "2 kg box",
- "UnitPrice" : 6.0000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 14,
- "ProductName" : "Tofu",
- "SupplierID" : 6,
- "CategoryID" : 7,
- "QuantityPerUnit" : "40 - 100 g pkgs.",
- "UnitPrice" : 23.2500,
- "UnitsInStock" : 35,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 15,
- "ProductName" : "Genen Shouyu",
- "SupplierID" : 6,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 250 ml bottles",
- "UnitPrice" : 15.5000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 16,
- "ProductName" : "Pavlova",
- "SupplierID" : 7,
- "CategoryID" : 3,
- "QuantityPerUnit" : "32 - 500 g boxes",
- "UnitPrice" : 17.4500,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 17,
- "ProductName" : "Alice Mutton",
- "SupplierID" : 7,
- "CategoryID" : 6,
- "QuantityPerUnit" : "20 - 1 kg tins",
- "UnitPrice" : 39.0000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 18,
- "ProductName" : "Carnarvon Tigers",
- "SupplierID" : 7,
- "CategoryID" : 8,
- "QuantityPerUnit" : "16 kg pkg.",
- "UnitPrice" : 62.5000,
- "UnitsInStock" : 42,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 19,
- "ProductName" : "Teatime Chocolate Biscuits",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 12 pieces",
- "UnitPrice" : 9.2000,
- "UnitsInStock" : 25,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 20,
- "ProductName" : "Sir Rodney's Marmalade",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "30 gift boxes",
- "UnitPrice" : 81.0000,
- "UnitsInStock" : 40,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 21,
- "ProductName" : "Sir Rodney's Scones",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 pkgs. x 4 pieces",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 3,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 22,
- "ProductName" : "Gustaf's Knäckebröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 500 g pkgs.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 104,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 23,
- "ProductName" : "Tunnbröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "12 - 250 g pkgs.",
- "UnitPrice" : 9.0000,
- "UnitsInStock" : 61,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 24,
- "ProductName" : "Guaraná Fantástica",
- "SupplierID" : 10,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 355 ml cans",
- "UnitPrice" : 4.5000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 25,
- "ProductName" : "NuNuCa Nuß-Nougat-Creme",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "20 - 450 g glasses",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 26,
- "ProductName" : "Gumbär Gummibärchen",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 250 g bags",
- "UnitPrice" : 31.2300,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 27,
- "ProductName" : "Schoggi Schokolade",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 100 g pieces",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 49,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 28,
- "ProductName" : "Rössle Sauerkraut",
- "SupplierID" : 12,
- "CategoryID" : 7,
- "QuantityPerUnit" : "25 - 825 g cans",
- "UnitPrice" : 45.6000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 29,
- "ProductName" : "Thüringer Rostbratwurst",
- "SupplierID" : 12,
- "CategoryID" : 6,
- "QuantityPerUnit" : "50 bags x 30 sausgs.",
- "UnitPrice" : 123.7900,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 30,
- "ProductName" : "Nord-Ost Matjeshering",
- "SupplierID" : 13,
- "CategoryID" : 8,
- "QuantityPerUnit" : "10 - 200 g glasses",
- "UnitPrice" : 25.8900,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 31,
- "ProductName" : "Gorgonzola Telino",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "12 - 100 g pkgs",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 32,
- "ProductName" : "Mascarpone Fabioli",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 32.0000,
- "UnitsInStock" : 9,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 33,
- "ProductName" : "Geitost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "500 g",
- "UnitPrice" : 2.5000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 34,
- "ProductName" : "Sasquatch Ale",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 111,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 35,
- "ProductName" : "Steeleye Stout",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 36,
- "ProductName" : "Inlagd Sill",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 250 g jars",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 37,
- "ProductName" : "Gravad lax",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 500 g pkgs.",
- "UnitPrice" : 26.0000,
- "UnitsInStock" : 11,
- "UnitsOnOrder" : 50,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 38,
- "ProductName" : "Côte de Blaye",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 75 cl bottles",
- "UnitPrice" : 263.5000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 39,
- "ProductName" : "Chartreuse verte",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "750 cc per bottle",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 69,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 40,
- "ProductName" : "Boston Crab Meat",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 4 oz tins",
- "UnitPrice" : 18.4000,
- "UnitsInStock" : 123,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 41,
- "ProductName" : "Jack's New England Clam Chowder",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 12 oz cans",
- "UnitPrice" : 9.6500,
- "UnitsInStock" : 85,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 42,
- "ProductName" : "Singaporean Hokkien Fried Mee",
- "SupplierID" : 20,
- "CategoryID" : 5,
- "QuantityPerUnit" : "32 - 1 kg pkgs.",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 43,
- "ProductName" : "Ipoh Coffee",
- "SupplierID" : 20,
- "CategoryID" : 1,
- "QuantityPerUnit" : "16 - 500 g tins",
- "UnitPrice" : 46.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 44,
- "ProductName" : "Gula Malacca",
- "SupplierID" : 20,
- "CategoryID" : 2,
- "QuantityPerUnit" : "20 - 2 kg bags",
- "UnitPrice" : 19.4500,
- "UnitsInStock" : 27,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 45,
- "ProductName" : "Rogede sild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "1k pkg.",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 5,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 46,
- "ProductName" : "Spegesild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "4 - 450 g glasses",
- "UnitPrice" : 12.0000,
- "UnitsInStock" : 95,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 47,
- "ProductName" : "Zaanse koeken",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 - 4 oz boxes",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 48,
- "ProductName" : "Chocolade",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 pkgs.",
- "UnitPrice" : 12.7500,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 49,
- "ProductName" : "Maxilaku",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 - 50 g pkgs.",
- "UnitPrice" : 20.0000,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 60,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 50,
- "ProductName" : "Valkoinen suklaa",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "12 - 100 g bars",
- "UnitPrice" : 16.2500,
- "UnitsInStock" : 65,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 51,
- "ProductName" : "Manjimup Dried Apples",
- "SupplierID" : 24,
- "CategoryID" : 7,
- "QuantityPerUnit" : "50 - 300 g pkgs.",
- "UnitPrice" : 53.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 52,
- "ProductName" : "Filo Mix",
- "SupplierID" : 24,
- "CategoryID" : 5,
- "QuantityPerUnit" : "16 - 2 kg boxes",
- "UnitPrice" : 7.0000,
- "UnitsInStock" : 38,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 53,
- "ProductName" : "Perth Pasties",
- "SupplierID" : 24,
- "CategoryID" : 6,
- "QuantityPerUnit" : "48 pieces",
- "UnitPrice" : 32.8000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 54,
- "ProductName" : "Tourtière",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "16 pies",
- "UnitPrice" : 7.4500,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 55,
- "ProductName" : "Pâté chinois",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "24 boxes x 2 pies",
- "UnitPrice" : 24.0000,
- "UnitsInStock" : 115,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 56,
- "ProductName" : "Gnocchi di nonna Alice",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 57,
- "ProductName" : "Ravioli Angelo",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 19.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 58,
- "ProductName" : "Escargots de Bourgogne",
- "SupplierID" : 27,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 pieces",
- "UnitPrice" : 13.2500,
- "UnitsInStock" : 62,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 59,
- "ProductName" : "Raclette Courdavault",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 55.0000,
- "UnitsInStock" : 79,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 60,
- "ProductName" : "Camembert Pierrot",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "15 - 300 g rounds",
- "UnitPrice" : 34.0000,
- "UnitsInStock" : 19,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 61,
- "ProductName" : "Sirop d'érable",
- "SupplierID" : 29,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 500 ml bottles",
- "UnitPrice" : 28.5000,
- "UnitsInStock" : 113,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 62,
- "ProductName" : "Tarte au sucre",
- "SupplierID" : 29,
- "CategoryID" : 3,
- "QuantityPerUnit" : "48 pies",
- "UnitPrice" : 49.3000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 63,
- "ProductName" : "Vegie-spread",
- "SupplierID" : 7,
- "CategoryID" : 2,
- "QuantityPerUnit" : "15 - 625 g jars",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 64,
- "ProductName" : "Wimmers gute Semmelknödel",
- "SupplierID" : 12,
- "CategoryID" : 5,
- "QuantityPerUnit" : "20 bags x 4 pieces",
- "UnitPrice" : 33.2500,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 80,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 65,
- "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "32 - 8 oz bottles",
- "UnitPrice" : 21.0500,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 66,
- "ProductName" : "Louisiana Hot Spiced Okra",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 8 oz jars",
- "UnitPrice" : 17.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 100,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 67,
- "ProductName" : "Laughing Lumberjack Lager",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 52,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 68,
- "ProductName" : "Scottish Longbreads",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 8 pieces",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 69,
- "ProductName" : "Gudbrandsdalsost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 kg pkg.",
- "UnitPrice" : 36.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 70,
- "ProductName" : "Outback Lager",
- "SupplierID" : 7,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 355 ml bottles",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 71,
- "ProductName" : "Flotemysost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 21.5000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 72,
- "ProductName" : "Mozzarella di Giovanni",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 34.8000,
- "UnitsInStock" : 14,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 73,
- "ProductName" : "Röd Kaviar",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 150 g jars",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 101,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 74,
- "ProductName" : "Longlife Tofu",
- "SupplierID" : 4,
- "CategoryID" : 7,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 20,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 75,
- "ProductName" : "Rhönbräu Klosterbier",
- "SupplierID" : 12,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 0.5 l bottles",
- "UnitPrice" : 7.7500,
- "UnitsInStock" : 125,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 76,
- "ProductName" : "Lakkalikööri",
- "SupplierID" : 23,
- "CategoryID" : 1,
- "QuantityPerUnit" : "500 ml",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 57,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 77,
- "ProductName" : "Original Frankfurter grüne Soße",
- "SupplierID" : 12,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 boxes",
- "UnitPrice" : 13.0000,
- "UnitsInStock" : 32,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}]
diff --git a/docs/knowledge-base/examples/grid/save-scroll-position-in-tabstrip/app.jsx b/docs/knowledge-base/examples/grid/save-scroll-position-in-tabstrip/app.jsx
deleted file mode 100644
index 02d19dd0..00000000
--- a/docs/knowledge-base/examples/grid/save-scroll-position-in-tabstrip/app.jsx
+++ /dev/null
@@ -1,100 +0,0 @@
-import * as React from 'react';
-
-import { TabStrip, TabStripTab } from '@progress/kendo-react-layout';
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import products from './products.json';
-
-const App = () => {
- const [selected, setSelected] = React.useState(1);
- const [gridScrollPosition, setGridScrollPosition] = React.useState(0);
- const ROW_HEIGHT = 40;
- const handleSelect = (e) => {
- setSelected(e.selected);
- };
- const onGridScroll = (ev) => {
- setGridScrollPosition(ev.nativeEvent.target.scrollTop);
- };
- const gridRef = React.useRef();
- React.useEffect(() => {
- if (gridRef != undefined) {
- let rowIndex = Math.round(gridScrollPosition / ROW_HEIGHT);
- gridRef.current.scrollIntoView({ rowIndex: rowIndex });
- }
- }, [selected]);
- return (
-
-
-
-
- Paris is the capital and most populous city of France. It has an
- area of 105 square kilometres (41 square miles) and a population in
- 2013 of 2,229,621 within its administrative limits. The city is both
- a commune and department, and forms the centre and headquarters of
- the Île-de-France, or Paris Region, which has an area of 12,012
- square kilometres (4,638 square miles) and a population in 2014 of
- 12,005,077, comprising 18.2 percent of the population of France.
-
-
-
-
-
-
-
-
-
-
-
- (
-
-
-
- )}
- />
-
-
-
-
-
-
- Tallinn is the capital and largest city of Estonia. It is situated
- on the northern coast of the country, on the shore of the Gulf of
- Finland, 80 km (50 mi) south of Helsinki, east of Stockholm and west
- of Saint Petersburg. From the 13th century until 1918 (and briefly
- during the Nazi occupation of Estonia from 1941 to 1944), the city
- was known as Reval. Tallinn occupies an area of 159.2 km2 (61.5 sq
- mi) and has a population of 443,894. Approximately 32% of Estonia's
- total population lives in Tallinn.
-
-
- Tallinn was founded in 1248, but the earliest human settlements are
- over 5,000 years old, making it one of the oldest capital cities of
- Northern Europe. Due to its strategic location, the city became a
- major trade hub, especially from the 14th to the 16th century, when
- it grew in importance as part of the Hanseatic League.
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/save-scroll-position-in-tabstrip/main.jsx b/docs/knowledge-base/examples/grid/save-scroll-position-in-tabstrip/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/save-scroll-position-in-tabstrip/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/save-scroll-position-in-tabstrip/products.json b/docs/knowledge-base/examples/grid/save-scroll-position-in-tabstrip/products.json
deleted file mode 100644
index 15590fda..00000000
--- a/docs/knowledge-base/examples/grid/save-scroll-position-in-tabstrip/products.json
+++ /dev/null
@@ -1,1233 +0,0 @@
-[{
- "ProductID" : 1,
- "ProductName" : "Chai",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "10 boxes x 20 bags",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 2,
- "ProductName" : "Chang",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 3,
- "ProductName" : "Aniseed Syrup",
- "SupplierID" : 1,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 550 ml bottles",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 13,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 4,
- "ProductName" : "Chef Anton's Cajun Seasoning",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "48 - 6 oz jars",
- "UnitPrice" : 22.0000,
- "UnitsInStock" : 53,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 5,
- "ProductName" : "Chef Anton's Gumbo Mix",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "36 boxes",
- "UnitPrice" : 21.3500,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 6,
- "ProductName" : "Grandma's Boysenberry Spread",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 8 oz jars",
- "UnitPrice" : 25.0000,
- "UnitsInStock" : 120,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 7,
- "ProductName" : "Uncle Bob's Organic Dried Pears",
- "SupplierID" : 3,
- "CategoryID" : 7,
- "QuantityPerUnit" : "12 - 1 lb pkgs.",
- "UnitPrice" : 30.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 8,
- "ProductName" : "Northwoods Cranberry Sauce",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 12 oz jars",
- "UnitPrice" : 40.0000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 9,
- "ProductName" : "Mishi Kobe Niku",
- "SupplierID" : 4,
- "CategoryID" : 6,
- "QuantityPerUnit" : "18 - 500 g pkgs.",
- "UnitPrice" : 97.0000,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 10,
- "ProductName" : "Ikura",
- "SupplierID" : 4,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 200 ml jars",
- "UnitPrice" : 31.0000,
- "UnitsInStock" : 31,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 11,
- "ProductName" : "Queso Cabrales",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "1 kg pkg.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 30,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 12,
- "ProductName" : "Queso Manchego La Pastora",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 86,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 13,
- "ProductName" : "Konbu",
- "SupplierID" : 6,
- "CategoryID" : 8,
- "QuantityPerUnit" : "2 kg box",
- "UnitPrice" : 6.0000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 14,
- "ProductName" : "Tofu",
- "SupplierID" : 6,
- "CategoryID" : 7,
- "QuantityPerUnit" : "40 - 100 g pkgs.",
- "UnitPrice" : 23.2500,
- "UnitsInStock" : 35,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 15,
- "ProductName" : "Genen Shouyu",
- "SupplierID" : 6,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 250 ml bottles",
- "UnitPrice" : 15.5000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 16,
- "ProductName" : "Pavlova",
- "SupplierID" : 7,
- "CategoryID" : 3,
- "QuantityPerUnit" : "32 - 500 g boxes",
- "UnitPrice" : 17.4500,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 17,
- "ProductName" : "Alice Mutton",
- "SupplierID" : 7,
- "CategoryID" : 6,
- "QuantityPerUnit" : "20 - 1 kg tins",
- "UnitPrice" : 39.0000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 18,
- "ProductName" : "Carnarvon Tigers",
- "SupplierID" : 7,
- "CategoryID" : 8,
- "QuantityPerUnit" : "16 kg pkg.",
- "UnitPrice" : 62.5000,
- "UnitsInStock" : 42,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 19,
- "ProductName" : "Teatime Chocolate Biscuits",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 12 pieces",
- "UnitPrice" : 9.2000,
- "UnitsInStock" : 25,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 20,
- "ProductName" : "Sir Rodney's Marmalade",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "30 gift boxes",
- "UnitPrice" : 81.0000,
- "UnitsInStock" : 40,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 21,
- "ProductName" : "Sir Rodney's Scones",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 pkgs. x 4 pieces",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 3,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 22,
- "ProductName" : "Gustaf's Knäckebröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 500 g pkgs.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 104,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 23,
- "ProductName" : "Tunnbröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "12 - 250 g pkgs.",
- "UnitPrice" : 9.0000,
- "UnitsInStock" : 61,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 24,
- "ProductName" : "Guaraná Fantástica",
- "SupplierID" : 10,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 355 ml cans",
- "UnitPrice" : 4.5000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 25,
- "ProductName" : "NuNuCa Nuß-Nougat-Creme",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "20 - 450 g glasses",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 26,
- "ProductName" : "Gumbär Gummibärchen",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 250 g bags",
- "UnitPrice" : 31.2300,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 27,
- "ProductName" : "Schoggi Schokolade",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 100 g pieces",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 49,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 28,
- "ProductName" : "Rössle Sauerkraut",
- "SupplierID" : 12,
- "CategoryID" : 7,
- "QuantityPerUnit" : "25 - 825 g cans",
- "UnitPrice" : 45.6000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 29,
- "ProductName" : "Thüringer Rostbratwurst",
- "SupplierID" : 12,
- "CategoryID" : 6,
- "QuantityPerUnit" : "50 bags x 30 sausgs.",
- "UnitPrice" : 123.7900,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 30,
- "ProductName" : "Nord-Ost Matjeshering",
- "SupplierID" : 13,
- "CategoryID" : 8,
- "QuantityPerUnit" : "10 - 200 g glasses",
- "UnitPrice" : 25.8900,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 31,
- "ProductName" : "Gorgonzola Telino",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "12 - 100 g pkgs",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 32,
- "ProductName" : "Mascarpone Fabioli",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 32.0000,
- "UnitsInStock" : 9,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 33,
- "ProductName" : "Geitost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "500 g",
- "UnitPrice" : 2.5000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 34,
- "ProductName" : "Sasquatch Ale",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 111,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 35,
- "ProductName" : "Steeleye Stout",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 36,
- "ProductName" : "Inlagd Sill",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 250 g jars",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 37,
- "ProductName" : "Gravad lax",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 500 g pkgs.",
- "UnitPrice" : 26.0000,
- "UnitsInStock" : 11,
- "UnitsOnOrder" : 50,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 38,
- "ProductName" : "Côte de Blaye",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 75 cl bottles",
- "UnitPrice" : 263.5000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 39,
- "ProductName" : "Chartreuse verte",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "750 cc per bottle",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 69,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 40,
- "ProductName" : "Boston Crab Meat",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 4 oz tins",
- "UnitPrice" : 18.4000,
- "UnitsInStock" : 123,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 41,
- "ProductName" : "Jack's New England Clam Chowder",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 12 oz cans",
- "UnitPrice" : 9.6500,
- "UnitsInStock" : 85,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 42,
- "ProductName" : "Singaporean Hokkien Fried Mee",
- "SupplierID" : 20,
- "CategoryID" : 5,
- "QuantityPerUnit" : "32 - 1 kg pkgs.",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 43,
- "ProductName" : "Ipoh Coffee",
- "SupplierID" : 20,
- "CategoryID" : 1,
- "QuantityPerUnit" : "16 - 500 g tins",
- "UnitPrice" : 46.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 44,
- "ProductName" : "Gula Malacca",
- "SupplierID" : 20,
- "CategoryID" : 2,
- "QuantityPerUnit" : "20 - 2 kg bags",
- "UnitPrice" : 19.4500,
- "UnitsInStock" : 27,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 45,
- "ProductName" : "Rogede sild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "1k pkg.",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 5,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 46,
- "ProductName" : "Spegesild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "4 - 450 g glasses",
- "UnitPrice" : 12.0000,
- "UnitsInStock" : 95,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 47,
- "ProductName" : "Zaanse koeken",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 - 4 oz boxes",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 48,
- "ProductName" : "Chocolade",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 pkgs.",
- "UnitPrice" : 12.7500,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 49,
- "ProductName" : "Maxilaku",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 - 50 g pkgs.",
- "UnitPrice" : 20.0000,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 60,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 50,
- "ProductName" : "Valkoinen suklaa",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "12 - 100 g bars",
- "UnitPrice" : 16.2500,
- "UnitsInStock" : 65,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 51,
- "ProductName" : "Manjimup Dried Apples",
- "SupplierID" : 24,
- "CategoryID" : 7,
- "QuantityPerUnit" : "50 - 300 g pkgs.",
- "UnitPrice" : 53.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 52,
- "ProductName" : "Filo Mix",
- "SupplierID" : 24,
- "CategoryID" : 5,
- "QuantityPerUnit" : "16 - 2 kg boxes",
- "UnitPrice" : 7.0000,
- "UnitsInStock" : 38,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 53,
- "ProductName" : "Perth Pasties",
- "SupplierID" : 24,
- "CategoryID" : 6,
- "QuantityPerUnit" : "48 pieces",
- "UnitPrice" : 32.8000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 54,
- "ProductName" : "Tourtière",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "16 pies",
- "UnitPrice" : 7.4500,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 55,
- "ProductName" : "Pâté chinois",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "24 boxes x 2 pies",
- "UnitPrice" : 24.0000,
- "UnitsInStock" : 115,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 56,
- "ProductName" : "Gnocchi di nonna Alice",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 57,
- "ProductName" : "Ravioli Angelo",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 19.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 58,
- "ProductName" : "Escargots de Bourgogne",
- "SupplierID" : 27,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 pieces",
- "UnitPrice" : 13.2500,
- "UnitsInStock" : 62,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 59,
- "ProductName" : "Raclette Courdavault",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 55.0000,
- "UnitsInStock" : 79,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 60,
- "ProductName" : "Camembert Pierrot",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "15 - 300 g rounds",
- "UnitPrice" : 34.0000,
- "UnitsInStock" : 19,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 61,
- "ProductName" : "Sirop d'érable",
- "SupplierID" : 29,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 500 ml bottles",
- "UnitPrice" : 28.5000,
- "UnitsInStock" : 113,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 62,
- "ProductName" : "Tarte au sucre",
- "SupplierID" : 29,
- "CategoryID" : 3,
- "QuantityPerUnit" : "48 pies",
- "UnitPrice" : 49.3000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 63,
- "ProductName" : "Vegie-spread",
- "SupplierID" : 7,
- "CategoryID" : 2,
- "QuantityPerUnit" : "15 - 625 g jars",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 64,
- "ProductName" : "Wimmers gute Semmelknödel",
- "SupplierID" : 12,
- "CategoryID" : 5,
- "QuantityPerUnit" : "20 bags x 4 pieces",
- "UnitPrice" : 33.2500,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 80,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 65,
- "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "32 - 8 oz bottles",
- "UnitPrice" : 21.0500,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 66,
- "ProductName" : "Louisiana Hot Spiced Okra",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 8 oz jars",
- "UnitPrice" : 17.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 100,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 67,
- "ProductName" : "Laughing Lumberjack Lager",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 52,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 68,
- "ProductName" : "Scottish Longbreads",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 8 pieces",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 69,
- "ProductName" : "Gudbrandsdalsost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 kg pkg.",
- "UnitPrice" : 36.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 70,
- "ProductName" : "Outback Lager",
- "SupplierID" : 7,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 355 ml bottles",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 71,
- "ProductName" : "Flotemysost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 21.5000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 72,
- "ProductName" : "Mozzarella di Giovanni",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 34.8000,
- "UnitsInStock" : 14,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 73,
- "ProductName" : "Röd Kaviar",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 150 g jars",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 101,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 74,
- "ProductName" : "Longlife Tofu",
- "SupplierID" : 4,
- "CategoryID" : 7,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 20,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 75,
- "ProductName" : "Rhönbräu Klosterbier",
- "SupplierID" : 12,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 0.5 l bottles",
- "UnitPrice" : 7.7500,
- "UnitsInStock" : 125,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 76,
- "ProductName" : "Lakkalikööri",
- "SupplierID" : 23,
- "CategoryID" : 1,
- "QuantityPerUnit" : "500 ml",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 57,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 77,
- "ProductName" : "Original Frankfurter grüne Soße",
- "SupplierID" : 12,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 boxes",
- "UnitPrice" : 13.0000,
- "UnitsInStock" : 32,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}]
diff --git a/docs/knowledge-base/examples/grid/show-hide-columns/app.jsx b/docs/knowledge-base/examples/grid/show-hide-columns/app.jsx
deleted file mode 100644
index d02927c1..00000000
--- a/docs/knowledge-base/examples/grid/show-hide-columns/app.jsx
+++ /dev/null
@@ -1,78 +0,0 @@
-
-import * as React from "react";
-import { Grid, GridColumn as Column } from "@progress/kendo-react-grid";
-
-import products from "./shared-products.json";
-
-class App extends React.Component {
- state = {
- columns: [
- { field: "ProductID", title: "ID", show: false },
- { field: "ProductName", title: "Name", show: true },
- { field: "Category.CategoryName", title: "Category Name", show: true },
- { field: "UnitPrice", title: "Price", show: true },
- { field: "UnitsInStock", title: "In Stock", show: true }
- ]
- };
-
- onChange = props => {
- const newState = [...this.state.columns];
- newState.map((c, i) => {
- if (c.field == props.currentTarget.id) {
- c.show = !c.show;
- }
- });
- console.log(newState);
- this.setState({ columns: newState });
- };
-
- render() {
- return (
- <>
- Show Columns
-
- Product ID
-
-
- Product Name
-
-
- Category Name
-
-
-
- {this.state.columns.map((column, i) => {
- return (
- column.show && (
-
- )
- );
- })}
-
- >
- );
- }
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/show-hide-columns/main.jsx b/docs/knowledge-base/examples/grid/show-hide-columns/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/show-hide-columns/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/show-loading-indicator/app.jsx b/docs/knowledge-base/examples/grid/show-loading-indicator/app.jsx
deleted file mode 100644
index 52894e02..00000000
--- a/docs/knowledge-base/examples/grid/show-loading-indicator/app.jsx
+++ /dev/null
@@ -1,49 +0,0 @@
-
-import * as React from 'react';
-
-import { Grid, GridColumn } from '@progress/kendo-react-grid';
-
-const loadingPanel = (
-
-);
-
-
-class App extends React.Component {
- state = {
- gridData: []
- }
-
- componentDidMount() {
- fetch('https://jsonplaceholder.typicode.com/todos')
- .then(response => response.json())
- .then(json => {
- this.setState({
- gridData: json
- })
- })
- }
-
- render() {
- return (
-
- {this.state.gridData.length === 0 && loadingPanel}
-
-
-
-
-
-
-
- );
- }
-}
-
-export default App;
-
diff --git a/docs/knowledge-base/examples/grid/show-loading-indicator/main.jsx b/docs/knowledge-base/examples/grid/show-loading-indicator/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/show-loading-indicator/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/stateful/app.jsx b/docs/knowledge-base/examples/grid/stateful/app.jsx
deleted file mode 100644
index 161f9d9c..00000000
--- a/docs/knowledge-base/examples/grid/stateful/app.jsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import React from "react";
-import { withState } from "./with-state";
-import { GridColumn, Grid } from "@progress/kendo-react-grid";
-import products from "./shared-products.json";
-
-const StatefulGrid = withState(Grid);
-
-const App = () => {
- const sampleData = [
- { field1: "Chai" },
- { field1: "Chang" },
- { field1: "Aniseed Syrup" },
- { field1: "Longlife Tofu" },
- ];
-
- return (
-
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/stateful/main.jsx b/docs/knowledge-base/examples/grid/stateful/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/stateful/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/stateful/with-state.jsx b/docs/knowledge-base/examples/grid/stateful/with-state.jsx
deleted file mode 100644
index a9d75fef..00000000
--- a/docs/knowledge-base/examples/grid/stateful/with-state.jsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import React, { useState } from "react";
-import { process } from "@progress/kendo-data-query";
-
-export const withState = (WrappedGrid) => {
- return (props) => {
- const [gridState, setGridState] = useState(
- props.pageable === false
- ? {}
- : { skip: 0, take: 10, sort: [], filter: null }
- );
-
- const onDataStateChange = (event) => {
- const updatedState = {
- ...gridState,
- skip: event.dataState?.skip,
- take: event.dataState?.take,
- sort: event.dataState?.sort,
- filter: event.dataState?.filter,
- };
- setGridState(updatedState);
- };
-
- return (
-
- );
- };
-};
diff --git a/docs/knowledge-base/examples/grid/store-columns-width-and-order/app.jsx b/docs/knowledge-base/examples/grid/store-columns-width-and-order/app.jsx
deleted file mode 100644
index d1c11970..00000000
--- a/docs/knowledge-base/examples/grid/store-columns-width-and-order/app.jsx
+++ /dev/null
@@ -1,63 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn } from '@progress/kendo-react-grid';
-const products = [
- {
- ProductName: 'Name',
- ProductID: 1,
- Category: 'Category',
- UnitPrice: 10,
- UnitsInStock: 2,
- },
-];
-let loadedColumns = localStorage.getItem('gridColumns');
-const GridColumns = loadedColumns
- ? JSON.parse(loadedColumns)
- : [
- //here you can define the initial columns configuration
- { field: 'ProductID', width: 200 },
- { field: 'ProductName', width: 200 },
- { field: 'Category', width: 200 },
- { field: 'UnitPrice', width: 200 },
- { field: 'UnitsInStock', width: 200 },
- ];
-
-const App = () => {
- const [columns, setColumns] = React.useState(GridColumns);
- const gridRef = React.useRef();
-
- const onColumnReorder = (props) => {
- setColumns(props.columns);
- saveColumnsState(props.columns);
- };
- const onColumnResize = (props) => {
- setColumns(props.columns);
- saveColumnsState(props.columns);
- };
-
- const saveColumnsState = (columns) => {
- let currentColumnsState = JSON.stringify(columns);
- localStorage.setItem('gridColumns', currentColumnsState);
- };
- return (
-
-
- {columns.map((column, index) => {
- return ;
- })}
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/store-columns-width-and-order/main.jsx b/docs/knowledge-base/examples/grid/store-columns-width-and-order/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/store-columns-width-and-order/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/transpose-data/app.jsx b/docs/knowledge-base/examples/grid/transpose-data/app.jsx
deleted file mode 100644
index dabf244d..00000000
--- a/docs/knowledge-base/examples/grid/transpose-data/app.jsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import React from "react";
-import ReactDOM from "react-dom";
-import { Grid, GridColumn as Column } from "@progress/kendo-react-grid";
-
-const data = {
- phaseMinimumGreen: [10, 15, 10, 15, 10, 15, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0],
- phasePassage: [40, 50, 40, 50, 40, 50, 40, 50, 0, 0, 0, 0, 0, 0, 0, 0],
- phaseMaximum1: [25, 35, 25, 35, 25, 35, 25, 35, 0, 0, 0, 0, 0, 0, 0, 0],
- phaseMaximum2: [30, 50, 30, 50, 30, 50, 30, 50, 0, 0, 0, 0, 0, 0, 0, 0],
- phaseYellowChange: [40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 0, 0, 0],
- phaseRedClear: [20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0]
-};
-
-const transformData = data => {
- let transposeData = [];
- for (let item in data) {
- let itemArray = data[item];
- let newItem = {
- item
- };
- for (let i = 0; i < itemArray.length; i++) {
- newItem[i] = itemArray[i];
- }
- transposeData.push(newItem);
- }
- return transposeData;
-};
-
-class App extends React.Component {
- render() {
- let parsedData = transformData(data);
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
- }
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/transpose-data/main.jsx b/docs/knowledge-base/examples/grid/transpose-data/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/transpose-data/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/unique-groups/app.jsx b/docs/knowledge-base/examples/grid/unique-groups/app.jsx
deleted file mode 100644
index d88f26d0..00000000
--- a/docs/knowledge-base/examples/grid/unique-groups/app.jsx
+++ /dev/null
@@ -1,88 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import { groupBy } from '@progress/kendo-data-query';
-import {
- setExpandedState,
- setGroupIds,
-} from '@progress/kendo-react-data-tools';
-import products from './shared-products.json';
-const initialGroup = [
- {
- field: 'UnitsInStock',
- },
- {
- field: 'ProductName',
- },
-];
-const processWithGroups = (data, group) => {
- const newDataState = groupBy(data, group);
- setGroupIds({
- data: newDataState,
- group: group,
- });
- return newDataState;
-};
-const App = () => {
- const [group, setGroup] = React.useState(initialGroup);
- const [resultState, setResultState] = React.useState(
- processWithGroups(products, initialGroup)
- );
- const [collapsedState, setCollapsedState] = React.useState([]);
- const onGroupChange = React.useCallback(
- (event) => {
- let groupExists = false;
- const newGroup =
- event.group.length >= 0 && event.group[event.group.length - 1];
- newGroup &&
- group.map((g) => {
- if (newGroup.field === g.field) {
- groupExists = true;
- }
- });
-
- if (!groupExists || event.nativeEvent) {
- const newDataState = processWithGroups(products, event.group);
- setGroup(event.group);
- setResultState(newDataState);
- }
- },
- [group]
- );
- const onExpandChange = React.useCallback(
- (event) => {
- const item = event.dataItem;
- if (item.groupId) {
- const newCollapsedIds = !event.value
- ? [...collapsedState, item.groupId]
- : collapsedState.filter((groupId) => groupId !== item.groupId);
- setCollapsedState(newCollapsedIds);
- }
- },
- [collapsedState]
- );
- const newData = setExpandedState({
- data: resultState,
- collapsedIds: collapsedState,
- });
- return (
-
-
-
-
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/unique-groups/main.jsx b/docs/knowledge-base/examples/grid/unique-groups/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/unique-groups/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/using-fitColumns-method/app.jsx b/docs/knowledge-base/examples/grid/using-fitColumns-method/app.jsx
deleted file mode 100644
index f9373411..00000000
--- a/docs/knowledge-base/examples/grid/using-fitColumns-method/app.jsx
+++ /dev/null
@@ -1,62 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn } from '@progress/kendo-react-grid';
-
-const products = [
- {
- ProductID: 1,
- ProductName: 'Product name',
- Category: {
- CategoryName: 'CategoryName 1',
- },
- UnitPrice: 18.0,
- UnitsInStock: 39,
- },
- {
- ProductID: 2,
- ProductName: 'Some long product name',
- Category: {
- CategoryName: 'CategoryName 2',
- },
- UnitPrice: 18.0,
- UnitsInStock: 39,
- },
-];
-
-const getColumnIDByField = (grid, field) => {
- let column = grid.columns.find((col) => col.field == field);
- return column ? column.id : '';
-};
-
-const App = () => {
- const gridRef = React.createRef();
-
- React.useEffect(() => {
- //using method for finding the column ID by field name (can be modified to search for title or other column property)
- let productNameID = getColumnIDByField(gridRef.current, 'ProductName');
- //getting the ID directly from a column from the columns collection
- let lastColumnID =
- gridRef.current.columns[gridRef.current.columns.length - 1].id;
-
- gridRef.current.fitColumns([productNameID, lastColumnID]);
- }, []);
-
- return (
-
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/grid/using-fitColumns-method/main.jsx b/docs/knowledge-base/examples/grid/using-fitColumns-method/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/using-fitColumns-method/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/virtual-scrolling-pagechange-event/app.jsx b/docs/knowledge-base/examples/grid/virtual-scrolling-pagechange-event/app.jsx
deleted file mode 100644
index a8e59849..00000000
--- a/docs/knowledge-base/examples/grid/virtual-scrolling-pagechange-event/app.jsx
+++ /dev/null
@@ -1,119 +0,0 @@
-import * as React from 'react';
-
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import { Skeleton } from '@progress/kendo-react-indicators';
-const App = () => {
- const requestInProgress = React.useRef(false);
- const pageSize = 20;
- const total = 830;
- const baseUrl = `https://demos.telerik.com/kendo-ui/service-v4/odata/Orders?$count=true&$top=60&$skip=`;
- const init = {
- method: 'GET',
- accept: 'application/json',
- headers: {},
- };
- const [orders, setOrders] = React.useState([]);
- const [page, setPage] = React.useState({
- skip: 0,
- take: pageSize,
- });
- const requestIfNeeded = (skip) => {
- for (let i = skip; i < skip + pageSize && i < orders.length; i++) {
- if (orders[i].OrderID === undefined) {
- // request data only if not already fetched
- requestData(skip);
- return;
- }
- }
- };
- const requestData = (skipParameter) => {
- if (requestInProgress.current) {
- // perform only one request at a time
- return;
- }
- requestInProgress.current = true;
- const skip = Math.max(skipParameter - pageSize, 0); // request the prev page as well
- fetch(baseUrl + skip, init)
- .then((response) => response.json())
- .then((json) => {
- requestInProgress.current = false;
- const data = json['value'];
- const newOrders =
- orders.length === total
- ? [...orders]
- : new Array(total).fill({}).map((e, i) => ({
- Index: i,
- }));
- data.forEach((order, i) => {
- newOrders[i + skip] = {
- Index: i + skip,
- ...order,
- };
- });
- setOrders(newOrders);
- });
- };
- React.useEffect(() => {
- requestIfNeeded(page.skip);
- }, [orders]);
- React.useEffect(() => {
- // request the first page on initial load
- requestData(0);
- }, []);
-
- const [gridScrollLeft, setGridScrollLeft] = React.useState(0);
- const [gridScrollTop, setGridScrollTop] = React.useState(0);
- const pageChange = (event) => {
- if (gridScrollLeft != event.nativeEvent.target.scrollLeft) {
- //console.log('horizontal scroll');
- setGridScrollLeft(event.nativeEvent.target.scrollLeft);
- }
- if (gridScrollTop != event.nativeEvent.target.scrollTop) {
- //console.log('vertical scroll');
- setGridScrollTop(event.nativeEvent.target.scrollTop);
- requestIfNeeded(event.page.skip);
- setPage(event.page);
- }
- };
- const loadingCell = (tdElement, props) => {
- const field = props.field || '';
- if (props.dataItem[field] === undefined) {
- // shows loading cell if no data
- return (
-
- {' '}
-
-
- );
- } // default rendering for this cell
-
- return tdElement;
- };
- return (
-
-
-
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/grid/virtual-scrolling-pagechange-event/main.jsx b/docs/knowledge-base/examples/grid/virtual-scrolling-pagechange-event/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/virtual-scrolling-pagechange-event/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/grid/with-tooltip/app.jsx b/docs/knowledge-base/examples/grid/with-tooltip/app.jsx
deleted file mode 100644
index 75b88470..00000000
--- a/docs/knowledge-base/examples/grid/with-tooltip/app.jsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import * as React from 'react';
-
-import { Tooltip } from '@progress/kendo-react-tooltip';
-import { Grid, GridColumn } from '@progress/kendo-react-grid';
-import products from './shared-products.json';
-
-class ProductNameCell extends React.Component {
- render() {
- return (
-
- {this.props.dataItem.ProductName}
-
- );
- }
-}
-class ProductNameHeader extends React.Component {
- render() {
- return (
-
- {this.props.title}
- {this.props.children}
-
- );
- }
- }
-class App extends React.Component {
- render() {
- return (
-
-
-
-
-
-
-
-
-
-
-
- );
- }
-}
-export default App;
diff --git a/docs/knowledge-base/examples/grid/with-tooltip/main.jsx b/docs/knowledge-base/examples/grid/with-tooltip/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/grid/with-tooltip/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/inputs/inputs-delayed-value-change/app.jsx b/docs/knowledge-base/examples/inputs/inputs-delayed-value-change/app.jsx
deleted file mode 100644
index e2071635..00000000
--- a/docs/knowledge-base/examples/inputs/inputs-delayed-value-change/app.jsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import * as React from 'react';
-import { Input } from '@progress/kendo-react-inputs';
-import { Hint } from '@progress/kendo-react-labels';
-
-let delay = 1000;
-
-const App = () => {
- const [value, setValue] = React.useState('');
- const [delayedValue, setDelayedValue] = React.useState('');
- const [lastEntry, setLastEntry] = React.useState();
- const [referenceTime, setReferenceTime] = React.useState(null);
-
- const handleChange = (e) => {
- setValue(e.value);
- setLastEntry(new Date());
- setTimeout(() => {
- setReferenceTime(new Date());
- }, delay);
- };
-
- React.useEffect(() => {
- if (lastEntry && referenceTime - lastEntry.getTime() > delay) {
- setDelayedValue(value);
- setLastEntry(null);
- }
- }, [value, referenceTime]);
-
- return (
-
- * The delayed value will be changed after a threshold (1 second in this
- example)
-
-
- Instant value: {value}
-
- Delayed value: {delayedValue}
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/inputs/inputs-delayed-value-change/main.jsx b/docs/knowledge-base/examples/inputs/inputs-delayed-value-change/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/inputs/inputs-delayed-value-change/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/inputs/numerictextbox-clear-value-on-esc-key/app.jsx b/docs/knowledge-base/examples/inputs/numerictextbox-clear-value-on-esc-key/app.jsx
deleted file mode 100644
index 1d221bfc..00000000
--- a/docs/knowledge-base/examples/inputs/numerictextbox-clear-value-on-esc-key/app.jsx
+++ /dev/null
@@ -1,43 +0,0 @@
-import * as React from 'react';
-import { NumericTextBox } from '@progress/kendo-react-inputs';
-import { Label } from '@progress/kendo-react-labels';
-import { FieldWrapper } from '@progress/kendo-react-form';
-const App = () => {
- const [value, setValue] = React.useState(null);
- const ChangeKilometers = (e) => {
- setValue(e.value);
- };
-
- const numericRef = React.useRef(null);
- //Adding event listener for keydown after the component is initialized
- React.useEffect(() => {
- numericRef.current.element.addEventListener('keydown', (e) => {
- if (e.keyCode == '27') {
- setTimeout(() => {
- setValue(null);
- //forcing the visual change by blurring the input
- numericRef.current.element.blur();
- numericRef.current.element.focus();
- });
- }
- });
- }, []);
- return (
-
- Kilometers:
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/inputs/numerictextbox-clear-value-on-esc-key/main.jsx b/docs/knowledge-base/examples/inputs/numerictextbox-clear-value-on-esc-key/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/inputs/numerictextbox-clear-value-on-esc-key/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/inputs/rangeslider-show-value-as-tooltip/app.jsx b/docs/knowledge-base/examples/inputs/rangeslider-show-value-as-tooltip/app.jsx
deleted file mode 100644
index 798bd197..00000000
--- a/docs/knowledge-base/examples/inputs/rangeslider-show-value-as-tooltip/app.jsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import * as React from 'react';
-import { RangeSlider, SliderLabel } from '@progress/kendo-react-inputs';
-const App = () => {
- const sliderRef = React.useRef(null);
- const [start, setStart] = React.useState(10);
- const [end, setEnd] = React.useState(100);
-
- const onChange = (ev) => {
- setStart(ev.value.start);
- setEnd(ev.value.end);
- };
-
- React.useEffect(() => {
- let sliderEl = sliderRef.current.element;
- let sliderDots = sliderEl.querySelectorAll('.k-slider-track .k-draghandle');
- sliderDots[0].title = start;
- sliderDots[1].title = end;
- }, [start, setStart, end, setEnd]);
- return (
-
- {[0, 25, 50, 75, 100].map((perc, i) => (
-
- {perc.toString()}
-
- ))}
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/inputs/rangeslider-show-value-as-tooltip/main.jsx b/docs/knowledge-base/examples/inputs/rangeslider-show-value-as-tooltip/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/inputs/rangeslider-show-value-as-tooltip/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/inputs/rangeslider-slider-dots-title/app.jsx b/docs/knowledge-base/examples/inputs/rangeslider-slider-dots-title/app.jsx
deleted file mode 100644
index 05be038d..00000000
--- a/docs/knowledge-base/examples/inputs/rangeslider-slider-dots-title/app.jsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import * as React from 'react';
-import { RangeSlider, SliderLabel } from '@progress/kendo-react-inputs';
-
-const App = () => {
- const sliderRef = React.useRef(null);
- const [start, setStart] = React.useState(10);
- const [end, setEnd] = React.useState(100);
-
- const onChange = (ev) => {
- setStart(ev.value.start);
- setEnd(ev.value.end);
- };
-
- React.useEffect(() => {
- let sliderEl = sliderRef.current.element;
- let sliderDots = sliderEl.querySelectorAll('.k-slider-track .k-draghandle');
- sliderDots[0].title = start;
- sliderDots[1].title = end;
- }, [start, setStart, end, setEnd]);
-
- return (
-
- {[0, 25, 50, 75, 100].map((perc, i) => (
-
- {perc.toString()}
-
- ))}
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/inputs/rangeslider-slider-dots-title/main.jsx b/docs/knowledge-base/examples/inputs/rangeslider-slider-dots-title/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/inputs/rangeslider-slider-dots-title/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/inputs/slider-label-single-click/app.jsx b/docs/knowledge-base/examples/inputs/slider-label-single-click/app.jsx
deleted file mode 100644
index 0b0d5c15..00000000
--- a/docs/knowledge-base/examples/inputs/slider-label-single-click/app.jsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import * as React from 'react';
-import { Slider, SliderLabel } from '@progress/kendo-react-inputs';
-const App = () => {
- const [value, setValue] = React.useState(7);
- const change = (e) => {
- setValue(e.value);
- };
- const handleClick = (e) => {
- setValue(e.target.innerText);
- };
- return (
-
-
- 1
-
-
- 3
-
-
- 5
-
-
- 7
-
-
- 10
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/inputs/slider-label-single-click/main.jsx b/docs/knowledge-base/examples/inputs/slider-label-single-click/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/inputs/slider-label-single-click/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/bottomnavigation-change-content/app.jsx b/docs/knowledge-base/examples/layout/bottomnavigation-change-content/app.jsx
deleted file mode 100644
index 41f33e1b..00000000
--- a/docs/knowledge-base/examples/layout/bottomnavigation-change-content/app.jsx
+++ /dev/null
@@ -1,58 +0,0 @@
-import * as React from 'react';
-import { BottomNavigation } from '@progress/kendo-react-layout';
-import { DropDownList } from '@progress/kendo-react-dropdowns';
-const content = [
- {
- text: 'Home',
- icon: 'home',
- selected: true,
- },
- {
- text: 'Library',
- icon: 'folder',
- },
- {
- text: 'Search',
- icon: 'search',
- },
-];
-
-const Home = () => {
- return Home content
;
-};
-
-const Library = () => {
- return Library content
;
-};
-
-const Search = () => {
- return Search content
;
-};
-
-const NavigationData = [ , , ];
-const App = () => {
- const [selectedIndex, setSelectedIndex] = React.useState(
- content.findIndex((x) => x.selected === true)
- );
- const handleSelect = (e) => {
- setSelectedIndex(e.itemIndex);
- };
- return (
-
-
-
-
{NavigationData[selectedIndex]}
-
({
- ...item,
- selected: index === selectedIndex,
- }))}
- onSelect={handleSelect}
- />
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/layout/bottomnavigation-change-content/main.jsx b/docs/knowledge-base/examples/layout/bottomnavigation-change-content/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/layout/bottomnavigation-change-content/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/drawer-close-on-click/app.jsx b/docs/knowledge-base/examples/layout/drawer-close-on-click/app.jsx
deleted file mode 100644
index 67ae054d..00000000
--- a/docs/knowledge-base/examples/layout/drawer-close-on-click/app.jsx
+++ /dev/null
@@ -1,66 +0,0 @@
-import * as React from 'react';
-import { Drawer, DrawerContent } from '@progress/kendo-react-layout';
-import './styles.css';
-const items = [
- {
- text: 'Inbox',
- icon: 'k-i-inbox',
- selected: true,
- },
- {
- text: 'Calendar',
- icon: 'k-i-calendar',
- },
- {
- text: 'Attachments',
- icon: 'k-i-hyperlink-email',
- },
- {
- text: 'Favourites',
- icon: 'k-i-star-outline',
- },
-];
-const App = () => {
- const [expanded, setExpanded] = React.useState(true);
- const [selectedId, setSelectedId] = React.useState(
- items.findIndex((x) => x.selected === true)
- );
- const handleClick = () => {
- setExpanded((prevState) => !prevState);
- };
- const handleSelect = (ev) => {
- setSelectedId(ev.itemIndex);
- //setExpanded(false);
- };
-
- React.useEffect(() => {
- document.addEventListener('mousedown', (e) => {
- if (!document.querySelector('.k-drawer').contains(e.target)) {
- setExpanded(false);
- }
- });
- }, []);
-
- return (
- ({
- ...item,
- selected: index === selectedId,
- }))}
- onSelect={handleSelect}
- >
-
-
- Toggle the drawer state
-
-
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/layout/drawer-close-on-click/main.jsx b/docs/knowledge-base/examples/layout/drawer-close-on-click/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/layout/drawer-close-on-click/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/drawer-close-on-click/styles.css b/docs/knowledge-base/examples/layout/drawer-close-on-click/styles.css
deleted file mode 100644
index 91018769..00000000
--- a/docs/knowledge-base/examples/layout/drawer-close-on-click/styles.css
+++ /dev/null
@@ -1,13 +0,0 @@
-my-app { padding: 0 !important; }
-
-.k-drawer-content {
- padding: 20px;
-}
-.k-drawer-container {
- position: fixed;
- width: 100%;
- height: 100%;
-}
-.k-drawer-item {
- user-select: none;
-}
diff --git a/docs/knowledge-base/examples/layout/drawer-router-v6/About.jsx b/docs/knowledge-base/examples/layout/drawer-router-v6/About.jsx
deleted file mode 100644
index 8cf324f9..00000000
--- a/docs/knowledge-base/examples/layout/drawer-router-v6/About.jsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import * as React from 'react';
-const text =
-
- So cuffed therefore by some sadistically mallard rewrote yet accommodatingly more
- cat adequate pesky far this dear fitting and groundhog horse some selfish jeepers juggled
- about since upheld heatedly well much.
-
-
- Therefore falcon usefully crab during onto hello regally rat wiped misread reluctant unlike
- iguanodon fish far bald abjectly far chameleon more scurrilous gagged virtuously sufficient
- arrogant cobra froze dog waywardly staunch thus consoled.
-
-
- Amphibious darn well densely far meanly inanimately incoherent away flamingo outside yet jeez
- that yawned secret evasive dear overrode rat cow one overpaid far hatchet much.
-
-
- Had aerial well well coasted darn chuckled studied underlay fatally the but among because
- patient or shook depending much sloth wetted cheered some bee.
-
-
- Bombastically yikes some coquettish erroneously in therefore disgracefully glanced some
- connected and goodness more read marvelous up one rebukingly darn fuzzily.
-
-
- Meadowlark and hence regarding flaunting amongst steadfastly demurely like far and stiffly
- bled reluctant alongside jeez this save opposite well and this shuddered and smoked wherever
- condescendingly hey onto much.
-
-
- Hello gosh gosh up effortlessly valiant hotly less rubbed gerbil and ouch inside fatuous
- suitably far fuzzily unihibitedly locked froze timidly hello much revealed lorikeet lantern
- this much one and far decidedly.
-
-
;
-
-const About = props => {
- return
-
About
- {props.children ? props.children : text}
- ;
-};
-
-export default About;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/drawer-router-v6/DrawerContainer.jsx b/docs/knowledge-base/examples/layout/drawer-router-v6/DrawerContainer.jsx
deleted file mode 100644
index ec9d1c76..00000000
--- a/docs/knowledge-base/examples/layout/drawer-router-v6/DrawerContainer.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import * as React from 'react';
-import { useLocation, useNavigate } from 'react-router-dom';
-import { Drawer, DrawerContent } from '@progress/kendo-react-layout';
-import { Button } from '@progress/kendo-react-buttons';
-
-const items = [
- {
- text: 'Home',
- selected: true,
- route: '/',
- },
- {
- text: 'Products',
- route: '/products',
- },
- {
- text: 'About',
- route: '/about',
- },
-];
-
-const DrawerContainer = (props) => {
- const navigate = useNavigate();
- const location = useLocation();
- const [expanded, setExpanded] = React.useState(true);
-
- const handleClick = () => {
- setExpanded(!expanded);
- };
-
- const onSelect = (e) => {
- navigate(e.itemTarget.props.route);
- };
-
- const setSelectedItem = (pathName) => {
- let currentPath = items.find((item) => item.route === pathName);
-
- if (currentPath.text) {
- return currentPath.text;
- }
- };
-
- const selected = setSelectedItem(location.pathname);
-
- return (
-
-
-
- Navigational drawer
-
-
({
- ...item,
- selected: item.text === selected,
- }))}
- onSelect={onSelect}
- >
- {props.children}
-
-
- );
-};
-
-export default DrawerContainer;
diff --git a/docs/knowledge-base/examples/layout/drawer-router-v6/Home.jsx b/docs/knowledge-base/examples/layout/drawer-router-v6/Home.jsx
deleted file mode 100644
index 66083200..00000000
--- a/docs/knowledge-base/examples/layout/drawer-router-v6/Home.jsx
+++ /dev/null
@@ -1,51 +0,0 @@
-import * as React from 'react';
-const text = (
-
-
- However engaging wherever growled much methodic shamefully more human
- agreeable gracefully and less equitable insistent gasped that when wasp
- baboon rebuilt more slept stingily along knew llama.
-
-
- Prim crud far healthy wholesomely more far chortled ouch in adroitly
- gawked affably reasonably manfully reindeer mysteriously overpaid
- considering far far until.
-
-
- Red-handed off thickly save aboard mawkishly that amidst moth pending
- jerkily monogamous some much or creatively indecent neat far jeepers up
- spoiled about.
-
-
- Owing desperate like one shark or bit yikes up so thus grumbled gosh more
- bawled much and regardless hey far bought through crud well staunchly
- hysteric inside incorrect the closed.
-
-
- Industrious jubilant blanched bestially yet that less far far a wow the
- militant preparatory crudely acrimonious under a towards lemur wedded that
- while decorously this peered darn a much.
-
-
- Dizzy boundless hence but because moodily and alas a truculently less
- hardheaded so on ambiguously incompetently less moaned hilarious until one
- jeepers amid heinously.
-
-
- Where beneath less misspelled across artistically spiteful jeepers much
- more that when blushed a much a this groundhog therefore far arduous
- dependent much satanic where dear goodness hummingbird.
-
-
-);
-
-const Home = (props) => {
- return (
-
-
Home page
- {props.children ? props.children : text}
-
- );
-};
-
-export default Home;
diff --git a/docs/knowledge-base/examples/layout/drawer-router-v6/Products.jsx b/docs/knowledge-base/examples/layout/drawer-router-v6/Products.jsx
deleted file mode 100644
index f0158de8..00000000
--- a/docs/knowledge-base/examples/layout/drawer-router-v6/Products.jsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import * as React from 'react';
-const text =
-
- Inclusive and foolishly more on yikes far one vociferous squinted lied much the howled disagreed
- yet seal needlessly vulgarly far moistly wanton.
-
-
- Human and some barring roadrunner behind swore hello ebulliently pending less upon amiable less
- amiably dear harsh telepathic regarding hey poignant ahead.
-
-
- Immensely a that gosh accurately by naughtily patted laxly far pangolin ouch this like marvelous
- bitter crab jeez after unobtrusive flamboyant octopus.
-
-
- So koala that ouch and much porpoise falcon from and wasp curtly crud much more frequently and
- accidental beneath during far.
-
-
;
-
-const Products = props => {
- return
-
Products
- {props.children ? props.children : text}
- ;
-};
-
-export default Products;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/drawer-router-v6/Team.jsx b/docs/knowledge-base/examples/layout/drawer-router-v6/Team.jsx
deleted file mode 100644
index 78ce753a..00000000
--- a/docs/knowledge-base/examples/layout/drawer-router-v6/Team.jsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import * as React from 'react';
-const text =
-
- Leapt sprang volubly that or adroitly cozy sold creepy shuffled spent flirted withdrew gosh zebra
- prideful swung yawned monkey penguin.
-
-
- This wow flinched one immoral this dear far inflexible newt far outside up hey excluding goodness
- hello much after feverishly direly fitted wow some youthful crud stark more strict unjustifiable
- that told one.
-
-
- Shark audible mistook removed tryingly much delicate yet sudden after contrary thus brusque more
- won wallaby frowningly much censorious spryly thanks circuitous this sewed dreamed wow.
-
-
- The against alas less adoringly some cutting aboard lighted some dear agilely and enticingly before
- thanks upon was neglectful merrily some porpoise tenably and and groundhog together kiwi much barked
- miser.
-
-
- Much flamingo mocking much far far some since among ritually since crud near one tartly left far and
- far this ineffectively goodness mighty some and intricately far.
-
-
- Modestly mastodon hypocritically hatchet gerbil successful dispassionate nefariously and
- the dangerously far in one less save gosh became and sparing that by alas.
-
-
;
-
-const Team = props => {
- return
-
Team
- {props.children ? props.children : text}
- ;
-};
-
-export default Team;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/drawer-router-v6/app.jsx b/docs/knowledge-base/examples/layout/drawer-router-v6/app.jsx
deleted file mode 100644
index 63514efa..00000000
--- a/docs/knowledge-base/examples/layout/drawer-router-v6/app.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import * as React from 'react';
-import { Router, BrowserRouter, Routes, Route } from 'react-router-dom';
-import About from './About';
-import Home from './Home';
-import Products from './Products';
-import DrawerContainer from './DrawerContainer';
-import './styles.css';
-
-const App = () => {
- return (
-
-
-
-
- } />
- } />
- } />
-
-
-
-
- );
-};
-
-export default App;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/drawer-router-v6/main.jsx b/docs/knowledge-base/examples/layout/drawer-router-v6/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/layout/drawer-router-v6/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/drawer-router-v6/styles.css b/docs/knowledge-base/examples/layout/drawer-router-v6/styles.css
deleted file mode 100644
index b104f402..00000000
--- a/docs/knowledge-base/examples/layout/drawer-router-v6/styles.css
+++ /dev/null
@@ -1,35 +0,0 @@
-my-app { padding: 0 !important; }
-
-.k-drawer-container {
- position: fixed;
- width: 100%;
- height: 100%;
-}
-.k-drawer-item {
- user-select: none;
-}
-.k-icon {
- font-size: 20px;
-}
-.title {
- margin-left: 20px;
- font-weight: bold;
- font-size: 17px;
-}
-.custom-toolbar {
- width: 100%;
- background-color: #f6f6f6;
- line-height: 10px;
- border-bottom: inset;
- border-bottom-width: 1px;
- padding: 3px 8px;
- color: #656565;
-}
-.k-drawer-container {
- position: fixed;
- width: 100%;
- height: 100%;
-}
-.k-drawer-content {
- padding: 10px;
-}
diff --git a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/About.jsx b/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/About.jsx
deleted file mode 100644
index b8932d9c..00000000
--- a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/About.jsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import * as React from 'react';
-const text =
-
- So cuffed therefore by some sadistically mallard rewrote yet accommodatingly more
- cat adequate pesky far this dear fitting and groundhog horse some selfish jeepers juggled
- about since upheld heatedly well much.
-
-
- Therefore falcon usefully crab during onto hello regally rat wiped misread reluctant unlike
- iguanodon fish far bald abjectly far chameleon more scurrilous gagged virtuously sufficient
- arrogant cobra froze dog waywardly staunch thus consoled.
-
-
- Amphibious darn well densely far meanly inanimately incoherent away flamingo outside yet jeez
- that yawned secret evasive dear overrode rat cow one overpaid far hatchet much.
-
-
- Had aerial well well coasted darn chuckled studied underlay fatally the but among because
- patient or shook depending much sloth wetted cheered some bee.
-
-
- Bombastically yikes some coquettish erroneously in therefore disgracefully glanced some
- connected and goodness more read marvelous up one rebukingly darn fuzzily.
-
-
- Meadowlark and hence regarding flaunting amongst steadfastly demurely like far and stiffly
- bled reluctant alongside jeez this save opposite well and this shuddered and smoked wherever
- condescendingly hey onto much.
-
-
- Hello gosh gosh up effortlessly valiant hotly less rubbed gerbil and ouch inside fatuous
- suitably far fuzzily unihibitedly locked froze timidly hello much revealed lorikeet lantern
- this much one and far decidedly.
-
-
;
-const About = props => {
- return
-
About
- {props.children ? props.children : text}
- ;
-};
-export default About;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/Home.jsx b/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/Home.jsx
deleted file mode 100644
index 4873340f..00000000
--- a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/Home.jsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import * as React from 'react';
-const text =
-
- However engaging wherever growled much methodic shamefully more human agreeable gracefully and
- less equitable insistent gasped that when wasp baboon rebuilt more slept stingily along knew llama.
-
-
- Prim crud far healthy wholesomely more far chortled ouch in adroitly gawked affably reasonably
- manfully reindeer mysteriously overpaid considering far far until.
-
-
- Red-handed off thickly save aboard mawkishly that amidst moth pending jerkily monogamous some much
- or creatively indecent neat far jeepers up spoiled about.
-
-
- Owing desperate like one shark or bit yikes up so thus grumbled gosh more bawled much and regardless
- hey far bought through crud well staunchly hysteric inside incorrect the closed.
-
-
- Industrious jubilant blanched bestially yet that less far far a wow the militant preparatory
- crudely acrimonious under a towards lemur wedded that while decorously this peered darn a much.
-
-
- Dizzy boundless hence but because moodily and alas a truculently less hardheaded so on ambiguously
- incompetently less moaned hilarious until one jeepers amid heinously.
-
-
- Where beneath less misspelled across artistically spiteful jeepers much more that when blushed a
- much a this groundhog therefore far arduous dependent much satanic where dear goodness hummingbird.
-
-
;
-const Home = props => {
- return
-
Home page
- {props.children ? props.children : text}
- ;
-};
-export default Home;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/PanelBarNavContainer.jsx b/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/PanelBarNavContainer.jsx
deleted file mode 100644
index ae1c4524..00000000
--- a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/PanelBarNavContainer.jsx
+++ /dev/null
@@ -1,92 +0,0 @@
-import * as React from 'react';
-import { PanelBar, PanelBarItem } from '@progress/kendo-react-layout';
-import { useNavigate } from 'react-router';
-
-export const withRouter = (Component) =>{
- const Wrapper = (props) =>{
- const history = useNavigate();
- return
- }
- return Wrapper;
-}
-
-const CustomPanelBarItem = (props) => {
- return (
- <>
-
- {props.title}
-
- >
- );
-};
-const paths = [
- {
- path: '/',
- index: '.0',
- },
- {
- path: '/products',
- index: '.1',
- },
- {
- path: '/about',
- index: '.2',
- },
- {
- path: '/about/team',
- index: '.2.0',
- },
-];
-const PanelBarNavContainer = (props) => {
- const onSelect = (event) => {
- props.history.push(event.target.props.route);
- };
- const setSelectedIndex = (pathName) => {
- let currentPath = paths.find((item) => item.path === pathName);
- return currentPath.index;
- };
- const selected = setSelectedIndex(props.location.pathname);
- return (
-
-
-
- }
- route="/"
- />
- }
- route="/products"
- />
- }
- route="/about"
- >
-
-
-
-
-
- {props.children}
-
-
- );
-};
-export default withRouter(PanelBarNavContainer);
diff --git a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/Products.jsx b/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/Products.jsx
deleted file mode 100644
index ec0823a1..00000000
--- a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/Products.jsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import * as React from 'react';
-const text =
-
- Inclusive and foolishly more on yikes far one vociferous squinted lied much the howled disagreed
- yet seal needlessly vulgarly far moistly wanton.
-
-
- Human and some barring roadrunner behind swore hello ebulliently pending less upon amiable less
- amiably dear harsh telepathic regarding hey poignant ahead.
-
-
- Immensely a that gosh accurately by naughtily patted laxly far pangolin ouch this like marvelous
- bitter crab jeez after unobtrusive flamboyant octopus.
-
-
- So koala that ouch and much porpoise falcon from and wasp curtly crud much more frequently and
- accidental beneath during far.
-
-
;
-const Products = props => {
- return
-
Products
- {props.children ? props.children : text}
- ;
-};
-export default Products;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/Team.jsx b/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/Team.jsx
deleted file mode 100644
index 49d33417..00000000
--- a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/Team.jsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import * as React from 'react';
-const text =
-
- Leapt sprang volubly that or adroitly cozy sold creepy shuffled spent flirted withdrew gosh zebra
- prideful swung yawned monkey penguin.
-
-
- This wow flinched one immoral this dear far inflexible newt far outside up hey excluding goodness
- hello much after feverishly direly fitted wow some youthful crud stark more strict unjustifiable
- that told one.
-
-
- Shark audible mistook removed tryingly much delicate yet sudden after contrary thus brusque more
- won wallaby frowningly much censorious spryly thanks circuitous this sewed dreamed wow.
-
-
- The against alas less adoringly some cutting aboard lighted some dear agilely and enticingly before
- thanks upon was neglectful merrily some porpoise tenably and and groundhog together kiwi much barked
- miser.
-
-
- Much flamingo mocking much far far some since among ritually since crud near one tartly left far and
- far this ineffectively goodness mighty some and intricately far.
-
-
- Modestly mastodon hypocritically hatchet gerbil successful dispassionate nefariously and
- the dangerously far in one less save gosh became and sparing that by alas.
-
-
;
-const Team = props => {
- return
-
Team
- {props.children ? props.children : text}
- ;
-};
-export default Team;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/app.jsx b/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/app.jsx
deleted file mode 100644
index 55253d3a..00000000
--- a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/app.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-
-import * as React from 'react';
-import { HashRouter, Routes, Route } from 'react-router-dom';
-import About from './About';
-import Team from './Team';
-import Home from './Home';
-import Products from './Products';
-import PanelBarNavContainer from './PanelBarNavContainer';
-
-const App = () => {
- return (
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/main.jsx b/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/layout/panelbar-open-in-new-window/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/panelbar-render-button-in-panelbaritem/app.jsx b/docs/knowledge-base/examples/layout/panelbar-render-button-in-panelbaritem/app.jsx
deleted file mode 100644
index 502bedff..00000000
--- a/docs/knowledge-base/examples/layout/panelbar-render-button-in-panelbaritem/app.jsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import * as React from 'react';
-import { PanelBar, PanelBarItem } from '@progress/kendo-react-layout';
-
-const MyTitle = (props) => {
- return (
-
- {props.title}
-
- Add
-
-
- );
-};
-
-const App = () => {
- const [count, setCount] = React.useState(1);
-
- const addButtonClick = (e) => {
- //prevent the propagation of the click event, so the PanelBarItem does not get selected or expanded/collapsed
- e.preventDefault();
- e.stopPropagation();
- setCount(count + 1);
- };
- return (
-
- Count: {count}
-
-
- }
- >
- {">> Content"}
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/layout/panelbar-render-button-in-panelbaritem/main.jsx b/docs/knowledge-base/examples/layout/panelbar-render-button-in-panelbaritem/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/layout/panelbar-render-button-in-panelbaritem/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/tabstrip-button-in-tabs/app.jsx b/docs/knowledge-base/examples/layout/tabstrip-button-in-tabs/app.jsx
deleted file mode 100644
index 179de258..00000000
--- a/docs/knowledge-base/examples/layout/tabstrip-button-in-tabs/app.jsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import * as React from 'react';
-import { TabStrip, TabStripTab } from '@progress/kendo-react-layout';
-
-const App = () => {
- const [selected, setSelected] = React.useState(-1);
-
- const handleSelect = (e) => {
- console.log('Select');
- setSelected(e.selected);
- };
- const buttonClick = (e) => {
- e.preventDefault();
- e.stopPropagation();
- console.log('Button clicked');
- };
- const FirstTab = (props) => {
- return (
-
- Click me Tab 1 title
-
- );
- };
- return (
-
- }>
- Tab 1 Content
-
-
- Tab 2 Content
-
-
- Tab 3 Content
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/layout/tabstrip-button-in-tabs/main.jsx b/docs/knowledge-base/examples/layout/tabstrip-button-in-tabs/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/layout/tabstrip-button-in-tabs/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/tabstrip-scrollbar-for-tabs/app.jsx b/docs/knowledge-base/examples/layout/tabstrip-scrollbar-for-tabs/app.jsx
deleted file mode 100644
index ef7c5988..00000000
--- a/docs/knowledge-base/examples/layout/tabstrip-scrollbar-for-tabs/app.jsx
+++ /dev/null
@@ -1,62 +0,0 @@
-import * as React from 'react';
-
-import { TabStrip, TabStripTab } from '@progress/kendo-react-layout';
-import './styles.css';
-
-const App = () => {
- const [selected, setSelected] = React.useState(2);
-
- const handleSelect = (e) => {
- setSelected(e.selected);
- };
-
- return (
-
-
-
- Tab 1 Content
-
-
- Tab 2 Content
-
-
- Tab 3 Content
-
-
- Tab 4 Content
-
-
- Tab 5 Content
-
-
-
-
-
- Tab 1 Content
-
-
- Tab 2 Content
-
-
- Tab 3 Content
-
-
- Tab 4 Content
-
-
- Tab 5 Content
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/layout/tabstrip-scrollbar-for-tabs/main.jsx b/docs/knowledge-base/examples/layout/tabstrip-scrollbar-for-tabs/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/layout/tabstrip-scrollbar-for-tabs/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/tabstrip-scrollbar-for-tabs/styles.css b/docs/knowledge-base/examples/layout/tabstrip-scrollbar-for-tabs/styles.css
deleted file mode 100644
index 12fd207a..00000000
--- a/docs/knowledge-base/examples/layout/tabstrip-scrollbar-for-tabs/styles.css
+++ /dev/null
@@ -1,14 +0,0 @@
-.myCustomTabStrip {
- width: 500px;
- overflow-x: scroll;
- }
-
- .myCustomTabStrip2 {
- width: 500px;
- }
- .myCustomTabStrip2 .k-tabstrip-items-wrapper {
- overflow-x: scroll;
- overflow-y: hidden;
- height: 60px;
- }
-
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/layout/tilelayout-adapt-rowspan-content-dynamically/app.jsx b/docs/knowledge-base/examples/layout/tilelayout-adapt-rowspan-content-dynamically/app.jsx
deleted file mode 100644
index 4f395aec..00000000
--- a/docs/knowledge-base/examples/layout/tilelayout-adapt-rowspan-content-dynamically/app.jsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import * as React from "react";
-import { TileLayout } from "@progress/kendo-react-layout";
-import { Grid } from "@progress/kendo-react-grid";
-import products from "./shared-products.json";
-const initialDataState = {
- skip: 0,
- take: 10,
-};
-const App = () => {
- const [data, setData] = React.useState([
- {
- col: 1,
- colSpan: 3,
- rowSpan: 3,
- },
- ]);
-
- const rowHeight = 200;
-
- const calculateRowSpan = (contentHeight) => {
- const minHeight = Math.max(contentHeight, rowHeight);
- return Math.ceil(minHeight / rowHeight);
- };
-
- const adjustRowSpanBasedOnContent = () => {
- const gridElement = document.querySelector(".k-grid");
- const contentHeight = gridElement ? gridElement.clientHeight : 0;
- const newRowSpan = calculateRowSpan(contentHeight);
-
- setData((prevData) =>
- prevData.map((item, index) =>
- index === 0 ? { ...item, rowSpan: newRowSpan } : item
- )
- );
- };
-
- React.useEffect(() => {
- adjustRowSpanBasedOnContent();
- }, [products]);
-
- const [page, setPage] = React.useState(initialDataState);
- const [pageSizeValue, setPageSizeValue] = React.useState();
- const pageChange = (event) => {
- const targetEvent = event.targetEvent;
- const take =
- targetEvent.value === "All" ? products.length : event.page.take;
- if (targetEvent.value) {
- setPageSizeValue(targetEvent.value);
- }
- setPage({
- ...event.page,
- take,
- });
- };
- const tiles = [
- {
- header: "Page Views",
- body: (
-
- ),
- },
- ];
- const handleReposition = (e) => {
- setData(e.value);
- console.log(e.value);
- };
- return (
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/layout/tilelayout-adapt-rowspan-content-dynamically/main.jsx b/docs/knowledge-base/examples/layout/tilelayout-adapt-rowspan-content-dynamically/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/layout/tilelayout-adapt-rowspan-content-dynamically/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/listbox/listbox-keyboard-navigation/app.jsx b/docs/knowledge-base/examples/listbox/listbox-keyboard-navigation/app.jsx
deleted file mode 100644
index 8e9fa890..00000000
--- a/docs/knowledge-base/examples/listbox/listbox-keyboard-navigation/app.jsx
+++ /dev/null
@@ -1,187 +0,0 @@
-import * as React from 'react';
-import {
- ListBox,
- ListBoxToolbar,
- processListBoxData,
- processListBoxDragAndDrop,
-} from '@progress/kendo-react-listbox';
-const data = [
- {
- name: 'Steven White',
- selected: true,
- },
- {
- name: 'Nancy King',
- selected: false,
- },
- {
- name: 'Nancy Davolio',
- selected: false,
- },
- {
- name: 'Robert Davolio',
- selected: false,
- },
- {
- name: 'Michael Leverling',
- selected: false,
- },
- {
- name: 'Andrew Callahan',
- selected: false,
- },
- {
- name: 'Michael Suyama',
- selected: false,
- },
-];
-const SELECTED_FIELD = 'selected';
-const App = () => {
- const [state, setState] = React.useState({
- employees: data,
- developers: [],
- draggedItem: {},
- });
- const [selectedIndex, setSelectedIndex] = React.useState(0);
- const updateState = (selectedIndex, newData) => {
- setSelectedIndex(selectedIndex);
- setState({ ...state, employees: newData });
- };
- const keyChange = (e) => {
- let newSelectedIndex;
- const newData = state.employees;
- if (e.key === 'ArrowDown') {
- newSelectedIndex = selectedIndex + 1;
- if (newSelectedIndex < newData.length) {
- newData[newSelectedIndex - 1].selected = false;
- newData[newSelectedIndex].selected = true;
- updateState(newSelectedIndex, newData);
- }
- }
- if (e.key === 'ArrowUp') {
- newSelectedIndex = selectedIndex - 1;
- if (newSelectedIndex >= 0) {
- if (newSelectedIndex + 1 < newData.length) {
- newData[newSelectedIndex + 1].selected = false;
- }
- newData[newSelectedIndex].selected = true;
- updateState(newSelectedIndex, newData);
- }
- }
- if (e.key === 'Enter') {
- handleToolBarClick('', 'transferTo');
- newData[selectedIndex].selected = false;
- }
- };
-
- const handleItemClick = (event, data, connectedData) => {
- setState({
- ...state,
- [data]: state[data].map((item, index) => {
- if (item.name === event.dataItem.name) {
- setSelectedIndex(index);
- item[SELECTED_FIELD] = !item[SELECTED_FIELD];
- } else if (!event.nativeEvent.ctrlKey) {
- item[SELECTED_FIELD] = false;
- }
- return item;
- }),
- [connectedData]: state[connectedData].map((item) => {
- item[SELECTED_FIELD] = false;
- return item;
- }),
- });
- };
- const handleToolBarClick = (e, tool) => {
- let toolName = e.toolName || tool;
- let result = processListBoxData(
- state.employees,
- state.developers,
- toolName,
- SELECTED_FIELD
- );
- setState({
- ...state,
- employees: result.listBoxOneData,
- developers: result.listBoxTwoData,
- });
- };
- const handleDragStart = (e) => {
- setState({
- ...state,
- draggedItem: e.dataItem,
- });
- };
- const handleDrop = (e) => {
- let result = processListBoxDragAndDrop(
- state.employees,
- state.developers,
- state.draggedItem,
- e.dataItem,
- 'name'
- );
- setState({
- ...state,
- employees: result.listBoxOneData,
- developers: result.listBoxTwoData,
- });
- };
- return (
-
-
-
-
Employees
-
- handleItemClick(e, 'employees', 'developers')}
- onDragStart={handleDragStart}
- onDrop={handleDrop}
- toolbar={() => {
- return (
-
- );
- }}
- />
-
-
-
-
Developers
- handleItemClick(e, 'developers', 'employees')}
- onDragStart={handleDragStart}
- onDrop={handleDrop}
- />
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/listbox/listbox-keyboard-navigation/main.jsx b/docs/knowledge-base/examples/listbox/listbox-keyboard-navigation/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/listbox/listbox-keyboard-navigation/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/listbox/show-drag-clue/app.jsx b/docs/knowledge-base/examples/listbox/show-drag-clue/app.jsx
deleted file mode 100644
index b9842cd4..00000000
--- a/docs/knowledge-base/examples/listbox/show-drag-clue/app.jsx
+++ /dev/null
@@ -1,99 +0,0 @@
-import * as React from 'react';
-import {
- ListBox,
- processListBoxDragAndDrop,
-} from '@progress/kendo-react-listbox';
-import products from './products.json';
-import './styles.css';
-
-const clearClue = () => {
- const clueEl = document.querySelector('.listbox-clue');
- if (clueEl) {
- clueEl.className = clueEl.className.replace(' listbox-clue', '');
- }
- const clueEl2 = document.querySelector('.listbox-clue-top');
- if (clueEl2) {
- clueEl2.className = clueEl2.className.replace(' listbox-clue-top', '');
- }
-};
-const App = () => {
- const [state, setState] = React.useState({
- notDiscontinued: products.filter((product) => !product.Discontinued),
- discontinued: products.filter((product) => product.Discontinued),
- draggedItem: {},
- });
- const handleDragStart = (e) => {
- setState({
- ...state,
- draggedItem: e.dataItem,
- targetID: e.target.props.id,
- });
- };
- const handleDrop = (e) => {
- clearClue();
- let result = processListBoxDragAndDrop(
- state.notDiscontinued,
- state.discontinued,
- state.draggedItem,
- e.dataItem,
- 'ProductID'
- );
- setState({
- ...state,
- notDiscontinued: result.listBoxOneData,
- discontinued: result.listBoxTwoData,
- });
- };
- const handleDragOver = (e) => {
- clearClue();
- const target = e.syntheticEvent.currentTarget;
- let indexDrag = e.target.props.data.indexOf(state.draggedItem);
- let indexTarget = e.target.props.data.indexOf(e.dataItem);
- if (e.target.props.id == state.targetID && indexDrag > indexTarget) {
- target.className = target.className + ' listbox-clue-top';
- } else {
- target.className = target.className + ' listbox-clue';
- }
- };
-
- return (
-
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/listbox/show-drag-clue/main.jsx b/docs/knowledge-base/examples/listbox/show-drag-clue/main.jsx
deleted file mode 100644
index 094c6a5d..00000000
--- a/docs/knowledge-base/examples/listbox/show-drag-clue/main.jsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render(
-
-
-
- );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/listbox/show-drag-clue/products.json b/docs/knowledge-base/examples/listbox/show-drag-clue/products.json
deleted file mode 100644
index 4df1c408..00000000
--- a/docs/knowledge-base/examples/listbox/show-drag-clue/products.json
+++ /dev/null
@@ -1,1233 +0,0 @@
-[{
- "ProductID" : 1,
- "ProductName" : "Chai",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "10 boxes x 20 bags",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 2,
- "ProductName" : "Chang",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 3,
- "ProductName" : "Aniseed Syrup",
- "SupplierID" : 1,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 550 ml bottles",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 13,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 4,
- "ProductName" : "Chef Anton's Cajun Seasoning",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "48 - 6 oz jars",
- "UnitPrice" : 22.0000,
- "UnitsInStock" : 53,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 5,
- "ProductName" : "Chef Anton's Gumbo Mix",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "36 boxes",
- "UnitPrice" : 21.3500,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 6,
- "ProductName" : "Grandma's Boysenberry Spread",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 8 oz jars",
- "UnitPrice" : 25.0000,
- "UnitsInStock" : 120,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 7,
- "ProductName" : "Uncle Bob's Organic Dried Pears",
- "SupplierID" : 3,
- "CategoryID" : 7,
- "QuantityPerUnit" : "12 - 1 lb pkgs.",
- "UnitPrice" : 30.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 8,
- "ProductName" : "Northwoods Cranberry Sauce",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 12 oz jars",
- "UnitPrice" : 40.0000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 9,
- "ProductName" : "Mishi Kobe Niku",
- "SupplierID" : 4,
- "CategoryID" : 6,
- "QuantityPerUnit" : "18 - 500 g pkgs.",
- "UnitPrice" : 97.0000,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 10,
- "ProductName" : "Ikura",
- "SupplierID" : 4,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 200 ml jars",
- "UnitPrice" : 31.0000,
- "UnitsInStock" : 31,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 11,
- "ProductName" : "Queso Cabrales",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "1 kg pkg.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 30,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 12,
- "ProductName" : "Queso Manchego La Pastora",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 86,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 13,
- "ProductName" : "Konbu",
- "SupplierID" : 6,
- "CategoryID" : 8,
- "QuantityPerUnit" : "2 kg box",
- "UnitPrice" : 6.0000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 14,
- "ProductName" : "Tofu",
- "SupplierID" : 6,
- "CategoryID" : 7,
- "QuantityPerUnit" : "40 - 100 g pkgs.",
- "UnitPrice" : 23.2500,
- "UnitsInStock" : 35,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 15,
- "ProductName" : "Genen Shouyu",
- "SupplierID" : 6,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 250 ml bottles",
- "UnitPrice" : 15.5000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 16,
- "ProductName" : "Pavlova",
- "SupplierID" : 7,
- "CategoryID" : 3,
- "QuantityPerUnit" : "32 - 500 g boxes",
- "UnitPrice" : 17.4500,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 17,
- "ProductName" : "Alice Mutton",
- "SupplierID" : 7,
- "CategoryID" : 6,
- "QuantityPerUnit" : "20 - 1 kg tins",
- "UnitPrice" : 39.0000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 18,
- "ProductName" : "Carnarvon Tigers",
- "SupplierID" : 7,
- "CategoryID" : 8,
- "QuantityPerUnit" : "16 kg pkg.",
- "UnitPrice" : 62.5000,
- "UnitsInStock" : 42,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 19,
- "ProductName" : "Teatime Chocolate Biscuits",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 12 pieces",
- "UnitPrice" : 9.2000,
- "UnitsInStock" : 25,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 20,
- "ProductName" : "Sir Rodney's Marmalade",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "30 gift boxes",
- "UnitPrice" : 81.0000,
- "UnitsInStock" : 40,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 21,
- "ProductName" : "Sir Rodney's Scones",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 pkgs. x 4 pieces",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 3,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 22,
- "ProductName" : "Gustaf's Knäckebröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 500 g pkgs.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 104,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 23,
- "ProductName" : "Tunnbröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "12 - 250 g pkgs.",
- "UnitPrice" : 9.0000,
- "UnitsInStock" : 61,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 24,
- "ProductName" : "Guaraná Fantástica",
- "SupplierID" : 10,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 355 ml cans",
- "UnitPrice" : 4.5000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 25,
- "ProductName" : "NuNuCa Nuß-Nougat-Creme",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "20 - 450 g glasses",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 26,
- "ProductName" : "Gumbär Gummibärchen",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 250 g bags",
- "UnitPrice" : 31.2300,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 27,
- "ProductName" : "Schoggi Schokolade",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 100 g pieces",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 49,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 28,
- "ProductName" : "Rössle Sauerkraut",
- "SupplierID" : 12,
- "CategoryID" : 7,
- "QuantityPerUnit" : "25 - 825 g cans",
- "UnitPrice" : 45.6000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 29,
- "ProductName" : "Thüringer Rostbratwurst",
- "SupplierID" : 12,
- "CategoryID" : 6,
- "QuantityPerUnit" : "50 bags x 30 sausgs.",
- "UnitPrice" : 123.7900,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 30,
- "ProductName" : "Nord-Ost Matjeshering",
- "SupplierID" : 13,
- "CategoryID" : 8,
- "QuantityPerUnit" : "10 - 200 g glasses",
- "UnitPrice" : 25.8900,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 31,
- "ProductName" : "Gorgonzola Telino",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "12 - 100 g pkgs",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 32,
- "ProductName" : "Mascarpone Fabioli",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 32.0000,
- "UnitsInStock" : 9,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 33,
- "ProductName" : "Geitost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "500 g",
- "UnitPrice" : 2.5000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 34,
- "ProductName" : "Sasquatch Ale",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 111,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 35,
- "ProductName" : "Steeleye Stout",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 36,
- "ProductName" : "Inlagd Sill",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 250 g jars",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 37,
- "ProductName" : "Gravad lax",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 500 g pkgs.",
- "UnitPrice" : 26.0000,
- "UnitsInStock" : 11,
- "UnitsOnOrder" : 50,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 38,
- "ProductName" : "Côte de Blaye",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 75 cl bottles",
- "UnitPrice" : 263.5000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 39,
- "ProductName" : "Chartreuse verte",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "750 cc per bottle",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 69,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 40,
- "ProductName" : "Boston Crab Meat",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 4 oz tins",
- "UnitPrice" : 18.4000,
- "UnitsInStock" : 123,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 41,
- "ProductName" : "Jack's New England Clam Chowder",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 12 oz cans",
- "UnitPrice" : 9.6500,
- "UnitsInStock" : 85,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 42,
- "ProductName" : "Singaporean Hokkien Fried Mee",
- "SupplierID" : 20,
- "CategoryID" : 5,
- "QuantityPerUnit" : "32 - 1 kg pkgs.",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 43,
- "ProductName" : "Ipoh Coffee",
- "SupplierID" : 20,
- "CategoryID" : 1,
- "QuantityPerUnit" : "16 - 500 g tins",
- "UnitPrice" : 46.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 44,
- "ProductName" : "Gula Malacca",
- "SupplierID" : 20,
- "CategoryID" : 2,
- "QuantityPerUnit" : "20 - 2 kg bags",
- "UnitPrice" : 19.4500,
- "UnitsInStock" : 27,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 45,
- "ProductName" : "Rogede sild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "1k pkg.",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 5,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 46,
- "ProductName" : "Spegesild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "4 - 450 g glasses",
- "UnitPrice" : 12.0000,
- "UnitsInStock" : 95,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 47,
- "ProductName" : "Zaanse koeken",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 - 4 oz boxes",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 48,
- "ProductName" : "Chocolade",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 pkgs.",
- "UnitPrice" : 12.7500,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 49,
- "ProductName" : "Maxilaku",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 - 50 g pkgs.",
- "UnitPrice" : 20.0000,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 60,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 50,
- "ProductName" : "Valkoinen suklaa",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "12 - 100 g bars",
- "UnitPrice" : 16.2500,
- "UnitsInStock" : 65,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 51,
- "ProductName" : "Manjimup Dried Apples",
- "SupplierID" : 24,
- "CategoryID" : 7,
- "QuantityPerUnit" : "50 - 300 g pkgs.",
- "UnitPrice" : 53.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 52,
- "ProductName" : "Filo Mix",
- "SupplierID" : 24,
- "CategoryID" : 5,
- "QuantityPerUnit" : "16 - 2 kg boxes",
- "UnitPrice" : 7.0000,
- "UnitsInStock" : 38,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 53,
- "ProductName" : "Perth Pasties",
- "SupplierID" : 24,
- "CategoryID" : 6,
- "QuantityPerUnit" : "48 pieces",
- "UnitPrice" : 32.8000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 54,
- "ProductName" : "Tourtière",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "16 pies",
- "UnitPrice" : 7.4500,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 55,
- "ProductName" : "Pâté chinois",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "24 boxes x 2 pies",
- "UnitPrice" : 24.0000,
- "UnitsInStock" : 115,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 56,
- "ProductName" : "Gnocchi di nonna Alice",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 57,
- "ProductName" : "Ravioli Angelo",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 19.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 58,
- "ProductName" : "Escargots de Bourgogne",
- "SupplierID" : 27,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 pieces",
- "UnitPrice" : 13.2500,
- "UnitsInStock" : 62,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 59,
- "ProductName" : "Raclette Courdavault",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 55.0000,
- "UnitsInStock" : 79,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 60,
- "ProductName" : "Camembert Pierrot",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "15 - 300 g rounds",
- "UnitPrice" : 34.0000,
- "UnitsInStock" : 19,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 61,
- "ProductName" : "Sirop d'érable",
- "SupplierID" : 29,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 500 ml bottles",
- "UnitPrice" : 28.5000,
- "UnitsInStock" : 113,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 62,
- "ProductName" : "Tarte au sucre",
- "SupplierID" : 29,
- "CategoryID" : 3,
- "QuantityPerUnit" : "48 pies",
- "UnitPrice" : 49.3000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 63,
- "ProductName" : "Vegie-spread",
- "SupplierID" : 7,
- "CategoryID" : 2,
- "QuantityPerUnit" : "15 - 625 g jars",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 64,
- "ProductName" : "Wimmers gute Semmelknödel",
- "SupplierID" : 12,
- "CategoryID" : 5,
- "QuantityPerUnit" : "20 bags x 4 pieces",
- "UnitPrice" : 33.2500,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 80,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 65,
- "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "32 - 8 oz bottles",
- "UnitPrice" : 21.0500,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 66,
- "ProductName" : "Louisiana Hot Spiced Okra",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 8 oz jars",
- "UnitPrice" : 17.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 100,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 67,
- "ProductName" : "Laughing Lumberjack Lager",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 52,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 68,
- "ProductName" : "Scottish Longbreads",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 8 pieces",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 69,
- "ProductName" : "Gudbrandsdalsost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 kg pkg.",
- "UnitPrice" : 36.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 70,
- "ProductName" : "Outback Lager",
- "SupplierID" : 7,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 355 ml bottles",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 71,
- "ProductName" : "Flotemysost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 21.5000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 72,
- "ProductName" : "Mozzarella di Giovanni",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 34.8000,
- "UnitsInStock" : 14,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 73,
- "ProductName" : "Röd Kaviar",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 150 g jars",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 101,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 74,
- "ProductName" : "Longlife Tofu",
- "SupplierID" : 4,
- "CategoryID" : 7,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 20,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 75,
- "ProductName" : "Rhönbräu Klosterbier",
- "SupplierID" : 12,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 0.5 l bottles",
- "UnitPrice" : 7.7500,
- "UnitsInStock" : 125,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 76,
- "ProductName" : "Lakkalikööri",
- "SupplierID" : 23,
- "CategoryID" : 1,
- "QuantityPerUnit" : "500 ml",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 57,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 77,
- "ProductName" : "Original Frankfurter grüne Soße",
- "SupplierID" : 12,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 boxes",
- "UnitPrice" : 13.0000,
- "UnitsInStock" : 32,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}]
diff --git a/docs/knowledge-base/examples/listbox/show-drag-clue/styles.css b/docs/knowledge-base/examples/listbox/show-drag-clue/styles.css
deleted file mode 100644
index 7e31a6ec..00000000
--- a/docs/knowledge-base/examples/listbox/show-drag-clue/styles.css
+++ /dev/null
@@ -1,7 +0,0 @@
-.listbox-clue {
- border-bottom: 1px solid red;
- }
- .listbox-clue-top {
- border-top: 1px solid red;
- }
-
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/listview/listview-grouping/app.jsx b/docs/knowledge-base/examples/listview/listview-grouping/app.jsx
deleted file mode 100644
index 125126b4..00000000
--- a/docs/knowledge-base/examples/listview/listview-grouping/app.jsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import * as React from 'react';
-import { ListView } from '@progress/kendo-react-listview';
-import products from './products.json';
-import { groupBy } from '@progress/kendo-data-query';
-
-const MyItemRender = (props) => {
- let groupItemItem = props.dataItem;
- let items = groupItemItem.items;
- let groupName = groupItemItem.value;
- return (
-
-
- {"= " + groupName}
-
-
- {items.map((item) => {
- return (
-
- {item.ProductName}
-
- );
- })}
-
-
- );
-};
-const App = () => {
- return (
-
-
-
- );
-};
-
-export default App;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/listview/listview-grouping/main.jsx b/docs/knowledge-base/examples/listview/listview-grouping/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/listview/listview-grouping/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/listview/listview-grouping/products.json b/docs/knowledge-base/examples/listview/listview-grouping/products.json
deleted file mode 100644
index 99b253d6..00000000
--- a/docs/knowledge-base/examples/listview/listview-grouping/products.json
+++ /dev/null
@@ -1,1234 +0,0 @@
-
-[{
- "ProductID" : 1,
- "ProductName" : "Chai",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "10 boxes x 20 bags",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 2,
- "ProductName" : "Chang",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 3,
- "ProductName" : "Aniseed Syrup",
- "SupplierID" : 1,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 550 ml bottles",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 13,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 4,
- "ProductName" : "Chef Anton's Cajun Seasoning",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "48 - 6 oz jars",
- "UnitPrice" : 22.0000,
- "UnitsInStock" : 53,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 5,
- "ProductName" : "Chef Anton's Gumbo Mix",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "36 boxes",
- "UnitPrice" : 21.3500,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 6,
- "ProductName" : "Grandma's Boysenberry Spread",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 8 oz jars",
- "UnitPrice" : 25.0000,
- "UnitsInStock" : 120,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 7,
- "ProductName" : "Uncle Bob's Organic Dried Pears",
- "SupplierID" : 3,
- "CategoryID" : 7,
- "QuantityPerUnit" : "12 - 1 lb pkgs.",
- "UnitPrice" : 30.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 8,
- "ProductName" : "Northwoods Cranberry Sauce",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 12 oz jars",
- "UnitPrice" : 40.0000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 9,
- "ProductName" : "Mishi Kobe Niku",
- "SupplierID" : 4,
- "CategoryID" : 6,
- "QuantityPerUnit" : "18 - 500 g pkgs.",
- "UnitPrice" : 97.0000,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 10,
- "ProductName" : "Ikura",
- "SupplierID" : 4,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 200 ml jars",
- "UnitPrice" : 31.0000,
- "UnitsInStock" : 31,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 11,
- "ProductName" : "Queso Cabrales",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "1 kg pkg.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 30,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 12,
- "ProductName" : "Queso Manchego La Pastora",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 86,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 13,
- "ProductName" : "Konbu",
- "SupplierID" : 6,
- "CategoryID" : 8,
- "QuantityPerUnit" : "2 kg box",
- "UnitPrice" : 6.0000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 14,
- "ProductName" : "Tofu",
- "SupplierID" : 6,
- "CategoryID" : 7,
- "QuantityPerUnit" : "40 - 100 g pkgs.",
- "UnitPrice" : 23.2500,
- "UnitsInStock" : 35,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 15,
- "ProductName" : "Genen Shouyu",
- "SupplierID" : 6,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 250 ml bottles",
- "UnitPrice" : 15.5000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 16,
- "ProductName" : "Pavlova",
- "SupplierID" : 7,
- "CategoryID" : 3,
- "QuantityPerUnit" : "32 - 500 g boxes",
- "UnitPrice" : 17.4500,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 17,
- "ProductName" : "Alice Mutton",
- "SupplierID" : 7,
- "CategoryID" : 6,
- "QuantityPerUnit" : "20 - 1 kg tins",
- "UnitPrice" : 39.0000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 18,
- "ProductName" : "Carnarvon Tigers",
- "SupplierID" : 7,
- "CategoryID" : 8,
- "QuantityPerUnit" : "16 kg pkg.",
- "UnitPrice" : 62.5000,
- "UnitsInStock" : 42,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 19,
- "ProductName" : "Teatime Chocolate Biscuits",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 12 pieces",
- "UnitPrice" : 9.2000,
- "UnitsInStock" : 25,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 20,
- "ProductName" : "Sir Rodney's Marmalade",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "30 gift boxes",
- "UnitPrice" : 81.0000,
- "UnitsInStock" : 40,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 21,
- "ProductName" : "Sir Rodney's Scones",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 pkgs. x 4 pieces",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 3,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 22,
- "ProductName" : "Gustaf's Knäckebröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 500 g pkgs.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 104,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 23,
- "ProductName" : "Tunnbröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "12 - 250 g pkgs.",
- "UnitPrice" : 9.0000,
- "UnitsInStock" : 61,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 24,
- "ProductName" : "Guaraná Fantástica",
- "SupplierID" : 10,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 355 ml cans",
- "UnitPrice" : 4.5000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 25,
- "ProductName" : "NuNuCa Nuß-Nougat-Creme",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "20 - 450 g glasses",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 26,
- "ProductName" : "Gumbär Gummibärchen",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 250 g bags",
- "UnitPrice" : 31.2300,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 27,
- "ProductName" : "Schoggi Schokolade",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 100 g pieces",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 49,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 28,
- "ProductName" : "Rössle Sauerkraut",
- "SupplierID" : 12,
- "CategoryID" : 7,
- "QuantityPerUnit" : "25 - 825 g cans",
- "UnitPrice" : 45.6000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 29,
- "ProductName" : "Thüringer Rostbratwurst",
- "SupplierID" : 12,
- "CategoryID" : 6,
- "QuantityPerUnit" : "50 bags x 30 sausgs.",
- "UnitPrice" : 123.7900,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 30,
- "ProductName" : "Nord-Ost Matjeshering",
- "SupplierID" : 13,
- "CategoryID" : 8,
- "QuantityPerUnit" : "10 - 200 g glasses",
- "UnitPrice" : 25.8900,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 31,
- "ProductName" : "Gorgonzola Telino",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "12 - 100 g pkgs",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 32,
- "ProductName" : "Mascarpone Fabioli",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 32.0000,
- "UnitsInStock" : 9,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 33,
- "ProductName" : "Geitost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "500 g",
- "UnitPrice" : 2.5000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 34,
- "ProductName" : "Sasquatch Ale",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 111,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 35,
- "ProductName" : "Steeleye Stout",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 36,
- "ProductName" : "Inlagd Sill",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 250 g jars",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 37,
- "ProductName" : "Gravad lax",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 500 g pkgs.",
- "UnitPrice" : 26.0000,
- "UnitsInStock" : 11,
- "UnitsOnOrder" : 50,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 38,
- "ProductName" : "Côte de Blaye",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 75 cl bottles",
- "UnitPrice" : 263.5000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 39,
- "ProductName" : "Chartreuse verte",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "750 cc per bottle",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 69,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 40,
- "ProductName" : "Boston Crab Meat",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 4 oz tins",
- "UnitPrice" : 18.4000,
- "UnitsInStock" : 123,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 41,
- "ProductName" : "Jack's New England Clam Chowder",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 12 oz cans",
- "UnitPrice" : 9.6500,
- "UnitsInStock" : 85,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 42,
- "ProductName" : "Singaporean Hokkien Fried Mee",
- "SupplierID" : 20,
- "CategoryID" : 5,
- "QuantityPerUnit" : "32 - 1 kg pkgs.",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 43,
- "ProductName" : "Ipoh Coffee",
- "SupplierID" : 20,
- "CategoryID" : 1,
- "QuantityPerUnit" : "16 - 500 g tins",
- "UnitPrice" : 46.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 44,
- "ProductName" : "Gula Malacca",
- "SupplierID" : 20,
- "CategoryID" : 2,
- "QuantityPerUnit" : "20 - 2 kg bags",
- "UnitPrice" : 19.4500,
- "UnitsInStock" : 27,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 45,
- "ProductName" : "Rogede sild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "1k pkg.",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 5,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 46,
- "ProductName" : "Spegesild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "4 - 450 g glasses",
- "UnitPrice" : 12.0000,
- "UnitsInStock" : 95,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 47,
- "ProductName" : "Zaanse koeken",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 - 4 oz boxes",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 48,
- "ProductName" : "Chocolade",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 pkgs.",
- "UnitPrice" : 12.7500,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 49,
- "ProductName" : "Maxilaku",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 - 50 g pkgs.",
- "UnitPrice" : 20.0000,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 60,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 50,
- "ProductName" : "Valkoinen suklaa",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "12 - 100 g bars",
- "UnitPrice" : 16.2500,
- "UnitsInStock" : 65,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 51,
- "ProductName" : "Manjimup Dried Apples",
- "SupplierID" : 24,
- "CategoryID" : 7,
- "QuantityPerUnit" : "50 - 300 g pkgs.",
- "UnitPrice" : 53.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 52,
- "ProductName" : "Filo Mix",
- "SupplierID" : 24,
- "CategoryID" : 5,
- "QuantityPerUnit" : "16 - 2 kg boxes",
- "UnitPrice" : 7.0000,
- "UnitsInStock" : 38,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 53,
- "ProductName" : "Perth Pasties",
- "SupplierID" : 24,
- "CategoryID" : 6,
- "QuantityPerUnit" : "48 pieces",
- "UnitPrice" : 32.8000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 54,
- "ProductName" : "Tourtière",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "16 pies",
- "UnitPrice" : 7.4500,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 55,
- "ProductName" : "Pâté chinois",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "24 boxes x 2 pies",
- "UnitPrice" : 24.0000,
- "UnitsInStock" : 115,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 56,
- "ProductName" : "Gnocchi di nonna Alice",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 57,
- "ProductName" : "Ravioli Angelo",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 19.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 58,
- "ProductName" : "Escargots de Bourgogne",
- "SupplierID" : 27,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 pieces",
- "UnitPrice" : 13.2500,
- "UnitsInStock" : 62,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 59,
- "ProductName" : "Raclette Courdavault",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 55.0000,
- "UnitsInStock" : 79,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 60,
- "ProductName" : "Camembert Pierrot",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "15 - 300 g rounds",
- "UnitPrice" : 34.0000,
- "UnitsInStock" : 19,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 61,
- "ProductName" : "Sirop d'érable",
- "SupplierID" : 29,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 500 ml bottles",
- "UnitPrice" : 28.5000,
- "UnitsInStock" : 113,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 62,
- "ProductName" : "Tarte au sucre",
- "SupplierID" : 29,
- "CategoryID" : 3,
- "QuantityPerUnit" : "48 pies",
- "UnitPrice" : 49.3000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 63,
- "ProductName" : "Vegie-spread",
- "SupplierID" : 7,
- "CategoryID" : 2,
- "QuantityPerUnit" : "15 - 625 g jars",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 64,
- "ProductName" : "Wimmers gute Semmelknödel",
- "SupplierID" : 12,
- "CategoryID" : 5,
- "QuantityPerUnit" : "20 bags x 4 pieces",
- "UnitPrice" : 33.2500,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 80,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 65,
- "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "32 - 8 oz bottles",
- "UnitPrice" : 21.0500,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 66,
- "ProductName" : "Louisiana Hot Spiced Okra",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 8 oz jars",
- "UnitPrice" : 17.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 100,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 67,
- "ProductName" : "Laughing Lumberjack Lager",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 52,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 68,
- "ProductName" : "Scottish Longbreads",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 8 pieces",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 69,
- "ProductName" : "Gudbrandsdalsost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 kg pkg.",
- "UnitPrice" : 36.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 70,
- "ProductName" : "Outback Lager",
- "SupplierID" : 7,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 355 ml bottles",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 71,
- "ProductName" : "Flotemysost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 21.5000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 72,
- "ProductName" : "Mozzarella di Giovanni",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 34.8000,
- "UnitsInStock" : 14,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 73,
- "ProductName" : "Röd Kaviar",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 150 g jars",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 101,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 74,
- "ProductName" : "Longlife Tofu",
- "SupplierID" : 4,
- "CategoryID" : 7,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 20,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 75,
- "ProductName" : "Rhönbräu Klosterbier",
- "SupplierID" : 12,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 0.5 l bottles",
- "UnitPrice" : 7.7500,
- "UnitsInStock" : 125,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 76,
- "ProductName" : "Lakkalikööri",
- "SupplierID" : 23,
- "CategoryID" : 1,
- "QuantityPerUnit" : "500 ml",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 57,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 77,
- "ProductName" : "Original Frankfurter grüne Soße",
- "SupplierID" : 12,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 boxes",
- "UnitPrice" : 13.0000,
- "UnitsInStock" : 32,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}]
diff --git a/docs/knowledge-base/examples/localization/use-variable-in-messages/Chooser.jsx b/docs/knowledge-base/examples/localization/use-variable-in-messages/Chooser.jsx
deleted file mode 100644
index c4bab2f8..00000000
--- a/docs/knowledge-base/examples/localization/use-variable-in-messages/Chooser.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-export const Chooser = props => {
- return
-
- {props.label}:
-
- {props.options.map((option, key) => {option} )}
-
-
-
;
-};
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/localization/use-variable-in-messages/Message.jsx b/docs/knowledge-base/examples/localization/use-variable-in-messages/Message.jsx
deleted file mode 100644
index cee5610b..00000000
--- a/docs/knowledge-base/examples/localization/use-variable-in-messages/Message.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-import { useLocalization } from '@progress/kendo-react-intl';
-export const Message = (props) => {
- const localization = useLocalization();
- return (
-
- {localization.toLanguageString(props.messageKey, props.defaultMessage)}
-
- );
-};
diff --git a/docs/knowledge-base/examples/localization/use-variable-in-messages/MyLocalizationProvider.jsx b/docs/knowledge-base/examples/localization/use-variable-in-messages/MyLocalizationProvider.jsx
deleted file mode 100644
index 9c175c2d..00000000
--- a/docs/knowledge-base/examples/localization/use-variable-in-messages/MyLocalizationProvider.jsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import {
- LocalizationProvider,
- LocalizationService,
- } from '@progress/kendo-react-intl';
-
- import { messages } from './messages';
-
- const fillTemplate = (templateString, templateVars) => {
- return new Function('return `' + templateString + '`;').call(templateVars);
- };
-
- export default class MyLocalizationProvider extends LocalizationProvider {
- constructor(language, contextParameters) {
- super(language, contextParameters);
- this.language = language;
- this.contextParameters = this.props.contextParameters;
- }
- getLocalizationService() {
- return new MyLocalizationService({
- language: this.props.language,
- contextParameters: this.props.contextParameters,
- });
- }
- }
-
- export class MyLocalizationService extends LocalizationService {
- constructor(props) {
- super(props);
- this.language = props.language;
- this.contextParameters = props.contextParameters;
- }
- toLanguageString(key, defaultValue) {
- if (
- this.language &&
- messages[this.language] &&
- messages[this.language].hasOwnProperty(key)
- ) {
- return fillTemplate(messages[this.language][key], this.contextParameters);
- } else {
- return fillTemplate(defaultValue, this.contextParameters);
- }
- }
- }
-
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/localization/use-variable-in-messages/app.jsx b/docs/knowledge-base/examples/localization/use-variable-in-messages/app.jsx
deleted file mode 100644
index d8774d3d..00000000
--- a/docs/knowledge-base/examples/localization/use-variable-in-messages/app.jsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import * as React from 'react';
-import { useLocalization, loadMessages } from '@progress/kendo-react-intl';
-import { Chooser } from './Chooser';
-import {
- messages,
- todaysMessages,
- yesterdaysMessageKey,
- tomorrowsMessageKey,
-} from './messages';
-import { Message } from './Message';
-//Extended LocalizationProvider for handling ${variable} syntax within messages
-import MyLocalizationProvider from './MyLocalizationProvider';
-
-const App = () => {
- //State variable that will be used within the messages
- const [userName, setUserName] = React.useState('some user name');
- const [language, setLanguage] = React.useState('en');
- const languages = ['en', 'es', 'bg'];
-
- const defaultMessages = {
- [yesterdaysMessageKey]: 'Yesterday was a good day!',
- [todaysMessages]:
- 'Today is a good day as well! Some count: ${this.userName}',
- [tomorrowsMessageKey]: 'Tomorrow will be even better!',
- };
-
- loadMessages(messages['es'], 'es');
- loadMessages(messages['bg'], 'bg');
-
- const handleChange = React.useCallback((event) => {
- setLanguage(event.target.value);
- }, []);
-
- return (
-
-
-
{
- setUserName('UserName' + Math.floor(Math.random() * 1000));
- }}
- >
- Change username
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/localization/use-variable-in-messages/main.jsx b/docs/knowledge-base/examples/localization/use-variable-in-messages/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/localization/use-variable-in-messages/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/localization/use-variable-in-messages/messages.js b/docs/knowledge-base/examples/localization/use-variable-in-messages/messages.js
deleted file mode 100644
index bb85fa69..00000000
--- a/docs/knowledge-base/examples/localization/use-variable-in-messages/messages.js
+++ /dev/null
@@ -1,15 +0,0 @@
-export const todaysMessages = 'today';
-export const yesterdaysMessageKey = 'yesterday';
-export const tomorrowsMessageKey = 'tomorrow';
-export const messages = {
- bg: {
- [yesterdaysMessageKey]: 'Вчера беше чудесен ден!',
- [todaysMessages]: 'Днес е страхотен ден също! ${this.userName}',
- [tomorrowsMessageKey]: 'Утре ще бъде още по-хубаво!',
- },
- es: {
- [yesterdaysMessageKey]: 'Ayer fue un buen dia!',
- [todaysMessages]: 'Hoy es un buen día también! ${this.userName}',
- [tomorrowsMessageKey]: 'Mañana será aún mejor!',
- },
-};
diff --git a/docs/knowledge-base/examples/map/add-shape-titles/app.tsx b/docs/knowledge-base/examples/map/add-shape-titles/app.tsx
deleted file mode 100644
index 4b7007c9..00000000
--- a/docs/knowledge-base/examples/map/add-shape-titles/app.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import * as React from 'react';
-import { Element, Surface, ShapeOptions, Text } from '@progress/kendo-drawing';
-import {
- Map,
- MapLayers,
- MapShapeLayer,
- MapTileLayer,
- ShapeCreatedEvent,
- TileUrlTemplateArgs
-} from '@progress/kendo-react-map';
-
-import shapes from './shapes.json';
-
-const center = [47.4599, -100.5908];
-const zoom = 6;
-
-const tileSubdomains = ['a', 'b', 'c'];
-const tileUrl = (e: TileUrlTemplateArgs) => `https://${e.subdomain}.tile.openstreetmap.org/${e.zoom}/${e.x}/${e.y}.png`;
-const attribution = '© OpenStreetMap contributors ';
-
-const shapeStyle: ShapeOptions = {
- fill: {
- opacity: 0.75
- }
-};
-
-const shapeCreated = (e: ShapeCreatedEvent) => {
- const title = e.dataItem.properties.abbrev;
- drawTitle(e.shape, title, e.layer.surface);
-}
-
-const drawTitle = (shape: Element, title: string, surface: Surface) => {
- // Calculate the shape bounding box.
- const bbox = shape.bbox();
- const center = bbox.center();
-
- // Create the label.
- const label = new Text(title, [0, 0]);
- const labelCenter = label.bbox().center();
-
- // Position the label.
- label.position([
- center.x - labelCenter.x,
- center.y - labelCenter.y
- ]);
-
- // Render the label on the layer surface.
- surface.draw(label);
-}
-
-const App = () => (
-
-
-
-
-
-
-);
-
-export default App;
diff --git a/docs/knowledge-base/examples/map/add-shape-titles/main.tsx b/docs/knowledge-base/examples/map/add-shape-titles/main.tsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/map/add-shape-titles/main.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/map/add-shape-titles/shapes.json b/docs/knowledge-base/examples/map/add-shape-titles/shapes.json
deleted file mode 100644
index 29a589ed..00000000
--- a/docs/knowledge-base/examples/map/add-shape-titles/shapes.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "type": "FeatureCollection",
- "features": [
- {
- "type": "Feature",
- "id": "USA-ND",
- "properties": {
- "name": "North Dakota",
- "abbrev": "ND"
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- -97.228743,
- 49.000239
- ],
- [
- -97.097296,
- 48.682577
- ],
- [
- -97.16302,
- 48.545653
- ],
- [
- -97.130158,
- 48.140359
- ],
- [
- -97.053481,
- 47.948667
- ],
- [
- -96.856311,
- 47.609096
- ],
- [
- -96.823449,
- 46.968294
- ],
- [
- -96.785111,
- 46.924479
- ],
- [
- -96.801542,
- 46.656109
- ],
- [
- -96.719387,
- 46.437031
- ],
- [
- -96.598895,
- 46.332969
- ],
- [
- -96.560556,
- 45.933153
- ],
- [
- -104.047534,
- 45.944106
- ],
- [
- -104.042057,
- 47.861036
- ],
- [
- -104.047534,
- 49.000239
- ],
- [
- -97.228743,
- 49.000239
- ]
- ]
- ]
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/map/custom-bubble-symbols/app.tsx b/docs/knowledge-base/examples/map/custom-bubble-symbols/app.tsx
deleted file mode 100644
index 032c6efc..00000000
--- a/docs/knowledge-base/examples/map/custom-bubble-symbols/app.tsx
+++ /dev/null
@@ -1,77 +0,0 @@
-import * as React from 'react';
-import { Path } from '@progress/kendo-drawing';
-import {
- Map,
- MapLayers,
- MapBubbleLayer,
- MapTileLayer,
- BubbleLayerSymbolArgs,
- TileUrlTemplateArgs
-} from '@progress/kendo-react-map';
-
-import urbanAreas from './urban-areas.json';
-
-const center = [40, 40];
-const zoom = 4;
-
-const tileSubdomains = ['a', 'b', 'c'];
-const tileUrl = (e: TileUrlTemplateArgs) => `https://${e.subdomain}.tile.openstreetmap.org/${e.zoom}/${e.x}/${e.y}.png`;
-const attribution = '© OpenStreetMap contributors ';
-
-const drawLine = (map: Map) => (args: BubbleLayerSymbolArgs) => {
- // Bubble location
- const location = args.location;
-
- // Find locations 100km west and east of center.
- // Actual distance can be bound to args.dataItem fields
- const l1 = location.destination(100000, 270);
- const l2 = location.destination(100000, 90);
-
- // Get the view (screen) coordinates for the locations.
- const p1 = map.locationToView(l1);
- const p2 = map.locationToView(l2);
-
- // Draw the lines.
- const path = new Path({
- stroke: {
- width: 2,
- color: 'red'
- }
- });
-
- path.moveTo(p1).lineTo(p2);
-
- return path;
-};
-
-const App = () => {
- const map = React.useRef(null);
- const lineSymbol = (args: BubbleLayerSymbolArgs) => {
- return drawLine(map.current)(args);
- };
-
- return (
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/map/custom-bubble-symbols/main.tsx b/docs/knowledge-base/examples/map/custom-bubble-symbols/main.tsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/map/custom-bubble-symbols/main.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/map/custom-bubble-symbols/urban-areas.json b/docs/knowledge-base/examples/map/custom-bubble-symbols/urban-areas.json
deleted file mode 100644
index 1d6f1031..00000000
--- a/docs/knowledge-base/examples/map/custom-bubble-symbols/urban-areas.json
+++ /dev/null
@@ -1,15343 +0,0 @@
-[
- {
- "City": "Sofia",
- "Country": "Bulgaria",
- "Country_ISO3": "BGR",
- "Pop1950": 520,
- "Pop1955": 620,
- "Pop1960": 710,
- "Pop1965": 810,
- "Pop1970": 890,
- "Pop1975": 980,
- "Pop1980": 1070,
- "Pop1985": 1180,
- "Pop1990": 1190,
- "Pop1995": 1170,
- "Pop2000": 1130,
- "Pop2005": 1170,
- "Pop2010": 1180,
- "Pop2015": 1210,
- "Pop2020": 1230,
- "Pop2025": 1240,
- "Pop2050": 1236,
- "Location": [
- 42.7,
- 23.33
- ]
- },
- {
- "City": "Mandalay",
- "Country": "Myanmar",
- "Country_ISO3": "MMR",
- "Pop1950": 170,
- "Pop1955": 200,
- "Pop1960": 250,
- "Pop1965": 310,
- "Pop1970": 370,
- "Pop1975": 440,
- "Pop1980": 500,
- "Pop1985": 560,
- "Pop1990": 640,
- "Pop1995": 720,
- "Pop2000": 810,
- "Pop2005": 920,
- "Pop2010": 960,
- "Pop2015": 1030,
- "Pop2020": 1170,
- "Pop2025": 1310,
- "Pop2050": 1446,
- "Location": [
- 21.97,
- 96.08
- ]
- },
- {
- "City": "Nay Pyi Taw",
- "Country": "Myanmar",
- "Country_ISO3": "MMR",
- "Pop1950": 0,
- "Pop1955": 0,
- "Pop1960": 0,
- "Pop1965": 0,
- "Pop1970": 0,
- "Pop1975": 0,
- "Pop1980": 0,
- "Pop1985": 0,
- "Pop1990": 0,
- "Pop1995": 0,
- "Pop2000": 0,
- "Pop2005": 60,
- "Pop2010": 930,
- "Pop2015": 1020,
- "Pop2020": 1180,
- "Pop2025": 1320,
- "Pop2050": 1461,
- "Location": [
- 19.75,
- 96.1
- ]
- },
- {
- "City": "Yangon",
- "Country": "Myanmar",
- "Country_ISO3": "MMR",
- "Pop1950": 1300,
- "Pop1955": 1440,
- "Pop1960": 1590,
- "Pop1965": 1760,
- "Pop1970": 1950,
- "Pop1975": 2150,
- "Pop1980": 2380,
- "Pop1985": 2630,
- "Pop1990": 2910,
- "Pop1995": 3210,
- "Pop2000": 3550,
- "Pop2005": 3930,
- "Pop2010": 4090,
- "Pop2015": 4350,
- "Pop2020": 4840,
- "Pop2025": 5360,
- "Pop2050": 5869,
- "Location": [
- 16.87,
- 96.12
- ]
- },
- {
- "City": "Minsk",
- "Country": "Belarus",
- "Country_ISO3": "BLR",
- "Pop1950": 280,
- "Pop1955": 410,
- "Pop1960": 550,
- "Pop1965": 720,
- "Pop1970": 930,
- "Pop1975": 1120,
- "Pop1980": 1320,
- "Pop1985": 1470,
- "Pop1990": 1610,
- "Pop1995": 1650,
- "Pop2000": 1700,
- "Pop2005": 1780,
- "Pop2010": 1800,
- "Pop2015": 1850,
- "Pop2020": 1880,
- "Pop2025": 1880,
- "Pop2050": 1883,
- "Location": [
- 53.89,
- 27.57
- ]
- },
- {
- "City": "Phnum Pénh",
- "Country": "Cambodia",
- "Country_ISO3": "KHM",
- "Pop1950": 360,
- "Pop1955": 380,
- "Pop1960": 390,
- "Pop1965": 440,
- "Pop1970": 900,
- "Pop1975": 100,
- "Pop1980": 240,
- "Pop1985": 430,
- "Pop1990": 620,
- "Pop1995": 840,
- "Pop2000": 1160,
- "Pop2005": 1360,
- "Pop2010": 1470,
- "Pop2015": 1650,
- "Pop2020": 2030,
- "Pop2025": 2460,
- "Pop2050": 2911,
- "Location": [
- 11.56,
- 104.91
- ]
- },
- {
- "City": "El Djazaïr",
- "Country": "Algeria",
- "Country_ISO3": "DZA",
- "Pop1950": 520,
- "Pop1955": 620,
- "Pop1960": 870,
- "Pop1965": 1050,
- "Pop1970": 1250,
- "Pop1975": 1500,
- "Pop1980": 1620,
- "Pop1985": 1670,
- "Pop1990": 1910,
- "Pop1995": 2300,
- "Pop2000": 2750,
- "Pop2005": 3200,
- "Pop2010": 3350,
- "Pop2015": 3570,
- "Pop2020": 3920,
- "Pop2025": 4240,
- "Pop2050": 4499,
- "Location": [
- 36.78,
- 3.05
- ]
- },
- {
- "City": "Wahran",
- "Country": "Algeria",
- "Country_ISO3": "DZA",
- "Pop1950": 270,
- "Pop1955": 290,
- "Pop1960": 300,
- "Pop1965": 320,
- "Pop1970": 380,
- "Pop1975": 470,
- "Pop1980": 540,
- "Pop1985": 600,
- "Pop1990": 650,
- "Pop1995": 680,
- "Pop2000": 710,
- "Pop2005": 760,
- "Pop2010": 800,
- "Pop2015": 850,
- "Pop2020": 940,
- "Pop2025": 1030,
- "Pop2050": 1105,
- "Location": [
- 35.74,
- -0.52
- ]
- },
- {
- "City": "Douala",
- "Country": "Cameroon",
- "Country_ISO3": "CMR",
- "Pop1950": 100,
- "Pop1955": 120,
- "Pop1960": 150,
- "Pop1965": 200,
- "Pop1970": 300,
- "Pop1975": 430,
- "Pop1980": 570,
- "Pop1985": 740,
- "Pop1990": 930,
- "Pop1995": 1160,
- "Pop2000": 1430,
- "Pop2005": 1770,
- "Pop2010": 1910,
- "Pop2015": 2110,
- "Pop2020": 2420,
- "Pop2025": 2720,
- "Pop2050": 2996,
- "Location": [
- 4.13,
- 9.7
- ]
- },
- {
- "City": "Yaoundé",
- "Country": "Cameroon",
- "Country_ISO3": "CMR",
- "Pop1950": 30,
- "Pop1955": 50,
- "Pop1960": 80,
- "Pop1965": 110,
- "Pop1970": 180,
- "Pop1975": 290,
- "Pop1980": 420,
- "Pop1985": 580,
- "Pop1990": 750,
- "Pop1995": 950,
- "Pop2000": 1190,
- "Pop2005": 1490,
- "Pop2010": 1610,
- "Pop2015": 1790,
- "Pop2020": 2060,
- "Pop2025": 2310,
- "Pop2050": 2549,
- "Location": [
- 3.86,
- 11.51
- ]
- },
- {
- "City": "Calgary",
- "Country": "Canada",
- "Country_ISO3": "CAN",
- "Pop1950": 130,
- "Pop1955": 190,
- "Pop1960": 260,
- "Pop1965": 320,
- "Pop1970": 390,
- "Pop1975": 460,
- "Pop1980": 570,
- "Pop1985": 660,
- "Pop1990": 740,
- "Pop1995": 810,
- "Pop2000": 950,
- "Pop2005": 1060,
- "Pop2010": 1110,
- "Pop2015": 1180,
- "Pop2020": 1260,
- "Pop2025": 1300,
- "Pop2050": 1345,
- "Location": [
- 51.03,
- -114.04
- ]
- },
- {
- "City": "Edmonton",
- "Country": "Canada",
- "Country_ISO3": "CAN",
- "Pop1950": 160,
- "Pop1955": 230,
- "Pop1960": 320,
- "Pop1965": 390,
- "Pop1970": 480,
- "Pop1975": 540,
- "Pop1980": 620,
- "Pop1985": 760,
- "Pop1990": 830,
- "Pop1995": 860,
- "Pop2000": 920,
- "Pop2005": 1020,
- "Pop2010": 1060,
- "Pop2015": 1110,
- "Pop2020": 1170,
- "Pop2025": 1220,
- "Pop2050": 1256,
- "Location": [
- 53.55,
- -113.5
- ]
- },
- {
- "City": "Montréal",
- "Country": "Canada",
- "Country_ISO3": "CAN",
- "Pop1950": 1340,
- "Pop1955": 1650,
- "Pop1960": 2030,
- "Pop1965": 2370,
- "Pop1970": 2680,
- "Pop1975": 2790,
- "Pop1980": 2820,
- "Pop1985": 2900,
- "Pop1990": 3150,
- "Pop1995": 3300,
- "Pop2000": 3470,
- "Pop2005": 3600,
- "Pop2010": 3680,
- "Pop2015": 3780,
- "Pop2020": 3910,
- "Pop2025": 4010,
- "Pop2050": 4108,
- "Location": [
- 45.54,
- -73.65
- ]
- },
- {
- "City": "Ottawa-Gatineau",
- "Country": "Canada",
- "Country_ISO3": "CAN",
- "Pop1950": 280,
- "Pop1955": 340,
- "Pop1960": 420,
- "Pop1965": 480,
- "Pop1970": 580,
- "Pop1975": 680,
- "Pop1980": 730,
- "Pop1985": 800,
- "Pop1990": 920,
- "Pop1995": 990,
- "Pop2000": 1080,
- "Pop2005": 1120,
- "Pop2010": 1140,
- "Pop2015": 1180,
- "Pop2020": 1230,
- "Pop2025": 1270,
- "Pop2050": 1315,
- "Location": [
- 45.37,
- -75.65
- ]
- },
- {
- "City": "Toronto",
- "Country": "Canada",
- "Country_ISO3": "CAN",
- "Pop1950": 1070,
- "Pop1955": 1360,
- "Pop1960": 1740,
- "Pop1965": 2090,
- "Pop1970": 2540,
- "Pop1975": 2770,
- "Pop1980": 3010,
- "Pop1985": 3360,
- "Pop1990": 3810,
- "Pop1995": 4200,
- "Pop2000": 4610,
- "Pop2005": 5040,
- "Pop2010": 5210,
- "Pop2015": 5450,
- "Pop2020": 5690,
- "Pop2025": 5830,
- "Pop2050": 5946,
- "Location": [
- 43.72,
- -79.41
- ]
- },
- {
- "City": "Vancouver",
- "Country": "Canada",
- "Country_ISO3": "CAN",
- "Pop1950": 560,
- "Pop1955": 590,
- "Pop1960": 620,
- "Pop1965": 840,
- "Pop1970": 1040,
- "Pop1975": 1150,
- "Pop1980": 1250,
- "Pop1985": 1360,
- "Pop1990": 1560,
- "Pop1995": 1790,
- "Pop2000": 1960,
- "Pop2005": 2090,
- "Pop2010": 2150,
- "Pop2015": 2220,
- "Pop2020": 2310,
- "Pop2025": 2380,
- "Pop2050": 2444,
- "Location": [
- 49.27,
- -122.96
- ]
- },
- {
- "City": "N'Djaména",
- "Country": "Chad",
- "Country_ISO3": "TCD",
- "Pop1950": 20,
- "Pop1955": 40,
- "Pop1960": 70,
- "Pop1965": 110,
- "Pop1970": 160,
- "Pop1975": 230,
- "Pop1980": 320,
- "Pop1985": 390,
- "Pop1990": 480,
- "Pop1995": 580,
- "Pop2000": 710,
- "Pop2005": 900,
- "Pop2010": 990,
- "Pop2015": 1130,
- "Pop2020": 1400,
- "Pop2025": 1750,
- "Pop2050": 2172,
- "Location": [
- 12.1,
- 15.24
- ]
- },
- {
- "City": "Santiago",
- "Country": "Chile",
- "Country_ISO3": "CHL",
- "Pop1950": 1320,
- "Pop1955": 1620,
- "Pop1960": 1980,
- "Pop1965": 2290,
- "Pop1970": 2650,
- "Pop1975": 3140,
- "Pop1980": 3720,
- "Pop1985": 4200,
- "Pop1990": 4620,
- "Pop1995": 4960,
- "Pop2000": 5280,
- "Pop2005": 5600,
- "Pop2010": 5720,
- "Pop2015": 5880,
- "Pop2020": 6080,
- "Pop2025": 6220,
- "Pop2050": 6310,
- "Location": [
- -33.43,
- -70.65
- ]
- },
- {
- "City": "Valparaíso",
- "Country": "Chile",
- "Country_ISO3": "CHL",
- "Pop1950": 330,
- "Pop1955": 380,
- "Pop1960": 430,
- "Pop1965": 480,
- "Pop1970": 530,
- "Pop1975": 580,
- "Pop1980": 640,
- "Pop1985": 680,
- "Pop1990": 730,
- "Pop1995": 770,
- "Pop2000": 800,
- "Pop2005": 840,
- "Pop2010": 850,
- "Pop2015": 880,
- "Pop2020": 920,
- "Pop2025": 960,
- "Pop2050": 982,
- "Location": [
- -33.02,
- -71.55
- ]
- },
- {
- "City": "Anshan, Liaoning",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 480,
- "Pop1955": 600,
- "Pop1960": 750,
- "Pop1965": 920,
- "Pop1970": 1000,
- "Pop1975": 1080,
- "Pop1980": 1180,
- "Pop1985": 1300,
- "Pop1990": 1440,
- "Pop1995": 1500,
- "Pop2000": 1550,
- "Pop2005": 1610,
- "Pop2010": 1640,
- "Pop2015": 1700,
- "Pop2020": 1860,
- "Pop2025": 2030,
- "Pop2050": 2167,
- "Location": [
- 41.11,
- 122.97
- ]
- },
- {
- "City": "Anshun",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 190,
- "Pop1955": 210,
- "Pop1960": 240,
- "Pop1965": 260,
- "Pop1970": 300,
- "Pop1975": 330,
- "Pop1980": 370,
- "Pop1985": 470,
- "Pop1990": 660,
- "Pop1995": 710,
- "Pop2000": 760,
- "Pop2005": 820,
- "Pop2010": 850,
- "Pop2015": 900,
- "Pop2020": 990,
- "Pop2025": 1080,
- "Pop2050": 1164,
- "Location": [
- 26.25,
- 105.93
- ]
- },
- {
- "City": "Anyang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 110,
- "Pop1955": 140,
- "Pop1960": 180,
- "Pop1965": 220,
- "Pop1970": 280,
- "Pop1975": 360,
- "Pop1980": 460,
- "Pop1985": 540,
- "Pop1990": 620,
- "Pop1995": 690,
- "Pop2000": 760,
- "Pop2005": 850,
- "Pop2010": 890,
- "Pop2015": 950,
- "Pop2020": 1060,
- "Pop2025": 1160,
- "Pop2050": 1240,
- "Location": [
- 36.1,
- 114.33
- ]
- },
- {
- "City": "Baoding",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 180,
- "Pop1955": 210,
- "Pop1960": 250,
- "Pop1965": 290,
- "Pop1970": 340,
- "Pop1975": 400,
- "Pop1980": 470,
- "Pop1985": 540,
- "Pop1990": 600,
- "Pop1995": 730,
- "Pop2000": 890,
- "Pop2005": 1040,
- "Pop2010": 1110,
- "Pop2015": 1210,
- "Pop2020": 1360,
- "Pop2025": 1480,
- "Pop2050": 1586,
- "Location": [
- 38.85,
- 115.48
- ]
- },
- {
- "City": "Baotou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 530,
- "Pop1955": 590,
- "Pop1960": 660,
- "Pop1965": 740,
- "Pop1970": 820,
- "Pop1975": 920,
- "Pop1980": 1020,
- "Pop1985": 1130,
- "Pop1990": 1230,
- "Pop1995": 1430,
- "Pop2000": 1660,
- "Pop2005": 1920,
- "Pop2010": 2040,
- "Pop2015": 2210,
- "Pop2020": 2470,
- "Pop2025": 2690,
- "Pop2050": 2869,
- "Location": [
- 40.65,
- 109.8
- ]
- },
- {
- "City": "Beijing",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 4330,
- "Pop1955": 4630,
- "Pop1960": 4940,
- "Pop1965": 5280,
- "Pop1970": 5650,
- "Pop1975": 6030,
- "Pop1980": 6450,
- "Pop1985": 6890,
- "Pop1990": 7360,
- "Pop1995": 8490,
- "Pop2000": 9780,
- "Pop2005": 10720,
- "Pop2010": 11110,
- "Pop2015": 11740,
- "Pop2020": 12840,
- "Pop2025": 13810,
- "Pop2050": 14545,
- "Location": [
- 39.9,
- 116.38
- ]
- },
- {
- "City": "Bengbu",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 230,
- "Pop1955": 270,
- "Pop1960": 310,
- "Pop1965": 350,
- "Pop1970": 400,
- "Pop1975": 460,
- "Pop1980": 530,
- "Pop1985": 610,
- "Pop1990": 700,
- "Pop1995": 750,
- "Pop2000": 800,
- "Pop2005": 870,
- "Pop2010": 890,
- "Pop2015": 940,
- "Pop2020": 1040,
- "Pop2025": 1140,
- "Pop2050": 1225,
- "Location": [
- 32.93,
- 117.35
- ]
- },
- {
- "City": "Benxi",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 410,
- "Pop1955": 470,
- "Pop1960": 540,
- "Pop1965": 610,
- "Pop1970": 660,
- "Pop1975": 710,
- "Pop1980": 770,
- "Pop1985": 840,
- "Pop1990": 940,
- "Pop1995": 960,
- "Pop2000": 980,
- "Pop2005": 1000,
- "Pop2010": 1010,
- "Pop2015": 1050,
- "Pop2020": 1140,
- "Pop2025": 1250,
- "Pop2050": 1339,
- "Location": [
- 41.3,
- 123.77
- ]
- },
- {
- "City": "Changchun",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 760,
- "Pop1955": 920,
- "Pop1960": 1110,
- "Pop1965": 1310,
- "Pop1970": 1430,
- "Pop1975": 1560,
- "Pop1980": 1700,
- "Pop1985": 1910,
- "Pop1990": 2190,
- "Pop1995": 2450,
- "Pop2000": 2730,
- "Pop2005": 3050,
- "Pop2010": 3180,
- "Pop2015": 3400,
- "Pop2020": 3760,
- "Pop2025": 4080,
- "Pop2050": 4338,
- "Location": [
- 43.88,
- 125.31
- ]
- },
- {
- "City": "Changde",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 290,
- "Pop1955": 350,
- "Pop1960": 420,
- "Pop1965": 490,
- "Pop1970": 590,
- "Pop1975": 700,
- "Pop1980": 830,
- "Pop1985": 990,
- "Pop1990": 1180,
- "Pop1995": 1260,
- "Pop2000": 1340,
- "Pop2005": 1430,
- "Pop2010": 1470,
- "Pop2015": 1540,
- "Pop2020": 1700,
- "Pop2025": 1850,
- "Pop2050": 1979,
- "Location": [
- 29.03,
- 111.68
- ]
- },
- {
- "City": "Changsha, Hunan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 620,
- "Pop1955": 670,
- "Pop1960": 720,
- "Pop1965": 780,
- "Pop1970": 860,
- "Pop1975": 940,
- "Pop1980": 1040,
- "Pop1985": 1160,
- "Pop1990": 1330,
- "Pop1995": 1670,
- "Pop2000": 2090,
- "Pop2005": 2450,
- "Pop2010": 2600,
- "Pop2015": 2830,
- "Pop2020": 3170,
- "Pop2025": 3440,
- "Pop2050": 3663,
- "Location": [
- 28.09,
- 113
- ]
- },
- {
- "City": "Changzhou, Jiangsu",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 110,
- "Pop1955": 140,
- "Pop1960": 180,
- "Pop1965": 220,
- "Pop1970": 280,
- "Pop1975": 360,
- "Pop1980": 460,
- "Pop1985": 580,
- "Pop1990": 730,
- "Pop1995": 880,
- "Pop2000": 1070,
- "Pop2005": 1250,
- "Pop2010": 1330,
- "Pop2015": 1440,
- "Pop2020": 1620,
- "Pop2025": 1770,
- "Pop2050": 1894,
- "Location": [
- 31.78,
- 119.97
- ]
- },
- {
- "City": "Chengdu",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 770,
- "Pop1955": 920,
- "Pop1960": 1110,
- "Pop1965": 1330,
- "Pop1970": 1590,
- "Pop1975": 1910,
- "Pop1980": 2290,
- "Pop1985": 2640,
- "Pop1990": 2960,
- "Pop1995": 3400,
- "Pop2000": 3920,
- "Pop2005": 4060,
- "Pop2010": 4120,
- "Pop2015": 4270,
- "Pop2020": 4630,
- "Pop2025": 5010,
- "Pop2050": 5320,
- "Location": [
- 30.67,
- 104.07
- ]
- },
- {
- "City": "Chifeng",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 130,
- "Pop1955": 160,
- "Pop1960": 190,
- "Pop1965": 240,
- "Pop1970": 280,
- "Pop1975": 340,
- "Pop1980": 410,
- "Pop1985": 600,
- "Pop1990": 990,
- "Pop1995": 1060,
- "Pop2000": 1150,
- "Pop2005": 1240,
- "Pop2010": 1280,
- "Pop2015": 1350,
- "Pop2020": 1490,
- "Pop2025": 1620,
- "Pop2050": 1739,
- "Location": [
- 42.27,
- 118.95
- ]
- },
- {
- "City": "Chongqing",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 1680,
- "Pop1955": 1840,
- "Pop1960": 2010,
- "Pop1965": 2180,
- "Pop1970": 2310,
- "Pop1975": 2440,
- "Pop1980": 2580,
- "Pop1985": 2810,
- "Pop1990": 3120,
- "Pop1995": 4340,
- "Pop2000": 6040,
- "Pop2005": 6360,
- "Pop2010": 6460,
- "Pop2015": 6690,
- "Pop2020": 7250,
- "Pop2025": 7820,
- "Pop2050": 8275,
- "Location": [
- 29.54,
- 106.52
- ]
- },
- {
- "City": "Dalian",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 680,
- "Pop1955": 850,
- "Pop1960": 1060,
- "Pop1965": 1280,
- "Pop1970": 1340,
- "Pop1975": 1400,
- "Pop1980": 1460,
- "Pop1985": 1790,
- "Pop1990": 2470,
- "Pop1995": 2660,
- "Pop2000": 2860,
- "Pop2005": 3070,
- "Pop2010": 3170,
- "Pop2015": 3340,
- "Pop2020": 3660,
- "Pop2025": 3970,
- "Pop2050": 4221,
- "Location": [
- 39.03,
- 121.59
- ]
- },
- {
- "City": "Dandong",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 240,
- "Pop1955": 270,
- "Pop1960": 300,
- "Pop1965": 350,
- "Pop1970": 400,
- "Pop1975": 450,
- "Pop1980": 510,
- "Pop1985": 580,
- "Pop1990": 660,
- "Pop1995": 720,
- "Pop2000": 780,
- "Pop2005": 840,
- "Pop2010": 870,
- "Pop2015": 920,
- "Pop2020": 1020,
- "Pop2025": 1120,
- "Pop2050": 1198,
- "Location": [
- 40.11,
- 124.38
- ]
- },
- {
- "City": "Daqing",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 260,
- "Pop1955": 310,
- "Pop1960": 370,
- "Pop1965": 430,
- "Pop1970": 510,
- "Pop1975": 600,
- "Pop1980": 720,
- "Pop1985": 840,
- "Pop1990": 1000,
- "Pop1995": 1170,
- "Pop2000": 1370,
- "Pop2005": 1590,
- "Pop2010": 1690,
- "Pop2015": 1840,
- "Pop2020": 2070,
- "Pop2025": 2250,
- "Pop2050": 2404,
- "Location": [
- 46.58,
- 125
- ]
- },
- {
- "City": "Datong, Shanxi",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 620,
- "Pop1955": 660,
- "Pop1960": 710,
- "Pop1965": 760,
- "Pop1970": 820,
- "Pop1975": 880,
- "Pop1980": 940,
- "Pop1985": 1070,
- "Pop1990": 1280,
- "Pop1995": 1390,
- "Pop2000": 1520,
- "Pop2005": 1760,
- "Pop2010": 1870,
- "Pop2015": 2040,
- "Pop2020": 2280,
- "Pop2025": 2490,
- "Pop2050": 2653,
- "Location": [
- 40.06,
- 113.28
- ]
- },
- {
- "City": "Dongguan, Guangdong",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 380,
- "Pop1955": 450,
- "Pop1960": 540,
- "Pop1965": 640,
- "Pop1970": 760,
- "Pop1975": 900,
- "Pop1980": 1080,
- "Pop1985": 1340,
- "Pop1990": 1740,
- "Pop1995": 2560,
- "Pop2000": 3770,
- "Pop2005": 4320,
- "Pop2010": 4530,
- "Pop2015": 4850,
- "Pop2020": 5370,
- "Pop2025": 5810,
- "Pop2050": 6157,
- "Location": [
- 23.03,
- 113.71
- ]
- },
- {
- "City": "Foshan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 90,
- "Pop1955": 110,
- "Pop1960": 130,
- "Pop1965": 160,
- "Pop1970": 190,
- "Pop1975": 220,
- "Pop1980": 270,
- "Pop1985": 330,
- "Pop1990": 430,
- "Pop1995": 570,
- "Pop2000": 750,
- "Pop2005": 890,
- "Pop2010": 940,
- "Pop2015": 1030,
- "Pop2020": 1160,
- "Pop2025": 1260,
- "Pop2050": 1356,
- "Location": [
- 23.03,
- 113.71
- ]
- },
- {
- "City": "Fushun, Liaoning",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 630,
- "Pop1955": 730,
- "Pop1960": 830,
- "Pop1965": 940,
- "Pop1970": 1010,
- "Pop1975": 1080,
- "Pop1980": 1160,
- "Pop1985": 1260,
- "Pop1990": 1390,
- "Pop1995": 1410,
- "Pop2000": 1430,
- "Pop2005": 1460,
- "Pop2010": 1470,
- "Pop2015": 1520,
- "Pop2020": 1650,
- "Pop2025": 1800,
- "Pop2050": 1924,
- "Location": [
- 41.85,
- 123.9
- ]
- },
- {
- "City": "Fuxin",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 170,
- "Pop1955": 200,
- "Pop1960": 250,
- "Pop1965": 310,
- "Pop1970": 390,
- "Pop1975": 480,
- "Pop1980": 590,
- "Pop1985": 680,
- "Pop1990": 740,
- "Pop1995": 680,
- "Pop2000": 630,
- "Pop2005": 720,
- "Pop2010": 770,
- "Pop2015": 840,
- "Pop2020": 940,
- "Pop2025": 1040,
- "Pop2050": 1112,
- "Location": [
- 42.01,
- 121.65
- ]
- },
- {
- "City": "Fuyang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 50,
- "Pop1955": 60,
- "Pop1960": 70,
- "Pop1965": 90,
- "Pop1970": 110,
- "Pop1975": 130,
- "Pop1980": 160,
- "Pop1985": 190,
- "Pop1990": 230,
- "Pop1995": 380,
- "Pop2000": 610,
- "Pop2005": 730,
- "Pop2010": 770,
- "Pop2015": 840,
- "Pop2020": 950,
- "Pop2025": 1040,
- "Pop2050": 1114,
- "Location": [
- 30.05,
- 119.94
- ]
- },
- {
- "City": "Fuzhou, Fujian",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 490,
- "Pop1955": 600,
- "Pop1960": 730,
- "Pop1965": 870,
- "Pop1970": 940,
- "Pop1975": 1010,
- "Pop1980": 1100,
- "Pop1985": 1220,
- "Pop1990": 1400,
- "Pop1995": 1710,
- "Pop2000": 2100,
- "Pop2005": 2450,
- "Pop2010": 2610,
- "Pop2015": 2830,
- "Pop2020": 3170,
- "Pop2025": 3440,
- "Pop2050": 3666,
- "Location": [
- 26.07,
- 119.3
- ]
- },
- {
- "City": "Guangzhou, Guangdong",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 1490,
- "Pop1955": 1680,
- "Pop1960": 1880,
- "Pop1965": 2120,
- "Pop1970": 2380,
- "Pop1975": 2670,
- "Pop1980": 3000,
- "Pop1985": 3420,
- "Pop1990": 3920,
- "Pop1995": 5380,
- "Pop2000": 7390,
- "Pop2005": 8420,
- "Pop2010": 8830,
- "Pop2015": 9450,
- "Pop2020": 10410,
- "Pop2025": 11220,
- "Pop2050": 11835,
- "Location": [
- 23.09,
- 113.29
- ]
- },
- {
- "City": "Guilin",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 150,
- "Pop1955": 180,
- "Pop1960": 210,
- "Pop1965": 250,
- "Pop1970": 290,
- "Pop1975": 340,
- "Pop1980": 400,
- "Pop1985": 470,
- "Pop1990": 560,
- "Pop1995": 670,
- "Pop2000": 800,
- "Pop2005": 930,
- "Pop2010": 990,
- "Pop2015": 1080,
- "Pop2020": 1210,
- "Pop2025": 1320,
- "Pop2050": 1418,
- "Location": [
- 25.27,
- 110.29
- ]
- },
- {
- "City": "Guiyang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 680,
- "Pop1955": 750,
- "Pop1960": 830,
- "Pop1965": 920,
- "Pop1970": 1030,
- "Pop1975": 1140,
- "Pop1980": 1260,
- "Pop1985": 1440,
- "Pop1990": 1660,
- "Pop1995": 2210,
- "Pop2000": 2930,
- "Pop2005": 3450,
- "Pop2010": 3660,
- "Pop2015": 3980,
- "Pop2020": 4440,
- "Pop2025": 4820,
- "Pop2050": 5114,
- "Location": [
- 26.57,
- 106.7
- ]
- },
- {
- "City": "Haerbin",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 1010,
- "Pop1955": 1280,
- "Pop1960": 1610,
- "Pop1965": 1970,
- "Pop1970": 2120,
- "Pop1975": 2290,
- "Pop1980": 2470,
- "Pop1985": 2700,
- "Pop1990": 2990,
- "Pop1995": 3210,
- "Pop2000": 3440,
- "Pop2005": 3570,
- "Pop2010": 3620,
- "Pop2015": 3750,
- "Pop2020": 4080,
- "Pop2025": 4420,
- "Pop2050": 4696,
- "Location": [
- 45.75,
- 126.62
- ]
- },
- {
- "City": "Handan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 380,
- "Pop1955": 440,
- "Pop1960": 500,
- "Pop1965": 580,
- "Pop1970": 670,
- "Pop1975": 770,
- "Pop1980": 890,
- "Pop1985": 990,
- "Pop1990": 1090,
- "Pop1995": 1200,
- "Pop2000": 1320,
- "Pop2005": 1540,
- "Pop2010": 1630,
- "Pop2015": 1780,
- "Pop2020": 1990,
- "Pop2025": 2170,
- "Pop2050": 2318,
- "Location": [
- 36.6,
- 114.48
- ]
- },
- {
- "City": "Hangzhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 640,
- "Pop1955": 740,
- "Pop1960": 860,
- "Pop1965": 980,
- "Pop1970": 1030,
- "Pop1975": 1100,
- "Pop1980": 1160,
- "Pop1985": 1290,
- "Pop1990": 1480,
- "Pop1995": 1890,
- "Pop2000": 2410,
- "Pop2005": 2830,
- "Pop2010": 3010,
- "Pop2015": 3270,
- "Pop2020": 3650,
- "Pop2025": 3970,
- "Pop2050": 4217,
- "Location": [
- 30.25,
- 120.16
- ]
- },
- {
- "City": "Hefei",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 260,
- "Pop1955": 310,
- "Pop1960": 370,
- "Pop1965": 440,
- "Pop1970": 530,
- "Pop1975": 640,
- "Pop1980": 760,
- "Pop1985": 920,
- "Pop1990": 1100,
- "Pop1995": 1340,
- "Pop2000": 1640,
- "Pop2005": 1920,
- "Pop2010": 2040,
- "Pop2015": 2210,
- "Pop2020": 2480,
- "Pop2025": 2700,
- "Pop2050": 2878,
- "Location": [
- 31.86,
- 117.27
- ]
- },
- {
- "City": "Hengyang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 170,
- "Pop1955": 200,
- "Pop1960": 240,
- "Pop1965": 290,
- "Pop1970": 340,
- "Pop1975": 410,
- "Pop1980": 490,
- "Pop1985": 590,
- "Pop1990": 700,
- "Pop1995": 780,
- "Pop2000": 870,
- "Pop2005": 970,
- "Pop2010": 1020,
- "Pop2015": 1090,
- "Pop2020": 1210,
- "Pop2025": 1320,
- "Pop2050": 1418,
- "Location": [
- 26.9,
- 112.6
- ]
- },
- {
- "City": "Heze",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 380,
- "Pop1955": 440,
- "Pop1960": 510,
- "Pop1965": 590,
- "Pop1970": 680,
- "Pop1975": 780,
- "Pop1980": 900,
- "Pop1985": 1040,
- "Pop1990": 1200,
- "Pop1995": 1240,
- "Pop2000": 1280,
- "Pop2005": 1320,
- "Pop2010": 1340,
- "Pop2015": 1390,
- "Pop2020": 1520,
- "Pop2025": 1660,
- "Pop2050": 1771,
- "Location": [
- 35.23,
- 115.43
- ]
- },
- {
- "City": "Hohhot",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 320,
- "Pop1955": 360,
- "Pop1960": 420,
- "Pop1965": 470,
- "Pop1970": 540,
- "Pop1975": 620,
- "Pop1980": 700,
- "Pop1985": 810,
- "Pop1990": 940,
- "Pop1995": 1140,
- "Pop2000": 1390,
- "Pop2005": 1620,
- "Pop2010": 1730,
- "Pop2015": 1880,
- "Pop2020": 2110,
- "Pop2025": 2300,
- "Pop2050": 2449,
- "Location": [
- 40.81,
- 111.64
- ]
- },
- {
- "City": "Huai'an",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 830,
- "Pop1955": 860,
- "Pop1960": 890,
- "Pop1965": 930,
- "Pop1970": 960,
- "Pop1975": 1000,
- "Pop1980": 1030,
- "Pop1985": 1070,
- "Pop1990": 1110,
- "Pop1995": 1150,
- "Pop2000": 1200,
- "Pop2005": 1240,
- "Pop2010": 1260,
- "Pop2015": 1320,
- "Pop2020": 1440,
- "Pop2025": 1570,
- "Pop2050": 1681,
- "Location": [
- 33.5,
- 119.13
- ]
- },
- {
- "City": "Huaibei",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 210,
- "Pop1955": 230,
- "Pop1960": 260,
- "Pop1965": 300,
- "Pop1970": 330,
- "Pop1975": 380,
- "Pop1980": 420,
- "Pop1985": 480,
- "Pop1990": 540,
- "Pop1995": 630,
- "Pop2000": 730,
- "Pop2005": 860,
- "Pop2010": 910,
- "Pop2015": 1000,
- "Pop2020": 1120,
- "Pop2025": 1230,
- "Pop2050": 1315,
- "Location": [
- 34.15,
- 116.65
- ]
- },
- {
- "City": "Huainan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 500,
- "Pop1955": 560,
- "Pop1960": 620,
- "Pop1965": 700,
- "Pop1970": 780,
- "Pop1975": 880,
- "Pop1980": 980,
- "Pop1985": 1100,
- "Pop1990": 1230,
- "Pop1995": 1290,
- "Pop2000": 1350,
- "Pop2005": 1420,
- "Pop2010": 1450,
- "Pop2015": 1520,
- "Pop2020": 1660,
- "Pop2025": 1810,
- "Pop2050": 1937,
- "Location": [
- 32.61,
- 116.98
- ]
- },
- {
- "City": "Huzhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 680,
- "Pop1955": 710,
- "Pop1960": 750,
- "Pop1965": 790,
- "Pop1970": 840,
- "Pop1975": 880,
- "Pop1980": 930,
- "Pop1985": 980,
- "Pop1990": 1030,
- "Pop1995": 1080,
- "Pop2000": 1140,
- "Pop2005": 1200,
- "Pop2010": 1230,
- "Pop2015": 1290,
- "Pop2020": 1420,
- "Pop2025": 1540,
- "Pop2050": 1654,
- "Location": [
- 30.86,
- 120.1
- ]
- },
- {
- "City": "Jiamusi",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 220,
- "Pop1955": 250,
- "Pop1960": 290,
- "Pop1965": 330,
- "Pop1970": 380,
- "Pop1975": 440,
- "Pop1980": 500,
- "Pop1985": 580,
- "Pop1990": 660,
- "Pop1995": 750,
- "Pop2000": 850,
- "Pop2005": 970,
- "Pop2010": 1020,
- "Pop2015": 1100,
- "Pop2020": 1230,
- "Pop2025": 1340,
- "Pop2050": 1441,
- "Location": [
- 46.83,
- 130.35
- ]
- },
- {
- "City": "Jiaozuo",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 210,
- "Pop1955": 240,
- "Pop1960": 270,
- "Pop1965": 310,
- "Pop1970": 350,
- "Pop1975": 400,
- "Pop1980": 460,
- "Pop1985": 530,
- "Pop1990": 600,
- "Pop1995": 670,
- "Pop2000": 740,
- "Pop2005": 820,
- "Pop2010": 860,
- "Pop2015": 920,
- "Pop2020": 1020,
- "Pop2025": 1120,
- "Pop2050": 1196,
- "Location": [
- 35.24,
- 113.22
- ]
- },
- {
- "City": "Jiaxing",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 450,
- "Pop1955": 480,
- "Pop1960": 510,
- "Pop1965": 540,
- "Pop1970": 580,
- "Pop1975": 610,
- "Pop1980": 650,
- "Pop1985": 700,
- "Pop1990": 740,
- "Pop1995": 810,
- "Pop2000": 880,
- "Pop2005": 950,
- "Pop2010": 990,
- "Pop2015": 1050,
- "Pop2020": 1160,
- "Pop2025": 1270,
- "Pop2050": 1359,
- "Location": [
- 30.76,
- 120.75
- ]
- },
- {
- "City": "Jilin",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 400,
- "Pop1955": 460,
- "Pop1960": 540,
- "Pop1965": 630,
- "Pop1970": 740,
- "Pop1975": 870,
- "Pop1980": 1010,
- "Pop1985": 1160,
- "Pop1990": 1320,
- "Pop1995": 1600,
- "Pop2000": 1930,
- "Pop2005": 2260,
- "Pop2010": 2400,
- "Pop2015": 2610,
- "Pop2020": 2920,
- "Pop2025": 3170,
- "Pop2050": 3376,
- "Location": [
- 43.85,
- 126.56
- ]
- },
- {
- "City": "Jinan, Shandong",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 600,
- "Pop1955": 740,
- "Pop1960": 920,
- "Pop1965": 1100,
- "Pop1970": 1170,
- "Pop1975": 1240,
- "Pop1980": 1310,
- "Pop1985": 1670,
- "Pop1990": 2400,
- "Pop1995": 2510,
- "Pop2000": 2620,
- "Pop2005": 2740,
- "Pop2010": 2800,
- "Pop2015": 2910,
- "Pop2020": 3180,
- "Pop2025": 3450,
- "Pop2050": 3674,
- "Location": [
- 36.65,
- 116.96
- ]
- },
- {
- "City": "Jining, Shandong",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 260,
- "Pop1955": 290,
- "Pop1960": 320,
- "Pop1965": 360,
- "Pop1970": 400,
- "Pop1975": 450,
- "Pop1980": 500,
- "Pop1985": 630,
- "Pop1990": 870,
- "Pop1995": 950,
- "Pop2000": 1040,
- "Pop2005": 1140,
- "Pop2010": 1190,
- "Pop2015": 1260,
- "Pop2020": 1400,
- "Pop2025": 1520,
- "Pop2050": 1632,
- "Location": [
- 35.4,
- 116.56
- ]
- },
- {
- "City": "Jinxi, Liaoning",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 230,
- "Pop1955": 270,
- "Pop1960": 330,
- "Pop1965": 400,
- "Pop1970": 480,
- "Pop1975": 580,
- "Pop1980": 700,
- "Pop1985": 940,
- "Pop1990": 1350,
- "Pop1995": 1600,
- "Pop2000": 1910,
- "Pop2005": 2270,
- "Pop2010": 2430,
- "Pop2015": 2660,
- "Pop2020": 2990,
- "Pop2025": 3250,
- "Pop2050": 3457,
- "Location": [
- 41.11,
- 122.05
- ]
- },
- {
- "City": "Jinzhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 330,
- "Pop1955": 370,
- "Pop1960": 420,
- "Pop1965": 470,
- "Pop1970": 500,
- "Pop1975": 530,
- "Pop1980": 560,
- "Pop1985": 630,
- "Pop1990": 740,
- "Pop1995": 800,
- "Pop2000": 860,
- "Pop2005": 920,
- "Pop2010": 960,
- "Pop2015": 1010,
- "Pop2020": 1120,
- "Pop2025": 1220,
- "Pop2050": 1309,
- "Location": [
- 41.1,
- 121.13
- ]
- },
- {
- "City": "Jixi, Heilongjiang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 180,
- "Pop1955": 220,
- "Pop1960": 280,
- "Pop1965": 350,
- "Pop1970": 440,
- "Pop1975": 560,
- "Pop1980": 700,
- "Pop1985": 790,
- "Pop1990": 840,
- "Pop1995": 870,
- "Pop2000": 910,
- "Pop2005": 950,
- "Pop2010": 960,
- "Pop2015": 1010,
- "Pop2020": 1100,
- "Pop2025": 1210,
- "Pop2050": 1295,
- "Location": [
- 45.3,
- 130.96
- ]
- },
- {
- "City": "Kaifeng",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 350,
- "Pop1955": 380,
- "Pop1960": 410,
- "Pop1965": 450,
- "Pop1970": 490,
- "Pop1975": 540,
- "Pop1980": 580,
- "Pop1985": 640,
- "Pop1990": 690,
- "Pop1995": 740,
- "Pop2000": 790,
- "Pop2005": 850,
- "Pop2010": 870,
- "Pop2015": 920,
- "Pop2020": 1010,
- "Pop2025": 1110,
- "Pop2050": 1191,
- "Location": [
- 34.79,
- 114.34
- ]
- },
- {
- "City": "Kaohsiung",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 260,
- "Pop1955": 340,
- "Pop1960": 440,
- "Pop1965": 590,
- "Pop1970": 810,
- "Pop1975": 990,
- "Pop1980": 1160,
- "Pop1985": 1290,
- "Pop1990": 1380,
- "Pop1995": 1420,
- "Pop2000": 1470,
- "Pop2005": 1520,
- "Pop2010": 1540,
- "Pop2015": 1600,
- "Pop2020": 1740,
- "Pop2025": 1900,
- "Pop2050": 2029,
- "Location": [
- 22.6,
- 120.28
- ]
- },
- {
- "City": "Kunming",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 640,
- "Pop1955": 740,
- "Pop1960": 860,
- "Pop1965": 980,
- "Pop1970": 1100,
- "Pop1975": 1220,
- "Pop1980": 1360,
- "Pop1985": 1490,
- "Pop1990": 1610,
- "Pop1995": 2040,
- "Pop2000": 2590,
- "Pop2005": 2840,
- "Pop2010": 2930,
- "Pop2015": 3100,
- "Pop2020": 3400,
- "Pop2025": 3690,
- "Pop2050": 3928,
- "Location": [
- 25.05,
- 102.7
- ]
- },
- {
- "City": "Langfang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 60,
- "Pop1955": 70,
- "Pop1960": 80,
- "Pop1965": 100,
- "Pop1970": 110,
- "Pop1975": 140,
- "Pop1980": 160,
- "Pop1985": 270,
- "Pop1990": 590,
- "Pop1995": 650,
- "Pop2000": 710,
- "Pop2005": 780,
- "Pop2010": 810,
- "Pop2015": 860,
- "Pop2020": 960,
- "Pop2025": 1050,
- "Pop2050": 1124,
- "Location": [
- 39.51,
- 116.7
- ]
- },
- {
- "City": "Lanzhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 350,
- "Pop1955": 430,
- "Pop1960": 540,
- "Pop1965": 670,
- "Pop1970": 840,
- "Pop1975": 1040,
- "Pop1980": 1300,
- "Pop1985": 1490,
- "Pop1990": 1620,
- "Pop1995": 1830,
- "Pop2000": 2070,
- "Pop2005": 2410,
- "Pop2010": 2560,
- "Pop2015": 2780,
- "Pop2020": 3120,
- "Pop2025": 3390,
- "Pop2050": 3604,
- "Location": [
- 36.11,
- 103.59
- ]
- },
- {
- "City": "Leshan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 600,
- "Pop1955": 650,
- "Pop1960": 700,
- "Pop1965": 750,
- "Pop1970": 800,
- "Pop1975": 860,
- "Pop1980": 930,
- "Pop1985": 1000,
- "Pop1990": 1070,
- "Pop1995": 1090,
- "Pop2000": 1120,
- "Pop2005": 1140,
- "Pop2010": 1160,
- "Pop2015": 1200,
- "Pop2020": 1310,
- "Pop2025": 1430,
- "Pop2050": 1528,
- "Location": [
- 29.58,
- 103.75
- ]
- },
- {
- "City": "Lianyungang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 120,
- "Pop1955": 140,
- "Pop1960": 170,
- "Pop1965": 210,
- "Pop1970": 250,
- "Pop1975": 300,
- "Pop1980": 370,
- "Pop1985": 440,
- "Pop1990": 540,
- "Pop1995": 600,
- "Pop2000": 680,
- "Pop2005": 770,
- "Pop2010": 810,
- "Pop2015": 860,
- "Pop2020": 970,
- "Pop2025": 1060,
- "Pop2050": 1137,
- "Location": [
- 41.26,
- 119.16
- ]
- },
- {
- "City": "Liaoyang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 110,
- "Pop1955": 140,
- "Pop1960": 170,
- "Pop1965": 210,
- "Pop1970": 260,
- "Pop1975": 330,
- "Pop1980": 410,
- "Pop1985": 510,
- "Pop1990": 640,
- "Pop1995": 680,
- "Pop2000": 720,
- "Pop2005": 770,
- "Pop2010": 790,
- "Pop2015": 840,
- "Pop2020": 920,
- "Pop2025": 1010,
- "Pop2050": 1083,
- "Location": [
- 41.26,
- 123.17
- ]
- },
- {
- "City": "Linfen",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 100,
- "Pop1955": 120,
- "Pop1960": 140,
- "Pop1965": 170,
- "Pop1970": 200,
- "Pop1975": 240,
- "Pop1980": 280,
- "Pop1985": 390,
- "Pop1990": 580,
- "Pop1995": 650,
- "Pop2000": 720,
- "Pop2005": 800,
- "Pop2010": 830,
- "Pop2015": 890,
- "Pop2020": 990,
- "Pop2025": 1090,
- "Pop2050": 1167,
- "Location": [
- 36.08,
- 111.51
- ]
- },
- {
- "City": "Linyi, Shandong",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 410,
- "Pop1955": 490,
- "Pop1960": 590,
- "Pop1965": 710,
- "Pop1970": 840,
- "Pop1975": 1010,
- "Pop1980": 1210,
- "Pop1985": 1450,
- "Pop1990": 1740,
- "Pop1995": 1830,
- "Pop2000": 1930,
- "Pop2005": 2040,
- "Pop2010": 2080,
- "Pop2015": 2180,
- "Pop2020": 2380,
- "Pop2025": 2590,
- "Pop2050": 2765,
- "Location": [
- 35.05,
- 118.31
- ]
- },
- {
- "City": "Liuan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 860,
- "Pop1955": 910,
- "Pop1960": 970,
- "Pop1965": 1030,
- "Pop1970": 1090,
- "Pop1975": 1160,
- "Pop1980": 1230,
- "Pop1985": 1300,
- "Pop1990": 1380,
- "Pop1995": 1460,
- "Pop2000": 1550,
- "Pop2005": 1650,
- "Pop2010": 1690,
- "Pop2015": 1770,
- "Pop2020": 1950,
- "Pop2025": 2120,
- "Pop2050": 2263,
- "Location": [
- 31.73,
- 116.46
- ]
- },
- {
- "City": "Liupanshui",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 400,
- "Pop1955": 440,
- "Pop1960": 480,
- "Pop1965": 530,
- "Pop1970": 580,
- "Pop1975": 630,
- "Pop1980": 690,
- "Pop1985": 760,
- "Pop1990": 830,
- "Pop1995": 900,
- "Pop2000": 990,
- "Pop2005": 1150,
- "Pop2010": 1220,
- "Pop2015": 1330,
- "Pop2020": 1490,
- "Pop2025": 1630,
- "Pop2050": 1745,
- "Location": [
- 26.59,
- 104.83
- ]
- },
- {
- "City": "Liuzhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 140,
- "Pop1955": 170,
- "Pop1960": 220,
- "Pop1965": 270,
- "Pop1970": 340,
- "Pop1975": 430,
- "Pop1980": 540,
- "Pop1985": 640,
- "Pop1990": 750,
- "Pop1995": 950,
- "Pop2000": 1200,
- "Pop2005": 1410,
- "Pop2010": 1500,
- "Pop2015": 1630,
- "Pop2020": 1830,
- "Pop2025": 2000,
- "Pop2050": 2131,
- "Location": [
- 24.31,
- 109.38
- ]
- },
- {
- "City": "Luoyang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 390,
- "Pop1955": 450,
- "Pop1960": 520,
- "Pop1965": 600,
- "Pop1970": 690,
- "Pop1975": 800,
- "Pop1980": 920,
- "Pop1985": 1060,
- "Pop1990": 1200,
- "Pop1995": 1330,
- "Pop2000": 1480,
- "Pop2005": 1640,
- "Pop2010": 1720,
- "Pop2015": 1830,
- "Pop2020": 2030,
- "Pop2025": 2210,
- "Pop2050": 2361,
- "Location": [
- 34.67,
- 112.36
- ]
- },
- {
- "City": "Luzhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 90,
- "Pop1955": 110,
- "Pop1960": 130,
- "Pop1965": 160,
- "Pop1970": 190,
- "Pop1975": 230,
- "Pop1980": 280,
- "Pop1985": 340,
- "Pop1990": 410,
- "Pop1995": 710,
- "Pop2000": 1210,
- "Pop2005": 1450,
- "Pop2010": 1540,
- "Pop2015": 1670,
- "Pop2020": 1880,
- "Pop2025": 2050,
- "Pop2050": 2187,
- "Location": [
- 28.88,
- 105.43
- ]
- },
- {
- "City": "Mianyang, Sichuan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 480,
- "Pop1955": 520,
- "Pop1960": 560,
- "Pop1965": 600,
- "Pop1970": 650,
- "Pop1975": 700,
- "Pop1980": 750,
- "Pop1985": 810,
- "Pop1990": 880,
- "Pop1995": 1000,
- "Pop2000": 1150,
- "Pop2005": 1320,
- "Pop2010": 1400,
- "Pop2015": 1510,
- "Pop2020": 1690,
- "Pop2025": 1840,
- "Pop2050": 1969,
- "Location": [
- 31.46,
- 104.75
- ]
- },
- {
- "City": "Mudanjiang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 210,
- "Pop1955": 240,
- "Pop1960": 290,
- "Pop1965": 340,
- "Pop1970": 400,
- "Pop1975": 460,
- "Pop1980": 540,
- "Pop1985": 640,
- "Pop1990": 750,
- "Pop1995": 870,
- "Pop2000": 1000,
- "Pop2005": 1170,
- "Pop2010": 1240,
- "Pop2015": 1360,
- "Pop2020": 1520,
- "Pop2025": 1660,
- "Pop2050": 1778,
- "Location": [
- 44.58,
- 129.59
- ]
- },
- {
- "City": "Nanchang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 340,
- "Pop1955": 440,
- "Pop1960": 560,
- "Pop1965": 700,
- "Pop1970": 790,
- "Pop1975": 900,
- "Pop1980": 1010,
- "Pop1985": 1130,
- "Pop1990": 1260,
- "Pop1995": 1520,
- "Pop2000": 1820,
- "Pop2005": 2190,
- "Pop2010": 2350,
- "Pop2015": 2580,
- "Pop2020": 2910,
- "Pop2025": 3170,
- "Pop2050": 3373,
- "Location": [
- 28.67,
- 115.88
- ]
- },
- {
- "City": "Nanchong",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 110,
- "Pop1955": 120,
- "Pop1960": 140,
- "Pop1965": 150,
- "Pop1970": 170,
- "Pop1975": 190,
- "Pop1980": 210,
- "Pop1985": 320,
- "Pop1990": 620,
- "Pop1995": 1030,
- "Pop2000": 1710,
- "Pop2005": 2050,
- "Pop2010": 2170,
- "Pop2015": 2360,
- "Pop2020": 2650,
- "Pop2025": 2880,
- "Pop2050": 3070,
- "Location": [
- 28.68,
- 115.88
- ]
- },
- {
- "City": "Nanjing, Jiangsu",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 970,
- "Pop1955": 1180,
- "Pop1960": 1430,
- "Pop1965": 1690,
- "Pop1970": 1810,
- "Pop1975": 1940,
- "Pop1980": 2080,
- "Pop1985": 2300,
- "Pop1990": 2610,
- "Pop1995": 3010,
- "Pop2000": 3480,
- "Pop2005": 3620,
- "Pop2010": 3680,
- "Pop2015": 3810,
- "Pop2020": 4150,
- "Pop2025": 4490,
- "Pop2050": 4771,
- "Location": [
- 32.04,
- 118.76
- ]
- },
- {
- "City": "Nanning",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 170,
- "Pop1955": 220,
- "Pop1960": 280,
- "Pop1965": 360,
- "Pop1970": 470,
- "Pop1975": 600,
- "Pop1980": 780,
- "Pop1985": 960,
- "Pop1990": 1160,
- "Pop1995": 1420,
- "Pop2000": 1740,
- "Pop2005": 2040,
- "Pop2010": 2170,
- "Pop2015": 2360,
- "Pop2020": 2640,
- "Pop2025": 2870,
- "Pop2050": 3061,
- "Location": [
- 22.83,
- 108.29
- ]
- },
- {
- "City": "Nantong",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 180,
- "Pop1955": 210,
- "Pop1960": 230,
- "Pop1965": 260,
- "Pop1970": 300,
- "Pop1975": 330,
- "Pop1980": 370,
- "Pop1985": 420,
- "Pop1990": 470,
- "Pop1995": 600,
- "Pop2000": 760,
- "Pop2005": 890,
- "Pop2010": 950,
- "Pop2015": 1030,
- "Pop2020": 1160,
- "Pop2025": 1270,
- "Pop2050": 1360,
- "Location": [
- 32,
- 120.83
- ]
- },
- {
- "City": "Nanyang, Henan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 80,
- "Pop1955": 90,
- "Pop1960": 110,
- "Pop1965": 140,
- "Pop1970": 170,
- "Pop1975": 200,
- "Pop1980": 250,
- "Pop1985": 310,
- "Pop1990": 380,
- "Pop1995": 750,
- "Pop2000": 1510,
- "Pop2005": 1830,
- "Pop2010": 1940,
- "Pop2015": 2120,
- "Pop2020": 2370,
- "Pop2025": 2580,
- "Pop2050": 2752,
- "Location": [
- 33,
- 112.53
- ]
- },
- {
- "City": "Neijiang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 140,
- "Pop1955": 150,
- "Pop1960": 170,
- "Pop1965": 190,
- "Pop1970": 210,
- "Pop1975": 240,
- "Pop1980": 270,
- "Pop1985": 500,
- "Pop1990": 1290,
- "Pop1995": 1340,
- "Pop2000": 1390,
- "Pop2005": 1440,
- "Pop2010": 1470,
- "Pop2015": 1520,
- "Pop2020": 1670,
- "Pop2025": 1820,
- "Pop2050": 1944,
- "Location": [
- 29.58,
- 105.06
- ]
- },
- {
- "City": "Ningbo",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 470,
- "Pop1955": 530,
- "Pop1960": 590,
- "Pop1965": 660,
- "Pop1970": 730,
- "Pop1975": 820,
- "Pop1980": 920,
- "Pop1985": 1020,
- "Pop1990": 1140,
- "Pop1995": 1330,
- "Pop2000": 1550,
- "Pop2005": 1810,
- "Pop2010": 1920,
- "Pop2015": 2090,
- "Pop2020": 2340,
- "Pop2025": 2550,
- "Pop2050": 2723,
- "Location": [
- 29.86,
- 121.55
- ]
- },
- {
- "City": "Pingdingshan, Henan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 160,
- "Pop1955": 190,
- "Pop1960": 220,
- "Pop1965": 260,
- "Pop1970": 310,
- "Pop1975": 370,
- "Pop1980": 440,
- "Pop1985": 630,
- "Pop1990": 1000,
- "Pop1995": 950,
- "Pop2000": 900,
- "Pop2005": 860,
- "Pop2010": 850,
- "Pop2015": 850,
- "Pop2020": 920,
- "Pop2025": 1010,
- "Pop2050": 1080,
- "Location": [
- 33.73,
- 113.3
- ]
- },
- {
- "City": "Pingxiang, Jiangxi",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 170,
- "Pop1955": 190,
- "Pop1960": 230,
- "Pop1965": 260,
- "Pop1970": 310,
- "Pop1975": 360,
- "Pop1980": 420,
- "Pop1985": 490,
- "Pop1990": 570,
- "Pop1995": 660,
- "Pop2000": 780,
- "Pop2005": 900,
- "Pop2010": 960,
- "Pop2015": 1050,
- "Pop2020": 1180,
- "Pop2025": 1290,
- "Pop2050": 1381,
- "Location": [
- 27.63,
- 113.85
- ]
- },
- {
- "City": "Qingdao",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 890,
- "Pop1955": 930,
- "Pop1960": 970,
- "Pop1965": 1020,
- "Pop1970": 1060,
- "Pop1975": 1110,
- "Pop1980": 1150,
- "Pop1985": 1460,
- "Pop1990": 2100,
- "Pop1995": 2380,
- "Pop2000": 2700,
- "Pop2005": 2820,
- "Pop2010": 2870,
- "Pop2015": 2980,
- "Pop2020": 3250,
- "Pop2025": 3520,
- "Pop2050": 3746,
- "Location": [
- 36.14,
- 120.43
- ]
- },
- {
- "City": "Qinhuangdao",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 150,
- "Pop1955": 170,
- "Pop1960": 200,
- "Pop1965": 240,
- "Pop1970": 280,
- "Pop1975": 320,
- "Pop1980": 380,
- "Pop1985": 440,
- "Pop1990": 520,
- "Pop1995": 650,
- "Pop2000": 800,
- "Pop2005": 940,
- "Pop2010": 1000,
- "Pop2015": 1090,
- "Pop2020": 1230,
- "Pop2025": 1340,
- "Pop2050": 1440,
- "Location": [
- 39.93,
- 119.6
- ]
- },
- {
- "City": "Qiqihaer",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 720,
- "Pop1955": 780,
- "Pop1960": 850,
- "Pop1965": 920,
- "Pop1970": 1000,
- "Pop1975": 1090,
- "Pop1980": 1180,
- "Pop1985": 1290,
- "Pop1990": 1400,
- "Pop1995": 1470,
- "Pop2000": 1540,
- "Pop2005": 1610,
- "Pop2010": 1640,
- "Pop2015": 1710,
- "Pop2020": 1880,
- "Pop2025": 2040,
- "Pop2050": 2182,
- "Location": [
- 47.34,
- 123.96
- ]
- },
- {
- "City": "Quanzhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 220,
- "Pop1955": 240,
- "Pop1960": 270,
- "Pop1965": 290,
- "Pop1970": 320,
- "Pop1975": 360,
- "Pop1980": 400,
- "Pop1985": 440,
- "Pop1990": 480,
- "Pop1995": 740,
- "Pop2000": 1160,
- "Pop2005": 1380,
- "Pop2010": 1460,
- "Pop2015": 1590,
- "Pop2020": 1790,
- "Pop2025": 1950,
- "Pop2050": 2083,
- "Location": [
- 24.91,
- 118.58
- ]
- },
- {
- "City": "Shanghai",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 6070,
- "Pop1955": 6300,
- "Pop1960": 6540,
- "Pop1965": 6790,
- "Pop1970": 7060,
- "Pop1975": 7330,
- "Pop1980": 7610,
- "Pop1985": 7900,
- "Pop1990": 8200,
- "Pop1995": 10420,
- "Pop2000": 13240,
- "Pop2005": 14500,
- "Pop2010": 14990,
- "Pop2015": 15790,
- "Pop2020": 17210,
- "Pop2025": 18470,
- "Pop2050": 19412,
- "Location": [
- 31.24,
- 121.47
- ]
- },
- {
- "City": "Shangqiu",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 60,
- "Pop1955": 70,
- "Pop1960": 80,
- "Pop1965": 100,
- "Pop1970": 120,
- "Pop1975": 140,
- "Pop1980": 170,
- "Pop1985": 200,
- "Pop1990": 240,
- "Pop1995": 570,
- "Pop2000": 1350,
- "Pop2005": 1650,
- "Pop2010": 1750,
- "Pop2015": 1910,
- "Pop2020": 2140,
- "Pop2025": 2330,
- "Pop2050": 2487,
- "Location": [
- 34.41,
- 115.63
- ]
- },
- {
- "City": "Shantou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 320,
- "Pop1955": 370,
- "Pop1960": 420,
- "Pop1965": 470,
- "Pop1970": 530,
- "Pop1975": 610,
- "Pop1980": 690,
- "Pop1985": 780,
- "Pop1990": 880,
- "Pop1995": 1050,
- "Pop2000": 1260,
- "Pop2005": 1500,
- "Pop2010": 1600,
- "Pop2015": 1760,
- "Pop2020": 1980,
- "Pop2025": 2160,
- "Pop2050": 2304,
- "Location": [
- 23.36,
- 116.7
- ]
- },
- {
- "City": "Shaoxing",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 60,
- "Pop1955": 80,
- "Pop1960": 90,
- "Pop1965": 110,
- "Pop1970": 140,
- "Pop1975": 170,
- "Pop1980": 200,
- "Pop1985": 240,
- "Pop1990": 290,
- "Pop1995": 430,
- "Pop2000": 620,
- "Pop2005": 730,
- "Pop2010": 780,
- "Pop2015": 850,
- "Pop2020": 950,
- "Pop2025": 1040,
- "Pop2050": 1121,
- "Location": [
- 30,
- 120.58
- ]
- },
- {
- "City": "Shenyang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 2090,
- "Pop1955": 2450,
- "Pop1960": 2870,
- "Pop1965": 3300,
- "Pop1970": 3490,
- "Pop1975": 3700,
- "Pop1980": 3910,
- "Pop1985": 4240,
- "Pop1990": 4660,
- "Pop1995": 4630,
- "Pop2000": 4600,
- "Pop2005": 4720,
- "Pop2010": 4790,
- "Pop2015": 4950,
- "Pop2020": 5370,
- "Pop2025": 5810,
- "Pop2050": 6156,
- "Location": [
- 41.8,
- 123.38
- ]
- },
- {
- "City": "Shenzhen",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 170,
- "Pop1955": 190,
- "Pop1960": 220,
- "Pop1965": 240,
- "Pop1970": 270,
- "Pop1975": 300,
- "Pop1980": 340,
- "Pop1985": 500,
- "Pop1990": 880,
- "Pop1995": 2300,
- "Pop2000": 6070,
- "Pop2005": 7230,
- "Pop2010": 7580,
- "Pop2015": 8110,
- "Pop2020": 8950,
- "Pop2025": 9650,
- "Pop2050": 10196,
- "Location": [
- 22.55,
- 114.1
- ]
- },
- {
- "City": "Shijiazhuang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 340,
- "Pop1955": 400,
- "Pop1960": 480,
- "Pop1965": 580,
- "Pop1970": 690,
- "Pop1975": 830,
- "Pop1980": 990,
- "Pop1985": 1170,
- "Pop1990": 1370,
- "Pop1995": 1630,
- "Pop2000": 1950,
- "Pop2005": 2280,
- "Pop2010": 2420,
- "Pop2015": 2630,
- "Pop2020": 2940,
- "Pop2025": 3200,
- "Pop2050": 3405,
- "Location": [
- 38.07,
- 114.55
- ]
- },
- {
- "City": "Suining, Sichuan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 760,
- "Pop1955": 810,
- "Pop1960": 860,
- "Pop1965": 920,
- "Pop1970": 980,
- "Pop1975": 1040,
- "Pop1980": 1110,
- "Pop1985": 1180,
- "Pop1990": 1260,
- "Pop1995": 1300,
- "Pop2000": 1350,
- "Pop2005": 1400,
- "Pop2010": 1420,
- "Pop2015": 1480,
- "Pop2020": 1620,
- "Pop2025": 1770,
- "Pop2050": 1888,
- "Location": [
- 30.51,
- 105.56
- ]
- },
- {
- "City": "Suzhou, Anhui",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 60,
- "Pop1955": 70,
- "Pop1960": 90,
- "Pop1965": 100,
- "Pop1970": 120,
- "Pop1975": 150,
- "Pop1980": 180,
- "Pop1985": 220,
- "Pop1990": 260,
- "Pop1995": 620,
- "Pop2000": 1510,
- "Pop2005": 1850,
- "Pop2010": 1960,
- "Pop2015": 2140,
- "Pop2020": 2390,
- "Pop2025": 2610,
- "Pop2050": 2780,
- "Location": [
- 33.61,
- 117
- ]
- },
- {
- "City": "Suzhou, Jiangsu",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 460,
- "Pop1955": 490,
- "Pop1960": 520,
- "Pop1965": 550,
- "Pop1970": 580,
- "Pop1975": 620,
- "Pop1980": 660,
- "Pop1985": 740,
- "Pop1990": 880,
- "Pop1995": 1080,
- "Pop2000": 1330,
- "Pop2005": 1550,
- "Pop2010": 1650,
- "Pop2015": 1800,
- "Pop2020": 2010,
- "Pop2025": 2200,
- "Pop2050": 2343,
- "Location": [
- 31.3,
- 120.6
- ]
- },
- {
- "City": "Taian, Shandong",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 830,
- "Pop1955": 890,
- "Pop1960": 950,
- "Pop1965": 1010,
- "Pop1970": 1080,
- "Pop1975": 1160,
- "Pop1980": 1240,
- "Pop1985": 1320,
- "Pop1990": 1410,
- "Pop1995": 1470,
- "Pop2000": 1530,
- "Pop2005": 1600,
- "Pop2010": 1630,
- "Pop2015": 1700,
- "Pop2020": 1860,
- "Pop2025": 2020,
- "Pop2050": 2160,
- "Location": [
- 36.16,
- 117.11
- ]
- },
- {
- "City": "Taichung",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 190,
- "Pop1955": 240,
- "Pop1960": 290,
- "Pop1965": 360,
- "Pop1970": 440,
- "Pop1975": 540,
- "Pop1980": 590,
- "Pop1985": 660,
- "Pop1990": 750,
- "Pop1995": 840,
- "Pop2000": 930,
- "Pop2005": 1030,
- "Pop2010": 1080,
- "Pop2015": 1150,
- "Pop2020": 1280,
- "Pop2025": 1400,
- "Pop2050": 1499,
- "Location": [
- 24.14,
- 120.67
- ]
- },
- {
- "City": "Tainan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 310,
- "Pop1955": 350,
- "Pop1960": 380,
- "Pop1965": 420,
- "Pop1970": 470,
- "Pop1975": 520,
- "Pop1980": 580,
- "Pop1985": 630,
- "Pop1990": 680,
- "Pop1995": 700,
- "Pop2000": 720,
- "Pop2005": 750,
- "Pop2010": 760,
- "Pop2015": 790,
- "Pop2020": 870,
- "Pop2025": 950,
- "Pop2050": 1021,
- "Location": [
- 23.01,
- 120.2
- ]
- },
- {
- "City": "Taipei",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 600,
- "Pop1955": 760,
- "Pop1960": 960,
- "Pop1965": 1230,
- "Pop1970": 1740,
- "Pop1975": 2020,
- "Pop1980": 2220,
- "Pop1985": 2450,
- "Pop1990": 2710,
- "Pop1995": 2680,
- "Pop2000": 2640,
- "Pop2005": 2610,
- "Pop2010": 2600,
- "Pop2015": 2650,
- "Pop2020": 2860,
- "Pop2025": 3100,
- "Pop2050": 3305,
- "Location": [
- 25.03,
- 121.5
- ]
- },
- {
- "City": "Taiyuan, Shanxi",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 630,
- "Pop1955": 790,
- "Pop1960": 990,
- "Pop1965": 1220,
- "Pop1970": 1360,
- "Pop1975": 1520,
- "Pop1980": 1700,
- "Pop1985": 1930,
- "Pop1990": 2220,
- "Pop1995": 2270,
- "Pop2000": 2520,
- "Pop2005": 2790,
- "Pop2010": 2910,
- "Pop2015": 3100,
- "Pop2020": 3430,
- "Pop2025": 3720,
- "Pop2050": 3962,
- "Location": [
- 37.89,
- 112.55
- ]
- },
- {
- "City": "Tangshan, Hebei",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 640,
- "Pop1955": 730,
- "Pop1960": 840,
- "Pop1965": 950,
- "Pop1970": 1050,
- "Pop1975": 1160,
- "Pop1980": 1280,
- "Pop1985": 1390,
- "Pop1990": 1480,
- "Pop1995": 1590,
- "Pop2000": 1700,
- "Pop2005": 1820,
- "Pop2010": 1880,
- "Pop2015": 1980,
- "Pop2020": 2180,
- "Pop2025": 2370,
- "Pop2050": 2526,
- "Location": [
- 39.61,
- 118.18
- ]
- },
- {
- "City": "Tianjin",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 2370,
- "Pop1955": 2930,
- "Pop1960": 3620,
- "Pop1965": 4330,
- "Pop1970": 4590,
- "Pop1975": 4870,
- "Pop1980": 5160,
- "Pop1985": 5470,
- "Pop1990": 5800,
- "Pop1995": 6250,
- "Pop2000": 6720,
- "Pop2005": 7040,
- "Pop2010": 7180,
- "Pop2015": 7470,
- "Pop2020": 8110,
- "Pop2025": 8740,
- "Pop2050": 9243,
- "Location": [
- 39.12,
- 117.18
- ]
- },
- {
- "City": "Tianmen",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 1070,
- "Pop1955": 1120,
- "Pop1960": 1160,
- "Pop1965": 1210,
- "Pop1970": 1260,
- "Pop1975": 1310,
- "Pop1980": 1370,
- "Pop1985": 1420,
- "Pop1990": 1480,
- "Pop1995": 1540,
- "Pop2000": 1610,
- "Pop2005": 1680,
- "Pop2010": 1710,
- "Pop2015": 1780,
- "Pop2020": 1940,
- "Pop2025": 2120,
- "Pop2050": 2261,
- "Location": [
- 30.41,
- 112.85
- ]
- },
- {
- "City": "Tianshui",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 160,
- "Pop1955": 210,
- "Pop1960": 260,
- "Pop1965": 330,
- "Pop1970": 420,
- "Pop1975": 520,
- "Pop1980": 660,
- "Pop1985": 830,
- "Pop1990": 1040,
- "Pop1995": 1090,
- "Pop2000": 1140,
- "Pop2005": 1200,
- "Pop2010": 1220,
- "Pop2015": 1280,
- "Pop2020": 1400,
- "Pop2025": 1530,
- "Pop2050": 1640,
- "Location": [
- 34.58,
- 105.73
- ]
- },
- {
- "City": "Tongliao",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 110,
- "Pop1955": 130,
- "Pop1960": 160,
- "Pop1965": 190,
- "Pop1970": 230,
- "Pop1975": 280,
- "Pop1980": 340,
- "Pop1985": 460,
- "Pop1990": 670,
- "Pop1995": 730,
- "Pop2000": 790,
- "Pop2005": 860,
- "Pop2010": 880,
- "Pop2015": 940,
- "Pop2020": 1040,
- "Pop2025": 1130,
- "Pop2050": 1215,
- "Location": [
- 43.61,
- 122.26
- ]
- },
- {
- "City": "Ürümqi (Wulumqi)",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 250,
- "Pop1955": 310,
- "Pop1960": 380,
- "Pop1965": 470,
- "Pop1970": 580,
- "Pop1975": 720,
- "Pop1980": 880,
- "Pop1985": 1030,
- "Pop1990": 1160,
- "Pop1995": 1420,
- "Pop2000": 1730,
- "Pop2005": 2020,
- "Pop2010": 2150,
- "Pop2015": 2340,
- "Pop2020": 2620,
- "Pop2025": 2850,
- "Pop2050": 3038,
- "Location": [
- 43.78,
- 87.58
- ]
- },
- {
- "City": "Weifang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 180,
- "Pop1955": 220,
- "Pop1960": 270,
- "Pop1965": 320,
- "Pop1970": 390,
- "Pop1975": 470,
- "Pop1980": 570,
- "Pop1985": 780,
- "Pop1990": 1150,
- "Pop1995": 1260,
- "Pop2000": 1370,
- "Pop2005": 1500,
- "Pop2010": 1550,
- "Pop2015": 1650,
- "Pop2020": 1820,
- "Pop2025": 1980,
- "Pop2050": 2120,
- "Location": [
- 36.71,
- 119.1
- ]
- },
- {
- "City": "Wenzhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 260,
- "Pop1955": 280,
- "Pop1960": 320,
- "Pop1965": 350,
- "Pop1970": 390,
- "Pop1975": 440,
- "Pop1980": 490,
- "Pop1985": 540,
- "Pop1990": 600,
- "Pop1995": 1060,
- "Pop2000": 1840,
- "Pop2005": 2210,
- "Pop2010": 2350,
- "Pop2015": 2560,
- "Pop2020": 2860,
- "Pop2025": 3110,
- "Pop2050": 3313,
- "Location": [
- 27.99,
- 120.65
- ]
- },
- {
- "City": "Wuhan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 1310,
- "Pop1955": 1510,
- "Pop1960": 1740,
- "Pop1965": 2010,
- "Pop1970": 2310,
- "Pop1975": 2670,
- "Pop1980": 3070,
- "Pop1985": 3460,
- "Pop1990": 3830,
- "Pop1995": 5050,
- "Pop2000": 6660,
- "Pop2005": 7090,
- "Pop2010": 7240,
- "Pop2015": 7540,
- "Pop2020": 8200,
- "Pop2025": 8840,
- "Pop2050": 9339,
- "Location": [
- 30.57,
- 114.27
- ]
- },
- {
- "City": "Wuhu, Anhui",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 210,
- "Pop1955": 240,
- "Pop1960": 270,
- "Pop1965": 300,
- "Pop1970": 340,
- "Pop1975": 390,
- "Pop1980": 440,
- "Pop1985": 490,
- "Pop1990": 550,
- "Pop1995": 620,
- "Pop2000": 690,
- "Pop2005": 770,
- "Pop2010": 810,
- "Pop2015": 870,
- "Pop2020": 970,
- "Pop2025": 1060,
- "Pop2050": 1138,
- "Location": [
- 31.33,
- 118.35
- ]
- },
- {
- "City": "Wuxi, Jiangsu",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 570,
- "Pop1955": 590,
- "Pop1960": 600,
- "Pop1965": 630,
- "Pop1970": 680,
- "Pop1975": 730,
- "Pop1980": 790,
- "Pop1985": 880,
- "Pop1990": 1010,
- "Pop1995": 1190,
- "Pop2000": 1410,
- "Pop2005": 1650,
- "Pop2010": 1750,
- "Pop2015": 1900,
- "Pop2020": 2130,
- "Pop2025": 2330,
- "Pop2050": 2481,
- "Location": [
- 33,
- 120
- ]
- },
- {
- "City": "Xiamen",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 210,
- "Pop1955": 240,
- "Pop1960": 280,
- "Pop1965": 320,
- "Pop1970": 360,
- "Pop1975": 420,
- "Pop1980": 480,
- "Pop1985": 560,
- "Pop1990": 640,
- "Pop1995": 1120,
- "Pop2000": 1980,
- "Pop2005": 2370,
- "Pop2010": 2520,
- "Pop2015": 2740,
- "Pop2020": 3060,
- "Pop2025": 3330,
- "Pop2050": 3545,
- "Location": [
- 24.46,
- 118.07
- ]
- },
- {
- "City": "Xi'an, Shaanxi",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 710,
- "Pop1955": 840,
- "Pop1960": 1010,
- "Pop1965": 1200,
- "Pop1970": 1440,
- "Pop1975": 1720,
- "Pop1980": 2050,
- "Pop1985": 2430,
- "Pop1990": 2870,
- "Pop1995": 3270,
- "Pop2000": 3720,
- "Pop2005": 3930,
- "Pop2010": 4010,
- "Pop2015": 4180,
- "Pop2020": 4560,
- "Pop2025": 4930,
- "Pop2050": 5233,
- "Location": [
- 34.26,
- 108.9
- ]
- },
- {
- "City": "Xiangfan, Hubei",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 100,
- "Pop1955": 120,
- "Pop1960": 150,
- "Pop1965": 180,
- "Pop1970": 210,
- "Pop1975": 250,
- "Pop1980": 300,
- "Pop1985": 370,
- "Pop1990": 490,
- "Pop1995": 650,
- "Pop2000": 860,
- "Pop2005": 1010,
- "Pop2010": 1070,
- "Pop2015": 1160,
- "Pop2020": 1310,
- "Pop2025": 1430,
- "Pop2050": 1533,
- "Location": [
- 30.4,
- 114.88
- ]
- },
- {
- "City": "Xiantao",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 1000,
- "Pop1955": 1040,
- "Pop1960": 1080,
- "Pop1965": 1120,
- "Pop1970": 1170,
- "Pop1975": 1210,
- "Pop1980": 1260,
- "Pop1985": 1310,
- "Pop1990": 1360,
- "Pop1995": 1420,
- "Pop2000": 1470,
- "Pop2005": 1530,
- "Pop2010": 1560,
- "Pop2015": 1620,
- "Pop2020": 1770,
- "Pop2025": 1930,
- "Pop2050": 2062,
- "Location": [
- 30.38,
- 113.4
- ]
- },
- {
- "City": "Xianyang, Shaanxi",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 100,
- "Pop1955": 130,
- "Pop1960": 170,
- "Pop1965": 220,
- "Pop1970": 280,
- "Pop1975": 350,
- "Pop1980": 450,
- "Pop1985": 580,
- "Pop1990": 740,
- "Pop1995": 840,
- "Pop2000": 950,
- "Pop2005": 1070,
- "Pop2010": 1130,
- "Pop2015": 1210,
- "Pop2020": 1350,
- "Pop2025": 1480,
- "Pop2050": 1584,
- "Location": [
- 34.35,
- 108.71
- ]
- },
- {
- "City": "Xingyi, Guizhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 280,
- "Pop1955": 310,
- "Pop1960": 340,
- "Pop1965": 370,
- "Pop1970": 410,
- "Pop1975": 450,
- "Pop1980": 490,
- "Pop1985": 540,
- "Pop1990": 590,
- "Pop1995": 650,
- "Pop2000": 720,
- "Pop2005": 780,
- "Pop2010": 820,
- "Pop2015": 870,
- "Pop2020": 960,
- "Pop2025": 1060,
- "Pop2050": 1133,
- "Location": [
- 24.53,
- 104.31
- ]
- },
- {
- "City": "Xining",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 260,
- "Pop1955": 290,
- "Pop1960": 330,
- "Pop1965": 370,
- "Pop1970": 420,
- "Pop1975": 480,
- "Pop1980": 540,
- "Pop1985": 620,
- "Pop1990": 700,
- "Pop1995": 770,
- "Pop2000": 850,
- "Pop2005": 990,
- "Pop2010": 1050,
- "Pop2015": 1140,
- "Pop2020": 1280,
- "Pop2025": 1400,
- "Pop2050": 1504,
- "Location": [
- 36.64,
- 101.76
- ]
- },
- {
- "City": "Xinxiang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 240,
- "Pop1955": 270,
- "Pop1960": 300,
- "Pop1965": 340,
- "Pop1970": 380,
- "Pop1975": 430,
- "Pop1980": 480,
- "Pop1985": 550,
- "Pop1990": 610,
- "Pop1995": 690,
- "Pop2000": 770,
- "Pop2005": 860,
- "Pop2010": 900,
- "Pop2015": 970,
- "Pop2020": 1080,
- "Pop2025": 1180,
- "Pop2050": 1268,
- "Location": [
- 35.3,
- 113.86
- ]
- },
- {
- "City": "Xinyang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 90,
- "Pop1955": 110,
- "Pop1960": 120,
- "Pop1965": 140,
- "Pop1970": 160,
- "Pop1975": 180,
- "Pop1980": 210,
- "Pop1985": 240,
- "Pop1990": 270,
- "Pop1995": 570,
- "Pop2000": 1200,
- "Pop2005": 1450,
- "Pop2010": 1540,
- "Pop2015": 1680,
- "Pop2020": 1880,
- "Pop2025": 2050,
- "Pop2050": 2192,
- "Location": [
- 32.13,
- 114.05
- ]
- },
- {
- "City": "Xinyu",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 230,
- "Pop1955": 260,
- "Pop1960": 300,
- "Pop1965": 340,
- "Pop1970": 380,
- "Pop1975": 420,
- "Pop1980": 480,
- "Pop1985": 540,
- "Pop1990": 610,
- "Pop1995": 680,
- "Pop2000": 770,
- "Pop2005": 870,
- "Pop2010": 910,
- "Pop2015": 980,
- "Pop2020": 1100,
- "Pop2025": 1200,
- "Pop2050": 1285,
- "Location": [
- 27.79,
- 114.92
- ]
- },
- {
- "City": "Xuanzhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 590,
- "Pop1955": 610,
- "Pop1960": 630,
- "Pop1965": 650,
- "Pop1970": 670,
- "Pop1975": 690,
- "Pop1980": 720,
- "Pop1985": 740,
- "Pop1990": 770,
- "Pop1995": 800,
- "Pop2000": 820,
- "Pop2005": 850,
- "Pop2010": 870,
- "Pop2015": 900,
- "Pop2020": 990,
- "Pop2025": 1080,
- "Pop2050": 1158,
- "Location": [
- 27.09,
- 112.71
- ]
- },
- {
- "City": "Xuzhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 340,
- "Pop1955": 400,
- "Pop1960": 460,
- "Pop1965": 530,
- "Pop1970": 600,
- "Pop1975": 670,
- "Pop1980": 740,
- "Pop1985": 840,
- "Pop1990": 940,
- "Pop1995": 1250,
- "Pop2000": 1650,
- "Pop2005": 1960,
- "Pop2010": 2090,
- "Pop2015": 2280,
- "Pop2020": 2560,
- "Pop2025": 2790,
- "Pop2050": 2975,
- "Location": [
- 34.26,
- 117.16
- ]
- },
- {
- "City": "Yancheng, Jiangsu",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 140,
- "Pop1955": 170,
- "Pop1960": 200,
- "Pop1965": 230,
- "Pop1970": 270,
- "Pop1975": 310,
- "Pop1980": 360,
- "Pop1985": 430,
- "Pop1990": 500,
- "Pop1995": 580,
- "Pop2000": 680,
- "Pop2005": 790,
- "Pop2010": 840,
- "Pop2015": 910,
- "Pop2020": 1030,
- "Pop2025": 1130,
- "Pop2050": 1209,
- "Location": [
- 33.38,
- 120.11
- ]
- },
- {
- "City": "Yantai",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 190,
- "Pop1955": 210,
- "Pop1960": 240,
- "Pop1965": 260,
- "Pop1970": 300,
- "Pop1975": 330,
- "Pop1980": 370,
- "Pop1985": 520,
- "Pop1990": 840,
- "Pop1995": 1190,
- "Pop2000": 1680,
- "Pop2005": 1990,
- "Pop2010": 2120,
- "Pop2015": 2300,
- "Pop2020": 2580,
- "Pop2025": 2800,
- "Pop2050": 2989,
- "Location": [
- 37.45,
- 121.44
- ]
- },
- {
- "City": "Yibin",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 80,
- "Pop1955": 100,
- "Pop1960": 110,
- "Pop1965": 140,
- "Pop1970": 160,
- "Pop1975": 190,
- "Pop1980": 230,
- "Pop1985": 360,
- "Pop1990": 680,
- "Pop1995": 740,
- "Pop2000": 800,
- "Pop2005": 870,
- "Pop2010": 900,
- "Pop2015": 950,
- "Pop2020": 1060,
- "Pop2025": 1160,
- "Pop2050": 1240,
- "Location": [
- 28.76,
- 104.61
- ]
- },
- {
- "City": "Yichang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 110,
- "Pop1955": 130,
- "Pop1960": 160,
- "Pop1965": 190,
- "Pop1970": 230,
- "Pop1975": 280,
- "Pop1980": 340,
- "Pop1985": 410,
- "Pop1990": 490,
- "Pop1995": 590,
- "Pop2000": 700,
- "Pop2005": 820,
- "Pop2010": 880,
- "Pop2015": 950,
- "Pop2020": 1070,
- "Pop2025": 1170,
- "Pop2050": 1259,
- "Location": [
- 30.7,
- 111.28
- ]
- },
- {
- "City": "Yichun, Heilongjiang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 550,
- "Pop1955": 590,
- "Pop1960": 620,
- "Pop1965": 660,
- "Pop1970": 700,
- "Pop1975": 740,
- "Pop1980": 780,
- "Pop1985": 830,
- "Pop1990": 880,
- "Pop1995": 850,
- "Pop2000": 820,
- "Pop2005": 780,
- "Pop2010": 780,
- "Pop2015": 780,
- "Pop2020": 850,
- "Pop2025": 930,
- "Pop2050": 997,
- "Location": [
- 47.73,
- 128.9
- ]
- },
- {
- "City": "Yichun, Jiangxi",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 340,
- "Pop1955": 380,
- "Pop1960": 440,
- "Pop1965": 500,
- "Pop1970": 580,
- "Pop1975": 660,
- "Pop1980": 760,
- "Pop1985": 820,
- "Pop1990": 840,
- "Pop1995": 880,
- "Pop2000": 920,
- "Pop2005": 960,
- "Pop2010": 980,
- "Pop2015": 1020,
- "Pop2020": 1130,
- "Pop2025": 1230,
- "Pop2050": 1320,
- "Location": [
- 27.8,
- 114.38
- ]
- },
- {
- "City": "Yinchuan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 100,
- "Pop1955": 120,
- "Pop1960": 150,
- "Pop1965": 180,
- "Pop1970": 220,
- "Pop1975": 270,
- "Pop1980": 340,
- "Pop1985": 410,
- "Pop1990": 500,
- "Pop1995": 630,
- "Pop2000": 800,
- "Pop2005": 930,
- "Pop2010": 990,
- "Pop2015": 1080,
- "Pop2020": 1210,
- "Pop2025": 1330,
- "Pop2050": 1423,
- "Location": [
- 38.46,
- 106.26
- ]
- },
- {
- "City": "Yingkou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 120,
- "Pop1955": 150,
- "Pop1960": 180,
- "Pop1965": 220,
- "Pop1970": 260,
- "Pop1975": 320,
- "Pop1980": 390,
- "Pop1985": 470,
- "Pop1990": 570,
- "Pop1995": 630,
- "Pop2000": 690,
- "Pop2005": 760,
- "Pop2010": 800,
- "Pop2015": 850,
- "Pop2020": 940,
- "Pop2025": 1030,
- "Pop2050": 1107,
- "Location": [
- 40.66,
- 122.23
- ]
- },
- {
- "City": "Yiyang, Hunan",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 400,
- "Pop1955": 450,
- "Pop1960": 510,
- "Pop1965": 570,
- "Pop1970": 650,
- "Pop1975": 730,
- "Pop1980": 830,
- "Pop1985": 940,
- "Pop1990": 1060,
- "Pop1995": 1140,
- "Pop2000": 1220,
- "Pop2005": 1310,
- "Pop2010": 1350,
- "Pop2015": 1420,
- "Pop2020": 1570,
- "Pop2025": 1710,
- "Pop2050": 1833,
- "Location": [
- 28.58,
- 112.33
- ]
- },
- {
- "City": "Yongzhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 840,
- "Pop1955": 850,
- "Pop1960": 860,
- "Pop1965": 880,
- "Pop1970": 890,
- "Pop1975": 900,
- "Pop1980": 920,
- "Pop1985": 930,
- "Pop1990": 950,
- "Pop1995": 960,
- "Pop2000": 980,
- "Pop2005": 990,
- "Pop2010": 1000,
- "Pop2015": 1030,
- "Pop2020": 1130,
- "Pop2025": 1230,
- "Pop2050": 1320,
- "Location": [
- 26.21,
- 111.61
- ]
- },
- {
- "City": "Yuci",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 90,
- "Pop1955": 100,
- "Pop1960": 120,
- "Pop1965": 150,
- "Pop1970": 180,
- "Pop1975": 210,
- "Pop1980": 250,
- "Pop1985": 330,
- "Pop1990": 470,
- "Pop1995": 560,
- "Pop2000": 660,
- "Pop2005": 780,
- "Pop2010": 840,
- "Pop2015": 920,
- "Pop2020": 1040,
- "Pop2025": 1140,
- "Pop2050": 1224,
- "Location": [
- 37.68,
- 112.73
- ]
- },
- {
- "City": "Yueyang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 670,
- "Pop1955": 710,
- "Pop1960": 760,
- "Pop1965": 800,
- "Pop1970": 850,
- "Pop1975": 900,
- "Pop1980": 960,
- "Pop1985": 1020,
- "Pop1990": 1080,
- "Pop1995": 1000,
- "Pop2000": 920,
- "Pop2005": 850,
- "Pop2010": 830,
- "Pop2015": 820,
- "Pop2020": 880,
- "Pop2025": 960,
- "Pop2050": 1032,
- "Location": [
- 29.36,
- 113.1
- ]
- },
- {
- "City": "Yulin, Guangxi",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 190,
- "Pop1955": 230,
- "Pop1960": 260,
- "Pop1965": 310,
- "Pop1970": 360,
- "Pop1975": 420,
- "Pop1980": 490,
- "Pop1985": 570,
- "Pop1990": 670,
- "Pop1995": 780,
- "Pop2000": 910,
- "Pop2005": 1060,
- "Pop2010": 1130,
- "Pop2015": 1230,
- "Pop2020": 1380,
- "Pop2025": 1510,
- "Pop2050": 1613,
- "Location": [
- 22.63,
- 110.15
- ]
- },
- {
- "City": "Zaozhuang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 280,
- "Pop1955": 360,
- "Pop1960": 450,
- "Pop1965": 560,
- "Pop1970": 710,
- "Pop1975": 900,
- "Pop1980": 1130,
- "Pop1985": 1420,
- "Pop1990": 1790,
- "Pop1995": 1890,
- "Pop2000": 1990,
- "Pop2005": 2100,
- "Pop2010": 2140,
- "Pop2015": 2240,
- "Pop2020": 2460,
- "Pop2025": 2670,
- "Pop2050": 2846,
- "Location": [
- 34.86,
- 117.55
- ]
- },
- {
- "City": "Zhangjiakou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 300,
- "Pop1955": 340,
- "Pop1960": 380,
- "Pop1965": 420,
- "Pop1970": 470,
- "Pop1975": 520,
- "Pop1980": 580,
- "Pop1985": 650,
- "Pop1990": 720,
- "Pop1995": 800,
- "Pop2000": 900,
- "Pop2005": 1000,
- "Pop2010": 1050,
- "Pop2015": 1120,
- "Pop2020": 1250,
- "Pop2025": 1360,
- "Pop2050": 1461,
- "Location": [
- 40.81,
- 114.88
- ]
- },
- {
- "City": "Zhanjiang",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 410,
- "Pop1955": 460,
- "Pop1960": 510,
- "Pop1965": 580,
- "Pop1970": 650,
- "Pop1975": 730,
- "Pop1980": 830,
- "Pop1985": 930,
- "Pop1990": 1050,
- "Pop1995": 1180,
- "Pop2000": 1340,
- "Pop2005": 1510,
- "Pop2010": 1590,
- "Pop2015": 1710,
- "Pop2020": 1900,
- "Pop2025": 2080,
- "Pop2050": 2216,
- "Location": [
- 21.2,
- 110.4
- ]
- },
- {
- "City": "Zhaotong",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 130,
- "Pop1955": 160,
- "Pop1960": 190,
- "Pop1965": 220,
- "Pop1970": 270,
- "Pop1975": 320,
- "Pop1980": 380,
- "Pop1985": 470,
- "Pop1990": 620,
- "Pop1995": 670,
- "Pop2000": 720,
- "Pop2005": 780,
- "Pop2010": 810,
- "Pop2015": 860,
- "Pop2020": 950,
- "Pop2025": 1040,
- "Pop2050": 1113,
- "Location": [
- 27.31,
- 103.71
- ]
- },
- {
- "City": "Zhengzhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 520,
- "Pop1955": 650,
- "Pop1960": 810,
- "Pop1965": 990,
- "Pop1970": 1100,
- "Pop1975": 1230,
- "Pop1980": 1370,
- "Pop1985": 1540,
- "Pop1990": 1750,
- "Pop1995": 2080,
- "Pop2000": 2470,
- "Pop2005": 2590,
- "Pop2010": 2640,
- "Pop2015": 2740,
- "Pop2020": 2990,
- "Pop2025": 3240,
- "Pop2050": 3452,
- "Location": [
- 34.75,
- 113.64
- ]
- },
- {
- "City": "Zhenjiang, Jiangsu",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 90,
- "Pop1955": 110,
- "Pop1960": 130,
- "Pop1965": 160,
- "Pop1970": 200,
- "Pop1975": 260,
- "Pop1980": 320,
- "Pop1985": 390,
- "Pop1990": 490,
- "Pop1995": 580,
- "Pop2000": 690,
- "Pop2005": 800,
- "Pop2010": 850,
- "Pop2015": 930,
- "Pop2020": 1050,
- "Pop2025": 1150,
- "Pop2050": 1230,
- "Location": [
- 32.2,
- 119.41
- ]
- },
- {
- "City": "Zhuhai",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 40,
- "Pop1955": 50,
- "Pop1960": 60,
- "Pop1965": 70,
- "Pop1970": 90,
- "Pop1975": 100,
- "Pop1980": 120,
- "Pop1985": 190,
- "Pop1990": 330,
- "Pop1995": 520,
- "Pop2000": 810,
- "Pop2005": 960,
- "Pop2010": 1020,
- "Pop2015": 1110,
- "Pop2020": 1250,
- "Pop2025": 1370,
- "Pop2050": 1468,
- "Location": [
- 22.27,
- 113.56
- ]
- },
- {
- "City": "Zhuzhou",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 130,
- "Pop1955": 150,
- "Pop1960": 180,
- "Pop1965": 210,
- "Pop1970": 250,
- "Pop1975": 300,
- "Pop1980": 360,
- "Pop1985": 450,
- "Pop1990": 580,
- "Pop1995": 710,
- "Pop2000": 870,
- "Pop2005": 1020,
- "Pop2010": 1080,
- "Pop2015": 1180,
- "Pop2020": 1320,
- "Pop2025": 1440,
- "Pop2050": 1548,
- "Location": [
- 27.85,
- 113.13
- ]
- },
- {
- "City": "Zibo",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 1450,
- "Pop1955": 1550,
- "Pop1960": 1660,
- "Pop1965": 1780,
- "Pop1970": 1900,
- "Pop1975": 2030,
- "Pop1980": 2170,
- "Pop1985": 2320,
- "Pop1990": 2480,
- "Pop1995": 2640,
- "Pop2000": 2810,
- "Pop2005": 2980,
- "Pop2010": 3060,
- "Pop2015": 3210,
- "Pop2020": 3520,
- "Pop2025": 3810,
- "Pop2050": 4053,
- "Location": [
- 36.78,
- 118.05
- ]
- },
- {
- "City": "Zigong",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 560,
- "Pop1955": 600,
- "Pop1960": 650,
- "Pop1965": 690,
- "Pop1970": 740,
- "Pop1975": 800,
- "Pop1980": 850,
- "Pop1985": 910,
- "Pop1990": 980,
- "Pop1995": 1010,
- "Pop2000": 1050,
- "Pop2005": 1090,
- "Pop2010": 1100,
- "Pop2015": 1150,
- "Pop2020": 1260,
- "Pop2025": 1380,
- "Pop2050": 1473,
- "Location": [
- 29.4,
- 104.78
- ]
- },
- {
- "City": "Zunyi",
- "Country": "China",
- "Country_ISO3": "CHN",
- "Pop1950": 200,
- "Pop1955": 220,
- "Pop1960": 240,
- "Pop1965": 260,
- "Pop1970": 280,
- "Pop1975": 300,
- "Pop1980": 330,
- "Pop1985": 360,
- "Pop1990": 390,
- "Pop1995": 520,
- "Pop2000": 680,
- "Pop2005": 800,
- "Pop2010": 850,
- "Pop2015": 920,
- "Pop2020": 1040,
- "Pop2025": 1140,
- "Pop2050": 1223,
- "Location": [
- 27.68,
- 106.9
- ]
- },
- {
- "City": "Barranquilla",
- "Country": "Colombia",
- "Country_ISO3": "COL",
- "Pop1950": 290,
- "Pop1955": 370,
- "Pop1960": 460,
- "Pop1965": 560,
- "Pop1970": 690,
- "Pop1975": 830,
- "Pop1980": 960,
- "Pop1985": 1110,
- "Pop1990": 1230,
- "Pop1995": 1360,
- "Pop2000": 1530,
- "Pop2005": 1720,
- "Pop2010": 1800,
- "Pop2015": 1910,
- "Pop2020": 2050,
- "Pop2025": 2160,
- "Pop2050": 2251,
- "Location": [
- 10.98,
- -74.8
- ]
- },
- {
- "City": "Bogotá",
- "Country": "Colombia",
- "Country_ISO3": "COL",
- "Pop1950": 630,
- "Pop1955": 890,
- "Pop1960": 1270,
- "Pop1965": 1780,
- "Pop1970": 2380,
- "Pop1975": 3040,
- "Pop1980": 3520,
- "Pop1985": 4090,
- "Pop1990": 4740,
- "Pop1995": 5490,
- "Pop2000": 6360,
- "Pop2005": 7350,
- "Pop2010": 7770,
- "Pop2015": 8320,
- "Pop2020": 8920,
- "Pop2025": 9300,
- "Pop2050": 9600,
- "Location": [
- 4.63,
- -74.08
- ]
- },
- {
- "City": "Bucaramanga",
- "Country": "Colombia",
- "Country_ISO3": "COL",
- "Pop1950": 110,
- "Pop1955": 140,
- "Pop1960": 190,
- "Pop1965": 250,
- "Pop1970": 320,
- "Pop1975": 410,
- "Pop1980": 470,
- "Pop1985": 550,
- "Pop1990": 650,
- "Pop1995": 760,
- "Pop2000": 860,
- "Pop2005": 960,
- "Pop2010": 1010,
- "Pop2015": 1070,
- "Pop2020": 1160,
- "Pop2025": 1220,
- "Pop2050": 1282,
- "Location": [
- 7.11,
- -73.11
- ]
- },
- {
- "City": "Cali",
- "Country": "Colombia",
- "Country_ISO3": "COL",
- "Pop1950": 230,
- "Pop1955": 330,
- "Pop1960": 470,
- "Pop1965": 660,
- "Pop1970": 850,
- "Pop1975": 1050,
- "Pop1980": 1190,
- "Pop1985": 1360,
- "Pop1990": 1550,
- "Pop1995": 1760,
- "Pop2000": 1950,
- "Pop2005": 2160,
- "Pop2010": 2250,
- "Pop2015": 2380,
- "Pop2020": 2540,
- "Pop2025": 2680,
- "Pop2050": 2786,
- "Location": [
- 3.45,
- -76.52
- ]
- },
- {
- "City": "Cartagena",
- "Country": "Colombia",
- "Country_ISO3": "COL",
- "Pop1950": 110,
- "Pop1955": 140,
- "Pop1960": 180,
- "Pop1965": 230,
- "Pop1970": 270,
- "Pop1975": 330,
- "Pop1980": 400,
- "Pop1985": 490,
- "Pop1990": 560,
- "Pop1995": 640,
- "Pop2000": 740,
- "Pop2005": 840,
- "Pop2010": 890,
- "Pop2015": 950,
- "Pop2020": 1030,
- "Pop2025": 1090,
- "Pop2050": 1139,
- "Location": [
- 10.41,
- -75.53
- ]
- },
- {
- "City": "Medellín",
- "Country": "Colombia",
- "Country_ISO3": "COL",
- "Pop1950": 380,
- "Pop1955": 520,
- "Pop1960": 730,
- "Pop1965": 990,
- "Pop1970": 1260,
- "Pop1975": 1540,
- "Pop1980": 1730,
- "Pop1985": 1950,
- "Pop1990": 2140,
- "Pop1995": 2370,
- "Pop2000": 2720,
- "Pop2005": 3130,
- "Pop2010": 3300,
- "Pop2015": 3520,
- "Pop2020": 3790,
- "Pop2025": 3980,
- "Pop2050": 4129,
- "Location": [
- 6.24,
- -75.59
- ]
- },
- {
- "City": "Brazzaville",
- "Country": "Congo",
- "Country_ISO3": "COG",
- "Pop1950": 80,
- "Pop1955": 90,
- "Pop1960": 120,
- "Pop1965": 170,
- "Pop1970": 240,
- "Pop1975": 330,
- "Pop1980": 450,
- "Pop1985": 600,
- "Pop1990": 700,
- "Pop1995": 830,
- "Pop2000": 990,
- "Pop2005": 1220,
- "Pop2010": 1360,
- "Pop2015": 1500,
- "Pop2020": 1730,
- "Pop2025": 1940,
- "Pop2050": 2150,
- "Location": [
- -4.28,
- 15.28
- ]
- },
- {
- "City": "Kananga",
- "Country": "Democratic Republic of the Congo",
- "Country_ISO3": "COD",
- "Pop1950": 20,
- "Pop1955": 50,
- "Pop1960": 140,
- "Pop1965": 250,
- "Pop1970": 420,
- "Pop1975": 370,
- "Pop1980": 330,
- "Pop1985": 310,
- "Pop1990": 370,
- "Pop1995": 470,
- "Pop2000": 560,
- "Pop2005": 700,
- "Pop2010": 760,
- "Pop2015": 880,
- "Pop2020": 1110,
- "Pop2025": 1380,
- "Pop2050": 1698,
- "Location": [
- -5.89,
- 22.4
- ]
- },
- {
- "City": "Kinshasa",
- "Country": "Democratic Republic of the Congo",
- "Country_ISO3": "COD",
- "Pop1950": 200,
- "Pop1955": 290,
- "Pop1960": 440,
- "Pop1965": 720,
- "Pop1970": 1070,
- "Pop1975": 1480,
- "Pop1980": 2050,
- "Pop1985": 2790,
- "Pop1990": 3450,
- "Pop1995": 4450,
- "Pop2000": 5480,
- "Pop2005": 7110,
- "Pop2010": 7840,
- "Pop2015": 9050,
- "Pop2020": 11310,
- "Pop2025": 13880,
- "Pop2050": 16762,
- "Location": [
- -4.32,
- 15.29
- ]
- },
- {
- "City": "Lubumbashi",
- "Country": "Democratic Republic of the Congo",
- "Country_ISO3": "COD",
- "Pop1950": 100,
- "Pop1955": 140,
- "Pop1960": 190,
- "Pop1965": 250,
- "Pop1970": 320,
- "Pop1975": 400,
- "Pop1980": 480,
- "Pop1985": 590,
- "Pop1990": 690,
- "Pop1995": 850,
- "Pop2000": 1000,
- "Pop2005": 1240,
- "Pop2010": 1350,
- "Pop2015": 1540,
- "Pop2020": 1940,
- "Pop2025": 2410,
- "Pop2050": 2943,
- "Location": [
- -11.68,
- 27.54
- ]
- },
- {
- "City": "Mbuji-Mayi",
- "Country": "Democratic Republic of the Congo",
- "Country_ISO3": "COD",
- "Pop1950": 70,
- "Pop1955": 100,
- "Pop1960": 140,
- "Pop1965": 190,
- "Pop1970": 260,
- "Pop1975": 330,
- "Pop1980": 410,
- "Pop1985": 510,
- "Pop1990": 610,
- "Pop1995": 770,
- "Pop2000": 930,
- "Pop2005": 1180,
- "Pop2010": 1300,
- "Pop2015": 1490,
- "Pop2020": 1880,
- "Pop2025": 2330,
- "Pop2050": 2851,
- "Location": [
- -6.14,
- 23.66
- ]
- },
- {
- "City": "San José",
- "Country": "Costa Rica",
- "Country_ISO3": "CRI",
- "Pop1950": 150,
- "Pop1955": 180,
- "Pop1960": 230,
- "Pop1965": 290,
- "Pop1970": 360,
- "Pop1975": 440,
- "Pop1980": 530,
- "Pop1985": 630,
- "Pop1990": 740,
- "Pop1995": 870,
- "Pop2000": 1030,
- "Pop2005": 1220,
- "Pop2010": 1280,
- "Pop2015": 1370,
- "Pop2020": 1510,
- "Pop2025": 1630,
- "Pop2050": 1737,
- "Location": [
- 9.93,
- -84.07
- ]
- },
- {
- "City": "La Habana",
- "Country": "Cuba",
- "Country_ISO3": "CUB",
- "Pop1950": 1120,
- "Pop1955": 1290,
- "Pop1960": 1440,
- "Pop1965": 1600,
- "Pop1970": 1780,
- "Pop1975": 1850,
- "Pop1980": 1910,
- "Pop1985": 2000,
- "Pop1990": 2110,
- "Pop1995": 2180,
- "Pop2000": 2190,
- "Pop2005": 2190,
- "Pop2010": 2170,
- "Pop2015": 2160,
- "Pop2020": 2150,
- "Pop2025": 2150,
- "Pop2050": 2150,
- "Location": [
- 23.04,
- -82.41
- ]
- },
- {
- "City": "Praha",
- "Country": "Czech Republic",
- "Country_ISO3": "CZE",
- "Pop1950": 940,
- "Pop1955": 970,
- "Pop1960": 1000,
- "Pop1965": 1040,
- "Pop1970": 1080,
- "Pop1975": 1130,
- "Pop1980": 1180,
- "Pop1985": 1200,
- "Pop1990": 1210,
- "Pop1995": 1190,
- "Pop2000": 1170,
- "Pop2005": 1160,
- "Pop2010": 1160,
- "Pop2015": 1160,
- "Pop2020": 1160,
- "Pop2025": 1160,
- "Pop2050": 1159,
- "Location": [
- 50.1,
- 14.45
- ]
- },
- {
- "City": "Cotonou",
- "Country": "Benin",
- "Country_ISO3": "BEN",
- "Pop1950": 20,
- "Pop1955": 30,
- "Pop1960": 70,
- "Pop1965": 110,
- "Pop1970": 160,
- "Pop1975": 240,
- "Pop1980": 340,
- "Pop1985": 410,
- "Pop1990": 500,
- "Pop1995": 580,
- "Pop2000": 640,
- "Pop2005": 720,
- "Pop2010": 760,
- "Pop2015": 840,
- "Pop2020": 1000,
- "Pop2025": 1200,
- "Pop2050": 1411,
- "Location": [
- 6.35,
- 2.43
- ]
- },
- {
- "City": "København",
- "Country": "Denmark",
- "Country_ISO3": "DNK",
- "Pop1950": 1220,
- "Pop1955": 1230,
- "Pop1960": 1280,
- "Pop1965": 1370,
- "Pop1970": 1380,
- "Pop1975": 1170,
- "Pop1980": 1100,
- "Pop1985": 1060,
- "Pop1990": 1040,
- "Pop1995": 1050,
- "Pop2000": 1080,
- "Pop2005": 1080,
- "Pop2010": 1080,
- "Pop2015": 1090,
- "Pop2020": 1090,
- "Pop2025": 1100,
- "Pop2050": 1096,
- "Location": [
- 55.71,
- 12.54
- ]
- },
- {
- "City": "Santo Domingo",
- "Country": "Dominican Republic",
- "Country_ISO3": "DOM",
- "Pop1950": 220,
- "Pop1955": 310,
- "Pop1960": 450,
- "Pop1965": 610,
- "Pop1970": 830,
- "Pop1975": 1020,
- "Pop1980": 1240,
- "Pop1985": 1400,
- "Pop1990": 1520,
- "Pop1995": 1670,
- "Pop2000": 1850,
- "Pop2005": 2060,
- "Pop2010": 2150,
- "Pop2015": 2300,
- "Pop2020": 2520,
- "Pop2025": 2720,
- "Pop2050": 2885,
- "Location": [
- 18.48,
- -69.89
- ]
- },
- {
- "City": "Guayaquil",
- "Country": "Ecuador",
- "Country_ISO3": "ECU",
- "Pop1950": 260,
- "Pop1955": 340,
- "Pop1960": 460,
- "Pop1965": 580,
- "Pop1970": 720,
- "Pop1975": 890,
- "Pop1980": 1120,
- "Pop1985": 1350,
- "Pop1990": 1570,
- "Pop1995": 1810,
- "Pop2000": 2080,
- "Pop2005": 2390,
- "Pop2010": 2510,
- "Pop2015": 2690,
- "Pop2020": 2940,
- "Pop2025": 3150,
- "Pop2050": 3328,
- "Location": [
- -2.2,
- -79.9
- ]
- },
- {
- "City": "Quito",
- "Country": "Ecuador",
- "Country_ISO3": "ECU",
- "Pop1950": 210,
- "Pop1955": 260,
- "Pop1960": 320,
- "Pop1965": 400,
- "Pop1970": 500,
- "Pop1975": 630,
- "Pop1980": 780,
- "Pop1985": 940,
- "Pop1990": 1090,
- "Pop1995": 1220,
- "Pop2000": 1360,
- "Pop2005": 1590,
- "Pop2010": 1700,
- "Pop2015": 1850,
- "Pop2020": 2040,
- "Pop2025": 2190,
- "Pop2050": 2316,
- "Location": [
- -0.22,
- -78.52
- ]
- },
- {
- "City": "San Salvador",
- "Country": "El Salvador",
- "Country_ISO3": "SLV",
- "Pop1950": 190,
- "Pop1955": 250,
- "Pop1960": 310,
- "Pop1965": 390,
- "Pop1970": 500,
- "Pop1975": 600,
- "Pop1980": 700,
- "Pop1985": 820,
- "Pop1990": 970,
- "Pop1995": 1110,
- "Pop2000": 1230,
- "Pop2005": 1370,
- "Pop2010": 1430,
- "Pop2015": 1520,
- "Pop2020": 1650,
- "Pop2025": 1780,
- "Pop2050": 1902,
- "Location": [
- 13.7,
- -89.2
- ]
- },
- {
- "City": "Addis Ababa",
- "Country": "Ethiopia",
- "Country_ISO3": "ETH",
- "Pop1950": 390,
- "Pop1955": 450,
- "Pop1960": 520,
- "Pop1965": 600,
- "Pop1970": 730,
- "Pop1975": 930,
- "Pop1980": 1180,
- "Pop1985": 1480,
- "Pop1990": 1790,
- "Pop1995": 2160,
- "Pop2000": 2490,
- "Pop2005": 2900,
- "Pop2010": 3100,
- "Pop2015": 3450,
- "Pop2020": 4180,
- "Pop2025": 5080,
- "Pop2050": 6156,
- "Location": [
- 9.02,
- 38.7
- ]
- },
- {
- "City": "Huambo",
- "Country": "Angola",
- "Country_ISO3": "AGO",
- "Pop1950": 20,
- "Pop1955": 20,
- "Pop1960": 40,
- "Pop1965": 50,
- "Pop1970": 60,
- "Pop1975": 100,
- "Pop1980": 150,
- "Pop1985": 230,
- "Pop1990": 330,
- "Pop1995": 440,
- "Pop2000": 580,
- "Pop2005": 780,
- "Pop2010": 870,
- "Pop2015": 1040,
- "Pop2020": 1310,
- "Pop2025": 1570,
- "Pop2050": 1824,
- "Location": [
- -12.76,
- 15.73
- ]
- },
- {
- "City": "Luanda",
- "Country": "Angola",
- "Country_ISO3": "AGO",
- "Pop1950": 140,
- "Pop1955": 170,
- "Pop1960": 220,
- "Pop1965": 320,
- "Pop1970": 460,
- "Pop1975": 660,
- "Pop1980": 960,
- "Pop1985": 1300,
- "Pop1990": 1570,
- "Pop1995": 1950,
- "Pop2000": 2590,
- "Pop2005": 3530,
- "Pop2010": 4000,
- "Pop2015": 4780,
- "Pop2020": 6040,
- "Pop2025": 7150,
- "Pop2050": 8236,
- "Location": [
- -8.81,
- 13.23
- ]
- },
- {
- "City": "Helsinki",
- "Country": "Finland",
- "Country_ISO3": "FIN",
- "Pop1950": 370,
- "Pop1955": 400,
- "Pop1960": 450,
- "Pop1965": 480,
- "Pop1970": 510,
- "Pop1975": 580,
- "Pop1980": 670,
- "Pop1985": 720,
- "Pop1990": 870,
- "Pop1995": 940,
- "Pop2000": 1020,
- "Pop2005": 1090,
- "Pop2010": 1120,
- "Pop2015": 1140,
- "Pop2020": 1170,
- "Pop2025": 1200,
- "Pop2050": 1220,
- "Location": [
- 60.19,
- 24.97
- ]
- },
- {
- "City": "Bordeaux",
- "Country": "France",
- "Country_ISO3": "FRA",
- "Pop1950": 430,
- "Pop1955": 450,
- "Pop1960": 500,
- "Pop1965": 540,
- "Pop1970": 580,
- "Pop1975": 610,
- "Pop1980": 630,
- "Pop1985": 660,
- "Pop1990": 700,
- "Pop1995": 730,
- "Pop2000": 760,
- "Pop2005": 790,
- "Pop2010": 800,
- "Pop2015": 820,
- "Pop2020": 840,
- "Pop2025": 850,
- "Pop2050": 869,
- "Location": [
- 44.84,
- -0.59
- ]
- },
- {
- "City": "Lille",
- "Country": "France",
- "Country_ISO3": "FRA",
- "Pop1950": 750,
- "Pop1955": 770,
- "Pop1960": 810,
- "Pop1965": 860,
- "Pop1970": 910,
- "Pop1975": 940,
- "Pop1980": 940,
- "Pop1985": 950,
- "Pop1990": 960,
- "Pop1995": 980,
- "Pop2000": 1010,
- "Pop2005": 1030,
- "Pop2010": 1040,
- "Pop2015": 1060,
- "Pop2020": 1080,
- "Pop2025": 1100,
- "Pop2050": 1120,
- "Location": [
- 50.63,
- 3.06
- ]
- },
- {
- "City": "Lyon",
- "Country": "France",
- "Country_ISO3": "FRA",
- "Pop1950": 730,
- "Pop1955": 770,
- "Pop1960": 900,
- "Pop1965": 1030,
- "Pop1970": 1120,
- "Pop1975": 1170,
- "Pop1980": 1210,
- "Pop1985": 1240,
- "Pop1990": 1260,
- "Pop1995": 1310,
- "Pop2000": 1360,
- "Pop2005": 1410,
- "Pop2010": 1420,
- "Pop2015": 1440,
- "Pop2020": 1470,
- "Pop2025": 1500,
- "Pop2050": 1516,
- "Location": [
- 45.74,
- 4.85
- ]
- },
- {
- "City": "Marseille-Aix-en-Provence",
- "Country": "France",
- "Country_ISO3": "FRA",
- "Pop1950": 760,
- "Pop1955": 800,
- "Pop1960": 930,
- "Pop1965": 1070,
- "Pop1970": 1180,
- "Pop1975": 1250,
- "Pop1980": 1300,
- "Pop1985": 1310,
- "Pop1990": 1300,
- "Pop1995": 1330,
- "Pop2000": 1360,
- "Pop2005": 1390,
- "Pop2010": 1400,
- "Pop2015": 1420,
- "Pop2020": 1440,
- "Pop2025": 1470,
- "Pop2050": 1490,
- "Location": [
- 43.28,
- 5.38
- ]
- },
- {
- "City": "Nice-Cannes",
- "Country": "France",
- "Country_ISO3": "FRA",
- "Pop1950": 400,
- "Pop1955": 430,
- "Pop1960": 500,
- "Pop1965": 570,
- "Pop1970": 640,
- "Pop1975": 700,
- "Pop1980": 730,
- "Pop1985": 790,
- "Pop1990": 850,
- "Pop1995": 870,
- "Pop2000": 890,
- "Pop2005": 920,
- "Pop2010": 930,
- "Pop2015": 940,
- "Pop2020": 960,
- "Pop2025": 980,
- "Pop2050": 997,
- "Location": [
- 43.55,
- 7.01
- ]
- },
- {
- "City": "Paris",
- "Country": "France",
- "Country_ISO3": "FRA",
- "Pop1950": 6520,
- "Pop1955": 6800,
- "Pop1960": 7410,
- "Pop1965": 7970,
- "Pop1970": 8350,
- "Pop1975": 8560,
- "Pop1980": 8670,
- "Pop1985": 8960,
- "Pop1990": 9330,
- "Pop1995": 9510,
- "Pop2000": 9690,
- "Pop2005": 9850,
- "Pop2010": 9900,
- "Pop2015": 9960,
- "Pop2020": 10010,
- "Pop2025": 10030,
- "Pop2050": 10036,
- "Location": [
- 48.88,
- 2.43
- ]
- },
- {
- "City": "Toulouse",
- "Country": "France",
- "Country_ISO3": "FRA",
- "Pop1950": 270,
- "Pop1955": 280,
- "Pop1960": 350,
- "Pop1965": 410,
- "Pop1970": 470,
- "Pop1975": 510,
- "Pop1980": 530,
- "Pop1985": 580,
- "Pop1990": 650,
- "Pop1995": 710,
- "Pop2000": 780,
- "Pop2005": 830,
- "Pop2010": 850,
- "Pop2015": 860,
- "Pop2020": 880,
- "Pop2025": 900,
- "Pop2050": 916,
- "Location": [
- 43.59,
- 1.43
- ]
- },
- {
- "City": "Tbilisi",
- "Country": "Georgia",
- "Country_ISO3": "GEO",
- "Pop1950": 610,
- "Pop1955": 660,
- "Pop1960": 720,
- "Pop1965": 800,
- "Pop1970": 900,
- "Pop1975": 990,
- "Pop1980": 1090,
- "Pop1985": 1180,
- "Pop1990": 1220,
- "Pop1995": 1160,
- "Pop2000": 1100,
- "Pop2005": 1090,
- "Pop2010": 1100,
- "Pop2015": 1110,
- "Pop2020": 1110,
- "Pop2025": 1110,
- "Pop2050": 1114,
- "Location": [
- 41.72,
- 44.78
- ]
- },
- {
- "City": "Berlin",
- "Country": "Germany",
- "Country_ISO3": "DEU",
- "Pop1950": 3350,
- "Pop1955": 3300,
- "Pop1960": 3260,
- "Pop1965": 3230,
- "Pop1970": 3210,
- "Pop1975": 3130,
- "Pop1980": 3060,
- "Pop1985": 3060,
- "Pop1990": 3420,
- "Pop1995": 3470,
- "Pop2000": 3380,
- "Pop2005": 3390,
- "Pop2010": 3410,
- "Pop2015": 3420,
- "Pop2020": 3430,
- "Pop2025": 3440,
- "Pop2050": 3436,
- "Location": [
- 52.51,
- 13.32
- ]
- },
- {
- "City": "Hamburg",
- "Country": "Germany",
- "Country_ISO3": "DEU",
- "Pop1950": 1610,
- "Pop1955": 1700,
- "Pop1960": 1810,
- "Pop1965": 1820,
- "Pop1970": 1790,
- "Pop1975": 1720,
- "Pop1980": 1650,
- "Pop1985": 1590,
- "Pop1990": 1640,
- "Pop1995": 1710,
- "Pop2000": 1710,
- "Pop2005": 1740,
- "Pop2010": 1760,
- "Pop2015": 1780,
- "Pop2020": 1790,
- "Pop2025": 1790,
- "Pop2050": 1792,
- "Location": [
- 53.57,
- 10.02
- ]
- },
- {
- "City": "Köln",
- "Country": "Germany",
- "Country_ISO3": "DEU",
- "Pop1950": 600,
- "Pop1955": 680,
- "Pop1960": 790,
- "Pop1965": 830,
- "Pop1970": 850,
- "Pop1975": 910,
- "Pop1980": 970,
- "Pop1985": 920,
- "Pop1990": 950,
- "Pop1995": 960,
- "Pop2000": 960,
- "Pop2005": 980,
- "Pop2010": 1000,
- "Pop2015": 1040,
- "Pop2020": 1060,
- "Pop2025": 1060,
- "Pop2050": 1061,
- "Location": [
- 50.94,
- 6.93
- ]
- },
- {
- "City": "München",
- "Country": "Germany",
- "Country_ISO3": "DEU",
- "Pop1950": 830,
- "Pop1955": 940,
- "Pop1960": 1060,
- "Pop1965": 1180,
- "Pop1970": 1290,
- "Pop1975": 1300,
- "Pop1980": 1300,
- "Pop1985": 1270,
- "Pop1990": 1220,
- "Pop1995": 1240,
- "Pop2000": 1200,
- "Pop2005": 1250,
- "Pop2010": 1280,
- "Pop2015": 1300,
- "Pop2020": 1320,
- "Pop2025": 1320,
- "Pop2050": 1318,
- "Location": [
- 48.14,
- 11.54
- ]
- },
- {
- "City": "Accra",
- "Country": "Ghana",
- "Country_ISO3": "GHA",
- "Pop1950": 180,
- "Pop1955": 260,
- "Pop1960": 390,
- "Pop1965": 500,
- "Pop1970": 630,
- "Pop1975": 740,
- "Pop1980": 860,
- "Pop1985": 1010,
- "Pop1990": 1200,
- "Pop1995": 1420,
- "Pop2000": 1670,
- "Pop2005": 1980,
- "Pop2010": 2120,
- "Pop2015": 2330,
- "Pop2020": 2690,
- "Pop2025": 3040,
- "Pop2050": 3382,
- "Location": [
- 5.55,
- -0.2
- ]
- },
- {
- "City": "Kumasi",
- "Country": "Ghana",
- "Country_ISO3": "GHA",
- "Pop1950": 100,
- "Pop1955": 150,
- "Pop1960": 220,
- "Pop1965": 280,
- "Pop1970": 350,
- "Pop1975": 400,
- "Pop1980": 450,
- "Pop1985": 530,
- "Pop1990": 700,
- "Pop1995": 910,
- "Pop2000": 1190,
- "Pop2005": 1520,
- "Pop2010": 1650,
- "Pop2015": 1830,
- "Pop2020": 2110,
- "Pop2025": 2390,
- "Pop2050": 2667,
- "Location": [
- 6.68,
- -1.62
- ]
- },
- {
- "City": "Athínai",
- "Country": "Greece",
- "Country_ISO3": "GRC",
- "Pop1950": 1350,
- "Pop1955": 1560,
- "Pop1960": 1810,
- "Pop1965": 2120,
- "Pop1970": 2480,
- "Pop1975": 2740,
- "Pop1980": 2990,
- "Pop1985": 3050,
- "Pop1990": 3070,
- "Pop1995": 3120,
- "Pop2000": 3180,
- "Pop2005": 3230,
- "Pop2010": 3240,
- "Pop2015": 3260,
- "Pop2020": 3280,
- "Pop2025": 3300,
- "Pop2050": 3326,
- "Location": [
- 37.94,
- 23.65
- ]
- },
- {
- "City": "Thessaloniki",
- "Country": "Greece",
- "Country_ISO3": "GRC",
- "Pop1950": 290,
- "Pop1955": 330,
- "Pop1960": 370,
- "Pop1965": 450,
- "Pop1970": 540,
- "Pop1975": 620,
- "Pop1980": 690,
- "Pop1985": 720,
- "Pop1990": 750,
- "Pop1995": 770,
- "Pop2000": 800,
- "Pop2005": 820,
- "Pop2010": 830,
- "Pop2015": 840,
- "Pop2020": 850,
- "Pop2025": 860,
- "Pop2050": 880,
- "Location": [
- 40.62,
- 22.79
- ]
- },
- {
- "City": "Baku",
- "Country": "Azerbaijan",
- "Country_ISO3": "AZE",
- "Pop1950": 900,
- "Pop1955": 940,
- "Pop1960": 1000,
- "Pop1965": 1130,
- "Pop1970": 1270,
- "Pop1975": 1430,
- "Pop1980": 1570,
- "Pop1985": 1660,
- "Pop1990": 1730,
- "Pop1995": 1770,
- "Pop2000": 1810,
- "Pop2005": 1870,
- "Pop2010": 1890,
- "Pop2015": 1930,
- "Pop2020": 2010,
- "Pop2025": 2100,
- "Pop2050": 2187,
- "Location": [
- 40.32,
- 49.81
- ]
- },
- {
- "City": "Buenos Aires",
- "Country": "Argentina",
- "Country_ISO3": "ARG",
- "Pop1950": 5100,
- "Pop1955": 5800,
- "Pop1960": 6600,
- "Pop1965": 7320,
- "Pop1970": 8100,
- "Pop1975": 8740,
- "Pop1980": 9420,
- "Pop1985": 9960,
- "Pop1990": 10510,
- "Pop1995": 11150,
- "Pop2000": 11850,
- "Pop2005": 12550,
- "Pop2010": 12800,
- "Pop2015": 13090,
- "Pop2020": 13430,
- "Pop2025": 13650,
- "Pop2050": 13768,
- "Location": [
- -34.62,
- -58.44
- ]
- },
- {
- "City": "Córdoba",
- "Country": "Argentina",
- "Country_ISO3": "ARG",
- "Pop1950": 430,
- "Pop1955": 510,
- "Pop1960": 600,
- "Pop1965": 700,
- "Pop1970": 810,
- "Pop1975": 900,
- "Pop1980": 1010,
- "Pop1985": 1100,
- "Pop1990": 1200,
- "Pop1995": 1280,
- "Pop2000": 1350,
- "Pop2005": 1420,
- "Pop2010": 1450,
- "Pop2015": 1490,
- "Pop2020": 1560,
- "Pop2025": 1610,
- "Pop2050": 1645,
- "Location": [
- -31.31,
- -64.17
- ]
- },
- {
- "City": "Mendoza",
- "Country": "Argentina",
- "Country_ISO3": "ARG",
- "Pop1950": 250,
- "Pop1955": 280,
- "Pop1960": 330,
- "Pop1965": 390,
- "Pop1970": 470,
- "Pop1975": 540,
- "Pop1980": 610,
- "Pop1985": 680,
- "Pop1990": 760,
- "Pop1995": 800,
- "Pop2000": 840,
- "Pop2005": 880,
- "Pop2010": 890,
- "Pop2015": 920,
- "Pop2020": 960,
- "Pop2025": 990,
- "Pop2050": 1020,
- "Location": [
- -32.89,
- -68.83
- ]
- },
- {
- "City": "Rosario",
- "Country": "Argentina",
- "Country_ISO3": "ARG",
- "Pop1950": 550,
- "Pop1955": 610,
- "Pop1960": 670,
- "Pop1965": 740,
- "Pop1970": 820,
- "Pop1975": 880,
- "Pop1980": 950,
- "Pop1985": 1020,
- "Pop1990": 1080,
- "Pop1995": 1120,
- "Pop2000": 1150,
- "Pop2005": 1190,
- "Pop2010": 1200,
- "Pop2015": 1230,
- "Pop2020": 1280,
- "Pop2025": 1330,
- "Pop2050": 1360,
- "Location": [
- -32.93,
- -60.66
- ]
- },
- {
- "City": "San Miguel de Tucumán",
- "Country": "Argentina",
- "Country_ISO3": "ARG",
- "Pop1950": 220,
- "Pop1955": 260,
- "Pop1960": 300,
- "Pop1965": 330,
- "Pop1970": 360,
- "Pop1975": 420,
- "Pop1980": 490,
- "Pop1985": 550,
- "Pop1990": 610,
- "Pop1995": 670,
- "Pop2000": 720,
- "Pop2005": 780,
- "Pop2010": 800,
- "Pop2015": 830,
- "Pop2020": 870,
- "Pop2025": 900,
- "Pop2050": 928,
- "Location": [
- -26.82,
- -65.21
- ]
- },
- {
- "City": "Ciudad de Guatemala (Guatemala City)",
- "Country": "Guatemala",
- "Country_ISO3": "GTM",
- "Pop1950": 290,
- "Pop1955": 370,
- "Pop1960": 480,
- "Pop1965": 590,
- "Pop1970": 660,
- "Pop1975": 720,
- "Pop1980": 750,
- "Pop1985": 780,
- "Pop1990": 800,
- "Pop1995": 840,
- "Pop2000": 910,
- "Pop2005": 980,
- "Pop2010": 1020,
- "Pop2015": 1100,
- "Pop2020": 1280,
- "Pop2025": 1480,
- "Pop2050": 1690,
- "Location": [
- 14.61,
- -90.52
- ]
- },
- {
- "City": "Conakry",
- "Country": "Guinea",
- "Country_ISO3": "GIN",
- "Pop1950": 30,
- "Pop1955": 60,
- "Pop1960": 110,
- "Pop1965": 210,
- "Pop1970": 390,
- "Pop1975": 530,
- "Pop1980": 660,
- "Pop1985": 770,
- "Pop1990": 900,
- "Pop1995": 1040,
- "Pop2000": 1220,
- "Pop2005": 1410,
- "Pop2010": 1490,
- "Pop2015": 1640,
- "Pop2020": 1980,
- "Pop2025": 2390,
- "Pop2050": 2856,
- "Location": [
- 9.54,
- -13.67
- ]
- },
- {
- "City": "Port-au-Prince",
- "Country": "Haiti",
- "Country_ISO3": "HTI",
- "Pop1950": 130,
- "Pop1955": 180,
- "Pop1960": 250,
- "Pop1965": 340,
- "Pop1970": 460,
- "Pop1975": 580,
- "Pop1980": 700,
- "Pop1985": 880,
- "Pop1990": 1130,
- "Pop1995": 1430,
- "Pop2000": 1650,
- "Pop2005": 1880,
- "Pop2010": 2000,
- "Pop2015": 2210,
- "Pop2020": 2620,
- "Pop2025": 3010,
- "Pop2050": 3346,
- "Location": [
- 18.52,
- -72.34
- ]
- },
- {
- "City": "Tegucigalpa",
- "Country": "Honduras",
- "Country_ISO3": "HND",
- "Pop1950": 70,
- "Pop1955": 100,
- "Pop1960": 130,
- "Pop1965": 170,
- "Pop1970": 220,
- "Pop1975": 290,
- "Pop1980": 370,
- "Pop1985": 470,
- "Pop1990": 580,
- "Pop1995": 680,
- "Pop2000": 790,
- "Pop2005": 900,
- "Pop2010": 950,
- "Pop2015": 1020,
- "Pop2020": 1160,
- "Pop2025": 1320,
- "Pop2050": 1472,
- "Location": [
- 14.09,
- -87.2
- ]
- },
- {
- "City": "Hong Kong",
- "Country": "China, Hong Kong Special Administrative Region",
- "Country_ISO3": "CHN",
- "Pop1950": 1680,
- "Pop1955": 2120,
- "Pop1960": 2620,
- "Pop1965": 3190,
- "Pop1970": 3460,
- "Pop1975": 3940,
- "Pop1980": 4610,
- "Pop1985": 5070,
- "Pop1990": 5680,
- "Pop1995": 6210,
- "Pop2000": 6660,
- "Pop2005": 7060,
- "Pop2010": 7210,
- "Pop2015": 7420,
- "Pop2020": 7740,
- "Pop2025": 8040,
- "Pop2050": 8305,
- "Location": [
- 22.27,
- 114.17
- ]
- },
- {
- "City": "Budapest",
- "Country": "Hungary",
- "Country_ISO3": "HUN",
- "Pop1950": 1620,
- "Pop1955": 1710,
- "Pop1960": 1810,
- "Pop1965": 1880,
- "Pop1970": 1950,
- "Pop1975": 2000,
- "Pop1980": 2060,
- "Pop1985": 2040,
- "Pop1990": 2000,
- "Pop1995": 1890,
- "Pop2000": 1790,
- "Pop2005": 1690,
- "Pop2010": 1680,
- "Pop2015": 1660,
- "Pop2020": 1660,
- "Pop2025": 1660,
- "Pop2050": 1655,
- "Location": [
- 47.51,
- 19.09
- ]
- },
- {
- "City": "Agra",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 370,
- "Pop1955": 430,
- "Pop1960": 500,
- "Pop1965": 560,
- "Pop1970": 620,
- "Pop1975": 680,
- "Pop1980": 740,
- "Pop1985": 830,
- "Pop1990": 930,
- "Pop1995": 1100,
- "Pop2000": 1290,
- "Pop2005": 1510,
- "Pop2010": 1590,
- "Pop2015": 1700,
- "Pop2020": 1900,
- "Pop2025": 2120,
- "Pop2050": 2364,
- "Location": [
- 27.18,
- 78.02
- ]
- },
- {
- "City": "Ahmadabad",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 860,
- "Pop1955": 1010,
- "Pop1960": 1180,
- "Pop1965": 1410,
- "Pop1970": 1700,
- "Pop1975": 2050,
- "Pop1980": 2480,
- "Pop1985": 2860,
- "Pop1990": 3260,
- "Pop1995": 3790,
- "Pop2000": 4430,
- "Pop2005": 5120,
- "Pop2010": 5380,
- "Pop2015": 5730,
- "Pop2020": 6320,
- "Pop2025": 6990,
- "Pop2050": 7735,
- "Location": [
- 23.03,
- 72.56
- ]
- },
- {
- "City": "Aligarh",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 140,
- "Pop1955": 160,
- "Pop1960": 180,
- "Pop1965": 210,
- "Pop1970": 250,
- "Pop1975": 280,
- "Pop1980": 320,
- "Pop1985": 380,
- "Pop1990": 470,
- "Pop1995": 550,
- "Pop2000": 650,
- "Pop2005": 760,
- "Pop2010": 800,
- "Pop2015": 860,
- "Pop2020": 970,
- "Pop2025": 1080,
- "Pop2050": 1215,
- "Location": [
- 27.88,
- 78.08
- ]
- },
- {
- "City": "Allahabad",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 330,
- "Pop1955": 370,
- "Pop1960": 420,
- "Pop1965": 460,
- "Pop1970": 510,
- "Pop1975": 570,
- "Pop1980": 640,
- "Pop1985": 730,
- "Pop1990": 830,
- "Pop1995": 930,
- "Pop2000": 1040,
- "Pop2005": 1150,
- "Pop2010": 1200,
- "Pop2015": 1280,
- "Pop2020": 1420,
- "Pop2025": 1590,
- "Pop2050": 1781,
- "Location": [
- 25.45,
- 81.85
- ]
- },
- {
- "City": "Amritsar",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 340,
- "Pop1955": 360,
- "Pop1960": 390,
- "Pop1965": 420,
- "Pop1970": 450,
- "Pop1975": 520,
- "Pop1980": 600,
- "Pop1985": 660,
- "Pop1990": 730,
- "Pop1995": 840,
- "Pop2000": 990,
- "Pop2005": 1150,
- "Pop2010": 1210,
- "Pop2015": 1300,
- "Pop2020": 1450,
- "Pop2025": 1620,
- "Pop2050": 1811,
- "Location": [
- 31.63,
- 74.87
- ]
- },
- {
- "City": "Asansol",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 90,
- "Pop1955": 120,
- "Pop1960": 160,
- "Pop1965": 200,
- "Pop1970": 240,
- "Pop1975": 290,
- "Pop1980": 360,
- "Pop1985": 500,
- "Pop1990": 730,
- "Pop1995": 890,
- "Pop2000": 1060,
- "Pop2005": 1260,
- "Pop2010": 1330,
- "Pop2015": 1420,
- "Pop2020": 1590,
- "Pop2025": 1780,
- "Pop2050": 1985,
- "Location": [
- 23.68,
- 86.98
- ]
- },
- {
- "City": "Aurangabad",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 60,
- "Pop1955": 80,
- "Pop1960": 100,
- "Pop1965": 120,
- "Pop1970": 160,
- "Pop1975": 220,
- "Pop1980": 300,
- "Pop1985": 420,
- "Pop1990": 570,
- "Pop1995": 710,
- "Pop2000": 870,
- "Pop2005": 1050,
- "Pop2010": 1110,
- "Pop2015": 1200,
- "Pop2020": 1340,
- "Pop2025": 1500,
- "Pop2050": 1678,
- "Location": [
- 19.78,
- 75.29
- ]
- },
- {
- "City": "Bangalore",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 750,
- "Pop1955": 940,
- "Pop1960": 1170,
- "Pop1965": 1380,
- "Pop1970": 1620,
- "Pop1975": 2110,
- "Pop1980": 2810,
- "Pop1985": 3400,
- "Pop1990": 4040,
- "Pop1995": 4740,
- "Pop2000": 5570,
- "Pop2005": 6460,
- "Pop2010": 6790,
- "Pop2015": 7230,
- "Pop2020": 7970,
- "Pop2025": 8800,
- "Pop2050": 9719,
- "Location": [
- 12.97,
- 77.58
- ]
- },
- {
- "City": "Bareilly",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 210,
- "Pop1955": 230,
- "Pop1960": 270,
- "Pop1965": 300,
- "Pop1970": 320,
- "Pop1975": 370,
- "Pop1980": 440,
- "Pop1985": 520,
- "Pop1990": 600,
- "Pop1995": 660,
- "Pop2000": 720,
- "Pop2005": 790,
- "Pop2010": 820,
- "Pop2015": 870,
- "Pop2020": 970,
- "Pop2025": 1090,
- "Pop2050": 1219,
- "Location": [
- 28.55,
- 80.12
- ]
- },
- {
- "City": "Bhiwandi",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 20,
- "Pop1955": 30,
- "Pop1960": 50,
- "Pop1965": 60,
- "Pop1970": 80,
- "Pop1975": 90,
- "Pop1980": 110,
- "Pop1985": 200,
- "Pop1990": 360,
- "Pop1995": 480,
- "Pop2000": 600,
- "Pop2005": 740,
- "Pop2010": 800,
- "Pop2015": 860,
- "Pop2020": 960,
- "Pop2025": 1080,
- "Pop2050": 1212,
- "Location": [
- 19.29,
- 73.06
- ]
- },
- {
- "City": "Bhopal",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 100,
- "Pop1955": 140,
- "Pop1960": 210,
- "Pop1965": 280,
- "Pop1970": 370,
- "Pop1975": 490,
- "Pop1980": 660,
- "Pop1985": 830,
- "Pop1990": 1050,
- "Pop1995": 1230,
- "Pop2000": 1430,
- "Pop2005": 1640,
- "Pop2010": 1730,
- "Pop2015": 1840,
- "Pop2020": 2050,
- "Pop2025": 2290,
- "Pop2050": 2553,
- "Location": [
- 23.22,
- 77.41
- ]
- },
- {
- "City": "Bhubaneswar",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 20,
- "Pop1955": 20,
- "Pop1960": 40,
- "Pop1965": 60,
- "Pop1970": 100,
- "Pop1975": 140,
- "Pop1980": 210,
- "Pop1985": 290,
- "Pop1990": 400,
- "Pop1995": 500,
- "Pop2000": 640,
- "Pop2005": 790,
- "Pop2010": 840,
- "Pop2015": 910,
- "Pop2020": 1020,
- "Pop2025": 1150,
- "Pop2050": 1286,
- "Location": [
- 20.26,
- 85.83
- ]
- },
- {
- "City": "Chandigarh",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 40,
- "Pop1955": 60,
- "Pop1960": 90,
- "Pop1965": 140,
- "Pop1970": 220,
- "Pop1975": 300,
- "Pop1980": 410,
- "Pop1985": 480,
- "Pop1990": 560,
- "Pop1995": 670,
- "Pop2000": 790,
- "Pop2005": 930,
- "Pop2010": 980,
- "Pop2015": 1050,
- "Pop2020": 1170,
- "Pop2025": 1310,
- "Pop2050": 1472,
- "Location": [
- 30.73,
- 76.78
- ]
- },
- {
- "City": "Chennai",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 1490,
- "Pop1955": 1700,
- "Pop1960": 1920,
- "Pop1965": 2400,
- "Pop1970": 3060,
- "Pop1975": 3610,
- "Pop1980": 4200,
- "Pop1985": 4750,
- "Pop1990": 5340,
- "Pop1995": 5840,
- "Pop2000": 6350,
- "Pop2005": 6920,
- "Pop2010": 7160,
- "Pop2015": 7560,
- "Pop2020": 8310,
- "Pop2025": 9170,
- "Pop2050": 10129,
- "Location": [
- 13.06,
- 80.24
- ]
- },
- {
- "City": "Coimbatore",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 280,
- "Pop1955": 350,
- "Pop1960": 440,
- "Pop1965": 560,
- "Pop1970": 710,
- "Pop1975": 810,
- "Pop1980": 910,
- "Pop1985": 1000,
- "Pop1990": 1090,
- "Pop1995": 1240,
- "Pop2000": 1420,
- "Pop2005": 1620,
- "Pop2010": 1700,
- "Pop2015": 1810,
- "Pop2020": 2010,
- "Pop2025": 2240,
- "Pop2050": 2503,
- "Location": [
- 11.01,
- 76.97
- ]
- },
- {
- "City": "Delhi",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 1370,
- "Pop1955": 1780,
- "Pop1960": 2280,
- "Pop1965": 2840,
- "Pop1970": 3530,
- "Pop1975": 4430,
- "Pop1980": 5560,
- "Pop1985": 6770,
- "Pop1990": 8210,
- "Pop1995": 10090,
- "Pop2000": 12440,
- "Pop2005": 15050,
- "Pop2010": 15930,
- "Pop2015": 17020,
- "Pop2020": 18670,
- "Pop2025": 20480,
- "Pop2050": 22498,
- "Location": [
- 28.66,
- 77.21
- ]
- },
- {
- "City": "Dhanbad",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 70,
- "Pop1955": 110,
- "Pop1960": 190,
- "Pop1965": 280,
- "Pop1970": 410,
- "Pop1975": 520,
- "Pop1980": 660,
- "Pop1985": 730,
- "Pop1990": 800,
- "Pop1995": 920,
- "Pop2000": 1050,
- "Pop2005": 1190,
- "Pop2010": 1250,
- "Pop2015": 1330,
- "Pop2020": 1480,
- "Pop2025": 1660,
- "Pop2050": 1852,
- "Location": [
- 23.8,
- 86.45
- ]
- },
- {
- "City": "Durg-Bhilainagar",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 20,
- "Pop1955": 50,
- "Pop1960": 120,
- "Pop1965": 170,
- "Pop1970": 230,
- "Pop1975": 330,
- "Pop1980": 470,
- "Pop1985": 570,
- "Pop1990": 670,
- "Pop1995": 780,
- "Pop2000": 900,
- "Pop2005": 1040,
- "Pop2010": 1100,
- "Pop2015": 1170,
- "Pop2020": 1310,
- "Pop2025": 1460,
- "Pop2050": 1640,
- "Location": [
- 21.22,
- 81.43
- ]
- },
- {
- "City": "Faridabad",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 20,
- "Pop1955": 30,
- "Pop1960": 40,
- "Pop1965": 60,
- "Pop1970": 80,
- "Pop1975": 150,
- "Pop1980": 300,
- "Pop1985": 430,
- "Pop1990": 590,
- "Pop1995": 780,
- "Pop2000": 1020,
- "Pop2005": 1300,
- "Pop2010": 1390,
- "Pop2015": 1510,
- "Pop2020": 1690,
- "Pop2025": 1890,
- "Pop2050": 2109,
- "Location": [
- 28.42,
- 77.3
- ]
- },
- {
- "City": "Ghaziabad",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 40,
- "Pop1955": 50,
- "Pop1960": 70,
- "Pop1965": 90,
- "Pop1970": 120,
- "Pop1975": 180,
- "Pop1980": 270,
- "Pop1985": 370,
- "Pop1990": 490,
- "Pop1995": 680,
- "Pop2000": 930,
- "Pop2005": 1240,
- "Pop2010": 1340,
- "Pop2015": 1460,
- "Pop2020": 1640,
- "Pop2025": 1830,
- "Pop2050": 2046,
- "Location": [
- 28.67,
- 77.42
- ]
- },
- {
- "City": "Guwahati",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 40,
- "Pop1955": 70,
- "Pop1960": 130,
- "Pop1965": 160,
- "Pop1970": 200,
- "Pop1975": 250,
- "Pop1980": 330,
- "Pop1985": 430,
- "Pop1990": 560,
- "Pop1995": 680,
- "Pop2000": 800,
- "Pop2005": 930,
- "Pop2010": 980,
- "Pop2015": 1050,
- "Pop2020": 1180,
- "Pop2025": 1320,
- "Pop2050": 1477,
- "Location": [
- 26.17,
- 91.77
- ]
- },
- {
- "City": "Gwalior",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 240,
- "Pop1955": 270,
- "Pop1960": 300,
- "Pop1965": 340,
- "Pop1970": 400,
- "Pop1975": 460,
- "Pop1980": 540,
- "Pop1985": 620,
- "Pop1990": 710,
- "Pop1995": 780,
- "Pop2000": 860,
- "Pop2005": 940,
- "Pop2010": 980,
- "Pop2015": 1040,
- "Pop2020": 1160,
- "Pop2025": 1300,
- "Pop2050": 1455,
- "Location": [
- 26.14,
- 78.1
- ]
- },
- {
- "City": "Hubli-Dharwad",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 190,
- "Pop1955": 220,
- "Pop1960": 240,
- "Pop1965": 300,
- "Pop1970": 370,
- "Pop1975": 440,
- "Pop1980": 520,
- "Pop1985": 580,
- "Pop1990": 640,
- "Pop1995": 700,
- "Pop2000": 780,
- "Pop2005": 860,
- "Pop2010": 890,
- "Pop2015": 950,
- "Pop2020": 1060,
- "Pop2025": 1180,
- "Pop2050": 1327,
- "Location": [
- 15.36,
- 75.08
- ]
- },
- {
- "City": "Hyderabad",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 1100,
- "Pop1955": 1180,
- "Pop1960": 1240,
- "Pop1965": 1460,
- "Pop1970": 1750,
- "Pop1975": 2090,
- "Pop1980": 2490,
- "Pop1985": 3210,
- "Pop1990": 4190,
- "Pop1995": 4820,
- "Pop2000": 5440,
- "Pop2005": 6120,
- "Pop2010": 6380,
- "Pop2015": 6760,
- "Pop2020": 7450,
- "Pop2025": 8220,
- "Pop2050": 9092,
- "Location": [
- 17.39,
- 78.48
- ]
- },
- {
- "City": "Indore",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 300,
- "Pop1955": 340,
- "Pop1960": 390,
- "Pop1965": 460,
- "Pop1970": 550,
- "Pop1975": 660,
- "Pop1980": 810,
- "Pop1985": 940,
- "Pop1990": 1090,
- "Pop1995": 1310,
- "Pop2000": 1600,
- "Pop2005": 1910,
- "Pop2010": 2030,
- "Pop2015": 2180,
- "Pop2020": 2420,
- "Pop2025": 2700,
- "Pop2050": 3005,
- "Location": [
- 22.42,
- 75.54
- ]
- },
- {
- "City": "Jabalpur",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 250,
- "Pop1955": 300,
- "Pop1960": 360,
- "Pop1965": 430,
- "Pop1970": 520,
- "Pop1975": 620,
- "Pop1980": 740,
- "Pop1985": 810,
- "Pop1990": 880,
- "Pop1995": 980,
- "Pop2000": 1100,
- "Pop2005": 1230,
- "Pop2010": 1280,
- "Pop2015": 1370,
- "Pop2020": 1520,
- "Pop2025": 1700,
- "Pop2050": 1904,
- "Location": [
- 23.15,
- 79.97
- ]
- },
- {
- "City": "Jaipur",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 290,
- "Pop1955": 350,
- "Pop1960": 400,
- "Pop1965": 500,
- "Pop1970": 620,
- "Pop1975": 780,
- "Pop1980": 980,
- "Pop1985": 1210,
- "Pop1990": 1480,
- "Pop1995": 1830,
- "Pop2000": 2260,
- "Pop2005": 2750,
- "Pop2010": 2920,
- "Pop2015": 3140,
- "Pop2020": 3480,
- "Pop2025": 3870,
- "Pop2050": 4298,
- "Location": [
- 26.9,
- 75.8
- ]
- },
- {
- "City": "Jalandhar",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 170,
- "Pop1955": 190,
- "Pop1960": 220,
- "Pop1965": 250,
- "Pop1970": 290,
- "Pop1975": 340,
- "Pop1980": 400,
- "Pop1985": 450,
- "Pop1990": 500,
- "Pop1995": 590,
- "Pop2000": 690,
- "Pop2005": 810,
- "Pop2010": 860,
- "Pop2015": 920,
- "Pop2020": 1030,
- "Pop2025": 1150,
- "Pop2050": 1290,
- "Location": [
- 31.32,
- 75.57
- ]
- },
- {
- "City": "Jammu",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 80,
- "Pop1955": 90,
- "Pop1960": 110,
- "Pop1965": 130,
- "Pop1970": 160,
- "Pop1975": 190,
- "Pop1980": 220,
- "Pop1985": 280,
- "Pop1990": 360,
- "Pop1995": 460,
- "Pop2000": 590,
- "Pop2005": 740,
- "Pop2010": 790,
- "Pop2015": 860,
- "Pop2020": 960,
- "Pop2025": 1080,
- "Pop2050": 1211,
- "Location": [
- 33.45,
- 76.24
- ]
- },
- {
- "City": "Jamshedpur",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 210,
- "Pop1955": 260,
- "Pop1960": 320,
- "Pop1965": 380,
- "Pop1970": 440,
- "Pop1975": 540,
- "Pop1980": 650,
- "Pop1985": 740,
- "Pop1990": 820,
- "Pop1995": 940,
- "Pop2000": 1080,
- "Pop2005": 1240,
- "Pop2010": 1300,
- "Pop2015": 1390,
- "Pop2020": 1550,
- "Pop2025": 1730,
- "Pop2050": 1933,
- "Location": [
- 22.8,
- 86.18
- ]
- },
- {
- "City": "Jodhpur",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 180,
- "Pop1955": 200,
- "Pop1960": 220,
- "Pop1965": 260,
- "Pop1970": 310,
- "Pop1975": 390,
- "Pop1980": 490,
- "Pop1985": 570,
- "Pop1990": 650,
- "Pop1995": 740,
- "Pop2000": 840,
- "Pop2005": 950,
- "Pop2010": 1000,
- "Pop2015": 1060,
- "Pop2020": 1180,
- "Pop2025": 1330,
- "Pop2050": 1486,
- "Location": [
- 26.28,
- 73.02
- ]
- },
- {
- "City": "Kanpur",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 690,
- "Pop1955": 810,
- "Pop1960": 950,
- "Pop1965": 1090,
- "Pop1970": 1250,
- "Pop1975": 1420,
- "Pop1980": 1610,
- "Pop1985": 1800,
- "Pop1990": 2000,
- "Pop1995": 2290,
- "Pop2000": 2640,
- "Pop2005": 3020,
- "Pop2010": 3160,
- "Pop2015": 3370,
- "Pop2020": 3730,
- "Pop2025": 4140,
- "Pop2050": 4601,
- "Location": [
- 26.45,
- 80.31
- ]
- },
- {
- "City": "Kochi",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 160,
- "Pop1955": 210,
- "Pop1960": 270,
- "Pop1965": 340,
- "Pop1970": 420,
- "Pop1975": 530,
- "Pop1980": 670,
- "Pop1985": 860,
- "Pop1990": 1100,
- "Pop1995": 1230,
- "Pop2000": 1340,
- "Pop2005": 1460,
- "Pop2010": 1520,
- "Pop2015": 1610,
- "Pop2020": 1790,
- "Pop2025": 2000,
- "Pop2050": 2232,
- "Location": [
- 9.97,
- 76.27
- ]
- },
- {
- "City": "Kolkata",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 4510,
- "Pop1955": 5060,
- "Pop1960": 5650,
- "Pop1965": 6260,
- "Pop1970": 6930,
- "Pop1975": 7890,
- "Pop1980": 9030,
- "Pop1985": 9950,
- "Pop1990": 10890,
- "Pop1995": 11920,
- "Pop2000": 13060,
- "Pop2005": 14280,
- "Pop2010": 14790,
- "Pop2015": 15580,
- "Pop2020": 17040,
- "Pop2025": 18710,
- "Pop2050": 20560,
- "Location": [
- 22.54,
- 88.33
- ]
- },
- {
- "City": "Kota",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 60,
- "Pop1955": 80,
- "Pop1960": 120,
- "Pop1965": 150,
- "Pop1970": 200,
- "Pop1975": 270,
- "Pop1980": 350,
- "Pop1985": 430,
- "Pop1990": 520,
- "Pop1995": 600,
- "Pop2000": 690,
- "Pop2005": 790,
- "Pop2010": 830,
- "Pop2015": 880,
- "Pop2020": 990,
- "Pop2025": 1110,
- "Pop2050": 1243,
- "Location": [
- 25.18,
- 75.83
- ]
- },
- {
- "City": "Kozhikode",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 160,
- "Pop1955": 180,
- "Pop1960": 220,
- "Pop1965": 260,
- "Pop1970": 320,
- "Pop1975": 410,
- "Pop1980": 530,
- "Pop1985": 640,
- "Pop1990": 780,
- "Pop1995": 840,
- "Pop2000": 880,
- "Pop2005": 920,
- "Pop2010": 950,
- "Pop2015": 1010,
- "Pop2020": 1120,
- "Pop2025": 1260,
- "Pop2050": 1409,
- "Location": [
- 26.28,
- 75.77
- ]
- },
- {
- "City": "Lucknow",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 490,
- "Pop1955": 560,
- "Pop1960": 640,
- "Pop1965": 720,
- "Pop1970": 800,
- "Pop1975": 890,
- "Pop1980": 990,
- "Pop1985": 1250,
- "Pop1990": 1610,
- "Pop1995": 1910,
- "Pop2000": 2220,
- "Pop2005": 2570,
- "Pop2010": 2700,
- "Pop2015": 2880,
- "Pop2020": 3190,
- "Pop2025": 3550,
- "Pop2050": 3944,
- "Location": [
- 26.84,
- 80.91
- ]
- },
- {
- "City": "Ludhiana",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 150,
- "Pop1955": 190,
- "Pop1960": 240,
- "Pop1965": 300,
- "Pop1970": 390,
- "Pop1975": 480,
- "Pop1980": 590,
- "Pop1985": 770,
- "Pop1990": 1010,
- "Pop1995": 1180,
- "Pop2000": 1370,
- "Pop2005": 1570,
- "Pop2010": 1650,
- "Pop2015": 1760,
- "Pop2020": 1960,
- "Pop2025": 2190,
- "Pop2050": 2440,
- "Location": [
- 30.91,
- 75.85
- ]
- },
- {
- "City": "Madurai",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 360,
- "Pop1955": 420,
- "Pop1960": 480,
- "Pop1965": 580,
- "Pop1970": 690,
- "Pop1975": 790,
- "Pop1980": 890,
- "Pop1985": 980,
- "Pop1990": 1070,
- "Pop1995": 1130,
- "Pop2000": 1190,
- "Pop2005": 1260,
- "Pop2010": 1290,
- "Pop2015": 1370,
- "Pop2020": 1520,
- "Pop2025": 1700,
- "Pop2050": 1897,
- "Location": [
- 9.91,
- 78.12
- ]
- },
- {
- "City": "Meerut",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 230,
- "Pop1955": 250,
- "Pop1960": 280,
- "Pop1965": 320,
- "Pop1970": 360,
- "Pop1975": 430,
- "Pop1980": 520,
- "Pop1985": 660,
- "Pop1990": 820,
- "Pop1995": 980,
- "Pop2000": 1140,
- "Pop2005": 1330,
- "Pop2010": 1400,
- "Pop2015": 1500,
- "Pop2020": 1670,
- "Pop2025": 1860,
- "Pop2050": 2080,
- "Location": [
- 28.99,
- 77.7
- ]
- },
- {
- "City": "Moradabad",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 160,
- "Pop1955": 170,
- "Pop1960": 190,
- "Pop1965": 220,
- "Pop1970": 270,
- "Pop1975": 300,
- "Pop1980": 340,
- "Pop1985": 380,
- "Pop1990": 440,
- "Pop1995": 520,
- "Pop2000": 630,
- "Pop2005": 740,
- "Pop2010": 790,
- "Pop2015": 850,
- "Pop2020": 950,
- "Pop2025": 1060,
- "Pop2050": 1192,
- "Location": [
- 28.83,
- 78.78
- ]
- },
- {
- "City": "Mumbai",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 2860,
- "Pop1955": 3430,
- "Pop1960": 4060,
- "Pop1965": 4850,
- "Pop1970": 5810,
- "Pop1975": 7080,
- "Pop1980": 8660,
- "Pop1985": 10340,
- "Pop1990": 12310,
- "Pop1995": 14110,
- "Pop2000": 16090,
- "Pop2005": 18200,
- "Pop2010": 18980,
- "Pop2015": 20070,
- "Pop2020": 21950,
- "Pop2025": 24050,
- "Pop2050": 26385,
- "Location": [
- 19.07,
- 72.82
- ]
- },
- {
- "City": "Mysore",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 240,
- "Pop1955": 250,
- "Pop1960": 250,
- "Pop1965": 290,
- "Pop1970": 350,
- "Pop1975": 400,
- "Pop1980": 470,
- "Pop1985": 550,
- "Pop1990": 640,
- "Pop1995": 710,
- "Pop2000": 780,
- "Pop2005": 850,
- "Pop2010": 890,
- "Pop2015": 940,
- "Pop2020": 1050,
- "Pop2025": 1180,
- "Pop2050": 1322,
- "Location": [
- 12.3,
- 76.65
- ]
- },
- {
- "City": "Nagpur",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 470,
- "Pop1955": 560,
- "Pop1960": 670,
- "Pop1965": 780,
- "Pop1970": 910,
- "Pop1975": 1080,
- "Pop1980": 1270,
- "Pop1985": 1450,
- "Pop1990": 1640,
- "Pop1995": 1850,
- "Pop2000": 2090,
- "Pop2005": 2350,
- "Pop2010": 2450,
- "Pop2015": 2610,
- "Pop2020": 2900,
- "Pop2025": 3220,
- "Pop2050": 3583,
- "Location": [
- 21.15,
- 79.08
- ]
- },
- {
- "City": "Nashik",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 150,
- "Pop1955": 180,
- "Pop1960": 210,
- "Pop1965": 240,
- "Pop1970": 270,
- "Pop1975": 330,
- "Pop1980": 420,
- "Pop1985": 540,
- "Pop1990": 700,
- "Pop1995": 890,
- "Pop2000": 1120,
- "Pop2005": 1380,
- "Pop2010": 1470,
- "Pop2015": 1590,
- "Pop2020": 1780,
- "Pop2025": 1980,
- "Pop2050": 2213,
- "Location": [
- 20.02,
- 73.5
- ]
- },
- {
- "City": "Patna",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 280,
- "Pop1955": 320,
- "Pop1960": 360,
- "Pop1965": 410,
- "Pop1970": 480,
- "Pop1975": 640,
- "Pop1980": 880,
- "Pop1985": 990,
- "Pop1990": 1090,
- "Pop1995": 1330,
- "Pop2000": 1660,
- "Pop2005": 2030,
- "Pop2010": 2160,
- "Pop2015": 2320,
- "Pop2020": 2590,
- "Pop2025": 2880,
- "Pop2050": 3207,
- "Location": [
- 25.61,
- 85.13
- ]
- },
- {
- "City": "Pune",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 580,
- "Pop1955": 680,
- "Pop1960": 780,
- "Pop1965": 920,
- "Pop1970": 1100,
- "Pop1975": 1340,
- "Pop1980": 1640,
- "Pop1985": 2000,
- "Pop1990": 2430,
- "Pop1995": 2980,
- "Pop2000": 3660,
- "Pop2005": 4410,
- "Pop2010": 4670,
- "Pop2015": 5010,
- "Pop2020": 5540,
- "Pop2025": 6140,
- "Pop2050": 6797,
- "Location": [
- 18.53,
- 73.85
- ]
- },
- {
- "City": "Raipur",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 90,
- "Pop1955": 110,
- "Pop1960": 140,
- "Pop1965": 160,
- "Pop1970": 200,
- "Pop1975": 260,
- "Pop1980": 330,
- "Pop1985": 390,
- "Pop1990": 450,
- "Pop1995": 550,
- "Pop2000": 680,
- "Pop2005": 820,
- "Pop2010": 880,
- "Pop2015": 940,
- "Pop2020": 1060,
- "Pop2025": 1180,
- "Pop2050": 1327,
- "Location": [
- 21.23,
- 81.63
- ]
- },
- {
- "City": "Rajkot",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 130,
- "Pop1955": 160,
- "Pop1960": 190,
- "Pop1965": 230,
- "Pop1970": 290,
- "Pop1975": 360,
- "Pop1980": 430,
- "Pop1985": 530,
- "Pop1990": 640,
- "Pop1995": 790,
- "Pop2000": 970,
- "Pop2005": 1190,
- "Pop2010": 1260,
- "Pop2015": 1360,
- "Pop2020": 1520,
- "Pop2025": 1700,
- "Pop2050": 1896,
- "Location": [
- 22.3,
- 70.78
- ]
- },
- {
- "City": "Ranchi",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 100,
- "Pop1955": 120,
- "Pop1960": 140,
- "Pop1965": 180,
- "Pop1970": 240,
- "Pop1975": 340,
- "Pop1980": 480,
- "Pop1985": 550,
- "Pop1990": 610,
- "Pop1995": 710,
- "Pop2000": 840,
- "Pop2005": 990,
- "Pop2010": 1040,
- "Pop2015": 1120,
- "Pop2020": 1250,
- "Pop2025": 1400,
- "Pop2050": 1567,
- "Location": [
- 23.35,
- 85.33
- ]
- },
- {
- "City": "Salem",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 200,
- "Pop1955": 230,
- "Pop1960": 270,
- "Pop1965": 330,
- "Pop1970": 400,
- "Pop1975": 460,
- "Pop1980": 510,
- "Pop1985": 540,
- "Pop1990": 570,
- "Pop1995": 650,
- "Pop2000": 740,
- "Pop2005": 830,
- "Pop2010": 870,
- "Pop2015": 930,
- "Pop2020": 1040,
- "Pop2025": 1170,
- "Pop2050": 1309,
- "Location": [
- 11.65,
- 78.16
- ]
- },
- {
- "City": "Solapur",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 270,
- "Pop1955": 300,
- "Pop1960": 330,
- "Pop1965": 360,
- "Pop1970": 390,
- "Pop1975": 440,
- "Pop1980": 510,
- "Pop1985": 560,
- "Pop1990": 610,
- "Pop1995": 720,
- "Pop2000": 850,
- "Pop2005": 1000,
- "Pop2010": 1060,
- "Pop2015": 1140,
- "Pop2020": 1270,
- "Pop2025": 1420,
- "Pop2050": 1587,
- "Location": [
- 17.68,
- 75.92
- ]
- },
- {
- "City": "Srinagar",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 250,
- "Pop1955": 270,
- "Pop1960": 290,
- "Pop1965": 340,
- "Pop1970": 410,
- "Pop1975": 490,
- "Pop1980": 590,
- "Pop1985": 660,
- "Pop1990": 730,
- "Pop1995": 830,
- "Pop2000": 950,
- "Pop2005": 1090,
- "Pop2010": 1140,
- "Pop2015": 1220,
- "Pop2020": 1360,
- "Pop2025": 1520,
- "Pop2050": 1699,
- "Location": [
- 34.08,
- 74.8
- ]
- },
- {
- "City": "Surat",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 230,
- "Pop1955": 270,
- "Pop1960": 310,
- "Pop1965": 380,
- "Pop1970": 480,
- "Pop1975": 640,
- "Pop1980": 880,
- "Pop1985": 1140,
- "Pop1990": 1470,
- "Pop1995": 1980,
- "Pop2000": 2700,
- "Pop2005": 3560,
- "Pop2010": 3840,
- "Pop2015": 4170,
- "Pop2020": 4640,
- "Pop2025": 5140,
- "Pop2050": 5703,
- "Location": [
- 21.16,
- 72.83
- ]
- },
- {
- "City": "Thiruvananthapuram",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 180,
- "Pop1955": 210,
- "Pop1960": 240,
- "Pop1965": 300,
- "Pop1970": 390,
- "Pop1975": 450,
- "Pop1980": 510,
- "Pop1985": 640,
- "Pop1990": 800,
- "Pop1995": 850,
- "Pop2000": 880,
- "Pop2005": 930,
- "Pop2010": 950,
- "Pop2015": 1010,
- "Pop2020": 1120,
- "Pop2025": 1260,
- "Pop2050": 1408,
- "Location": [
- 8.48,
- 76.95
- ]
- },
- {
- "City": "Tiruchirappalli",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 290,
- "Pop1955": 310,
- "Pop1960": 340,
- "Pop1965": 390,
- "Pop1970": 450,
- "Pop1975": 520,
- "Pop1980": 600,
- "Pop1985": 650,
- "Pop1990": 700,
- "Pop1995": 770,
- "Pop2000": 840,
- "Pop2005": 920,
- "Pop2010": 950,
- "Pop2015": 1010,
- "Pop2020": 1130,
- "Pop2025": 1260,
- "Pop2050": 1414,
- "Location": [
- 10.81,
- 78.69
- ]
- },
- {
- "City": "Vadodara",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 210,
- "Pop1955": 250,
- "Pop1960": 300,
- "Pop1965": 370,
- "Pop1970": 450,
- "Pop1975": 570,
- "Pop1980": 720,
- "Pop1985": 890,
- "Pop1990": 1100,
- "Pop1995": 1270,
- "Pop2000": 1460,
- "Pop2005": 1680,
- "Pop2010": 1760,
- "Pop2015": 1880,
- "Pop2020": 2080,
- "Pop2025": 2320,
- "Pop2050": 2592,
- "Location": [
- 22.3,
- 73.2
- ]
- },
- {
- "City": "Varanasi",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 350,
- "Pop1955": 410,
- "Pop1960": 480,
- "Pop1965": 540,
- "Pop1970": 600,
- "Pop1975": 680,
- "Pop1980": 780,
- "Pop1985": 890,
- "Pop1990": 1010,
- "Pop1995": 1110,
- "Pop2000": 1200,
- "Pop2005": 1300,
- "Pop2010": 1350,
- "Pop2015": 1430,
- "Pop2020": 1600,
- "Pop2025": 1780,
- "Pop2050": 1991,
- "Location": [
- 25.28,
- 82.95
- ]
- },
- {
- "City": "Vijayawada",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 160,
- "Pop1955": 190,
- "Pop1960": 230,
- "Pop1965": 280,
- "Pop1970": 340,
- "Pop1975": 420,
- "Pop1980": 530,
- "Pop1985": 660,
- "Pop1990": 820,
- "Pop1995": 910,
- "Pop2000": 1000,
- "Pop2005": 1090,
- "Pop2010": 1140,
- "Pop2015": 1210,
- "Pop2020": 1350,
- "Pop2025": 1500,
- "Pop2050": 1684,
- "Location": [
- 16.51,
- 80.61
- ]
- },
- {
- "City": "Visakhapatnam",
- "Country": "India",
- "Country_ISO3": "IND",
- "Pop1950": 100,
- "Pop1955": 140,
- "Pop1960": 200,
- "Pop1965": 270,
- "Pop1970": 350,
- "Pop1975": 450,
- "Pop1980": 580,
- "Pop1985": 770,
- "Pop1990": 1020,
- "Pop1995": 1170,
- "Pop2000": 1310,
- "Pop2005": 1460,
- "Pop2010": 1530,
- "Pop2015": 1630,
- "Pop2020": 1810,
- "Pop2025": 2020,
- "Pop2050": 2256,
- "Location": [
- 17.74,
- 83.33
- ]
- },
- {
- "City": "Adelaide",
- "Country": "Australia",
- "Country_ISO3": "AUS",
- "Pop1950": 430,
- "Pop1955": 500,
- "Pop1960": 570,
- "Pop1965": 700,
- "Pop1970": 790,
- "Pop1975": 880,
- "Pop1980": 940,
- "Pop1985": 990,
- "Pop1990": 1050,
- "Pop1995": 1070,
- "Pop2000": 1100,
- "Pop2005": 1130,
- "Pop2010": 1140,
- "Pop2015": 1170,
- "Pop2020": 1210,
- "Pop2025": 1260,
- "Pop2050": 1300,
- "Location": [
- -34.81,
- 138.52
- ]
- },
- {
- "City": "Brisbane",
- "Country": "Australia",
- "Country_ISO3": "AUS",
- "Pop1950": 440,
- "Pop1955": 520,
- "Pop1960": 600,
- "Pop1965": 700,
- "Pop1970": 800,
- "Pop1975": 930,
- "Pop1980": 1070,
- "Pop1985": 1190,
- "Pop1990": 1330,
- "Pop1995": 1470,
- "Pop2000": 1600,
- "Pop2005": 1780,
- "Pop2010": 1860,
- "Pop2015": 1970,
- "Pop2020": 2090,
- "Pop2025": 2170,
- "Pop2050": 2233,
- "Location": [
- -27.45,
- 153.02
- ]
- },
- {
- "City": "Melbourne",
- "Country": "Australia",
- "Country_ISO3": "AUS",
- "Pop1950": 1330,
- "Pop1955": 1570,
- "Pop1960": 1850,
- "Pop1965": 2070,
- "Pop1970": 2330,
- "Pop1975": 2560,
- "Pop1980": 2760,
- "Pop1985": 2940,
- "Pop1990": 3120,
- "Pop1995": 3260,
- "Pop2000": 3430,
- "Pop2005": 3640,
- "Pop2010": 3730,
- "Pop2015": 3850,
- "Pop2020": 4010,
- "Pop2025": 4140,
- "Pop2050": 4238,
- "Location": [
- -37.85,
- 145.07
- ]
- },
- {
- "City": "Perth",
- "Country": "Australia",
- "Country_ISO3": "AUS",
- "Pop1950": 310,
- "Pop1955": 360,
- "Pop1960": 410,
- "Pop1965": 480,
- "Pop1970": 610,
- "Pop1975": 770,
- "Pop1980": 900,
- "Pop1985": 1020,
- "Pop1990": 1160,
- "Pop1995": 1270,
- "Pop2000": 1370,
- "Pop2005": 1480,
- "Pop2010": 1530,
- "Pop2015": 1600,
- "Pop2020": 1680,
- "Pop2025": 1750,
- "Pop2050": 1800,
- "Location": [
- -31.95,
- 115.85
- ]
- },
- {
- "City": "Sydney",
- "Country": "Australia",
- "Country_ISO3": "AUS",
- "Pop1950": 1690,
- "Pop1955": 1910,
- "Pop1960": 2140,
- "Pop1965": 2390,
- "Pop1970": 2670,
- "Pop1975": 2960,
- "Pop1980": 3230,
- "Pop1985": 3430,
- "Pop1990": 3630,
- "Pop1995": 3840,
- "Pop2000": 4080,
- "Pop2005": 4260,
- "Pop2010": 4330,
- "Pop2015": 4430,
- "Pop2020": 4580,
- "Pop2025": 4720,
- "Pop2050": 4826,
- "Location": [
- -33.88,
- 151.02
- ]
- },
- {
- "City": "Bandar Lampung",
- "Country": "Indonesia",
- "Country_ISO3": "IDN",
- "Pop1950": 30,
- "Pop1955": 40,
- "Pop1960": 60,
- "Pop1965": 100,
- "Pop1970": 150,
- "Pop1975": 230,
- "Pop1980": 350,
- "Pop1985": 400,
- "Pop1990": 450,
- "Pop1995": 580,
- "Pop2000": 740,
- "Pop2005": 820,
- "Pop2010": 860,
- "Pop2015": 940,
- "Pop2020": 1060,
- "Pop2025": 1170,
- "Pop2050": 1260,
- "Location": [
- -5.45,
- 105.26
- ]
- },
- {
- "City": "Bandung",
- "Country": "Indonesia",
- "Country_ISO3": "IDN",
- "Pop1950": 510,
- "Pop1955": 680,
- "Pop1960": 900,
- "Pop1965": 1050,
- "Pop1970": 1170,
- "Pop1975": 1300,
- "Pop1980": 1450,
- "Pop1985": 1720,
- "Pop1990": 2040,
- "Pop1995": 2100,
- "Pop2000": 2140,
- "Pop2005": 2300,
- "Pop2010": 2390,
- "Pop2015": 2570,
- "Pop2020": 2890,
- "Pop2025": 3160,
- "Pop2050": 3370,
- "Location": [
- -6.91,
- 107.6
- ]
- },
- {
- "City": "Bogor",
- "Country": "Indonesia",
- "Country_ISO3": "IDN",
- "Pop1950": 110,
- "Pop1955": 130,
- "Pop1960": 150,
- "Pop1965": 200,
- "Pop1970": 300,
- "Pop1975": 410,
- "Pop1980": 540,
- "Pop1985": 570,
- "Pop1990": 600,
- "Pop1995": 670,
- "Pop2000": 750,
- "Pop2005": 860,
- "Pop2010": 920,
- "Pop2015": 1000,
- "Pop2020": 1140,
- "Pop2025": 1260,
- "Pop2050": 1351,
- "Location": [
- -6.6,
- 106.8
- ]
- },
- {
- "City": "Jakarta",
- "Country": "Indonesia",
- "Country_ISO3": "IDN",
- "Pop1950": 1450,
- "Pop1955": 1970,
- "Pop1960": 2680,
- "Pop1965": 3300,
- "Pop1970": 3920,
- "Pop1975": 4810,
- "Pop1980": 5980,
- "Pop1985": 7010,
- "Pop1990": 8180,
- "Pop1995": 8320,
- "Pop2000": 8390,
- "Pop2005": 8840,
- "Pop2010": 9120,
- "Pop2015": 9700,
- "Pop2020": 10790,
- "Pop2025": 11690,
- "Pop2050": 12363,
- "Location": [
- -6.16,
- 106.8
- ]
- },
- {
- "City": "Malang",
- "Country": "Indonesia",
- "Country_ISO3": "IDN",
- "Pop1950": 210,
- "Pop1955": 260,
- "Pop1960": 320,
- "Pop1965": 370,
- "Pop1970": 410,
- "Pop1975": 460,
- "Pop1980": 510,
- "Pop1985": 590,
- "Pop1990": 690,
- "Pop1995": 720,
- "Pop2000": 760,
- "Pop2005": 780,
- "Pop2010": 800,
- "Pop2015": 860,
- "Pop2020": 970,
- "Pop2025": 1060,
- "Pop2050": 1146,
- "Location": [
- -7.98,
- 112.62
- ]
- },
- {
- "City": "Medan",
- "Country": "Indonesia",
- "Country_ISO3": "IDN",
- "Pop1950": 280,
- "Pop1955": 360,
- "Pop1960": 450,
- "Pop1965": 530,
- "Pop1970": 610,
- "Pop1975": 880,
- "Pop1980": 1340,
- "Pop1985": 1530,
- "Pop1990": 1720,
- "Pop1995": 1820,
- "Pop2000": 1910,
- "Pop2005": 2040,
- "Pop2010": 2120,
- "Pop2015": 2260,
- "Pop2020": 2540,
- "Pop2025": 2790,
- "Pop2050": 2977,
- "Location": [
- 3.58,
- 98.67
- ]
- },
- {
- "City": "Padang",
- "Country": "Indonesia",
- "Country_ISO3": "IDN",
- "Pop1950": 100,
- "Pop1955": 120,
- "Pop1960": 140,
- "Pop1965": 160,
- "Pop1970": 190,
- "Pop1975": 280,
- "Pop1980": 460,
- "Pop1985": 550,
- "Pop1990": 630,
- "Pop1995": 670,
- "Pop2000": 720,
- "Pop2005": 810,
- "Pop2010": 860,
- "Pop2015": 930,
- "Pop2020": 1060,
- "Pop2025": 1170,
- "Pop2050": 1254,
- "Location": [
- -0.95,
- 100.35
- ]
- },
- {
- "City": "Palembang",
- "Country": "Indonesia",
- "Country_ISO3": "IDN",
- "Pop1950": 280,
- "Pop1955": 350,
- "Pop1960": 450,
- "Pop1965": 510,
- "Pop1970": 570,
- "Pop1975": 660,
- "Pop1980": 780,
- "Pop1985": 940,
- "Pop1990": 1130,
- "Pop1995": 1290,
- "Pop2000": 1460,
- "Pop2005": 1660,
- "Pop2010": 1750,
- "Pop2015": 1900,
- "Pop2020": 2150,
- "Pop2025": 2360,
- "Pop2050": 2526,
- "Location": [
- -2.99,
- 104.75
- ]
- },
- {
- "City": "Pekan Baru",
- "Country": "Indonesia",
- "Country_ISO3": "IDN",
- "Pop1950": 40,
- "Pop1955": 50,
- "Pop1960": 70,
- "Pop1965": 90,
- "Pop1970": 120,
- "Pop1975": 150,
- "Pop1980": 180,
- "Pop1985": 270,
- "Pop1990": 390,
- "Pop1995": 480,
- "Pop2000": 590,
- "Pop2005": 740,
- "Pop2010": 800,
- "Pop2015": 890,
- "Pop2020": 1020,
- "Pop2025": 1130,
- "Pop2050": 1213,
- "Location": [
- 0.53,
- 101.45
- ]
- },
- {
- "City": "Semarang",
- "Country": "Indonesia",
- "Country_ISO3": "IDN",
- "Pop1950": 370,
- "Pop1955": 420,
- "Pop1960": 480,
- "Pop1965": 550,
- "Pop1970": 630,
- "Pop1975": 780,
- "Pop1980": 1010,
- "Pop1985": 1130,
- "Pop1990": 1240,
- "Pop1995": 1330,
- "Pop2000": 1430,
- "Pop2005": 1380,
- "Pop2010": 1400,
- "Pop2015": 1460,
- "Pop2020": 1630,
- "Pop2025": 1790,
- "Pop2050": 1921,
- "Location": [
- -6.97,
- 110.42
- ]
- },
- {
- "City": "Surabaya",
- "Country": "Indonesia",
- "Country_ISO3": "IDN",
- "Pop1950": 680,
- "Pop1955": 810,
- "Pop1960": 960,
- "Pop1965": 1180,
- "Pop1970": 1470,
- "Pop1975": 1740,
- "Pop1980": 2010,
- "Pop1985": 2230,
- "Pop1990": 2470,
- "Pop1995": 2540,
- "Pop2000": 2610,
- "Pop2005": 2750,
- "Pop2010": 2840,
- "Pop2015": 3040,
- "Pop2020": 3400,
- "Pop2025": 3720,
- "Pop2050": 3962,
- "Location": [
- -7.39,
- 112.68
- ]
- },
- {
- "City": "Ujung Pandang",
- "Country": "Indonesia",
- "Country_ISO3": "IDN",
- "Pop1950": 220,
- "Pop1955": 280,
- "Pop1960": 360,
- "Pop1965": 400,
- "Pop1970": 420,
- "Pop1975": 500,
- "Pop1980": 630,
- "Pop1985": 720,
- "Pop1990": 820,
- "Pop1995": 930,
- "Pop2000": 1050,
- "Pop2005": 1190,
- "Pop2010": 1260,
- "Pop2015": 1370,
- "Pop2020": 1560,
- "Pop2025": 1710,
- "Pop2050": 1837,
- "Location": [
- -5.13,
- 119.41
- ]
- },
- {
- "City": "Ahvaz",
- "Country": "Iran (Islamic Republic of)",
- "Country_ISO3": "IRN",
- "Pop1950": 80,
- "Pop1955": 110,
- "Pop1960": 150,
- "Pop1965": 190,
- "Pop1970": 250,
- "Pop1975": 310,
- "Pop1980": 410,
- "Pop1985": 540,
- "Pop1990": 680,
- "Pop1995": 780,
- "Pop2000": 870,
- "Pop2005": 960,
- "Pop2010": 1000,
- "Pop2015": 1060,
- "Pop2020": 1160,
- "Pop2025": 1250,
- "Pop2050": 1326,
- "Location": [
- 31.31,
- 48.68
- ]
- },
- {
- "City": "Esfahan",
- "Country": "Iran (Islamic Republic of)",
- "Country_ISO3": "IRN",
- "Pop1950": 180,
- "Pop1955": 240,
- "Pop1960": 310,
- "Pop1965": 400,
- "Pop1970": 540,
- "Pop1975": 770,
- "Pop1980": 900,
- "Pop1985": 980,
- "Pop1990": 1090,
- "Pop1995": 1230,
- "Pop2000": 1380,
- "Pop2005": 1550,
- "Pop2010": 1630,
- "Pop2015": 1740,
- "Pop2020": 1920,
- "Pop2025": 2070,
- "Pop2050": 2185,
- "Location": [
- 32.65,
- 51.67
- ]
- },
- {
- "City": "Karaj",
- "Country": "Iran (Islamic Republic of)",
- "Country_ISO3": "IRN",
- "Pop1950": 10,
- "Pop1955": 10,
- "Pop1960": 20,
- "Pop1965": 40,
- "Pop1970": 70,
- "Pop1975": 120,
- "Pop1980": 220,
- "Pop1985": 390,
- "Pop1990": 690,
- "Pop1995": 900,
- "Pop2000": 1090,
- "Pop2005": 1320,
- "Pop2010": 1420,
- "Pop2015": 1580,
- "Pop2020": 1800,
- "Pop2025": 1950,
- "Pop2050": 2061,
- "Location": [
- 35.81,
- 50.96
- ]
- },
- {
- "City": "Kermanshah",
- "Country": "Iran (Islamic Republic of)",
- "Country_ISO3": "IRN",
- "Pop1950": 100,
- "Pop1955": 120,
- "Pop1960": 140,
- "Pop1965": 180,
- "Pop1970": 220,
- "Pop1975": 270,
- "Pop1980": 370,
- "Pop1985": 520,
- "Pop1990": 610,
- "Pop1995": 680,
- "Pop2000": 730,
- "Pop2005": 780,
- "Pop2010": 800,
- "Pop2015": 840,
- "Pop2020": 910,
- "Pop2025": 980,
- "Pop2050": 1041,
- "Location": [
- 34.3,
- 47.05
- ]
- },
- {
- "City": "Mashhad",
- "Country": "Iran (Islamic Republic of)",
- "Country_ISO3": "IRN",
- "Pop1950": 170,
- "Pop1955": 220,
- "Pop1960": 290,
- "Pop1965": 380,
- "Pop1970": 510,
- "Pop1975": 680,
- "Pop1980": 950,
- "Pop1985": 1340,
- "Pop1990": 1680,
- "Pop1995": 1850,
- "Pop2000": 2070,
- "Pop2005": 2350,
- "Pop2010": 2470,
- "Pop2015": 2650,
- "Pop2020": 2930,
- "Pop2025": 3150,
- "Pop2050": 3315,
- "Location": [
- 36.28,
- 59.59
- ]
- },
- {
- "City": "Qom",
- "Country": "Iran (Islamic Republic of)",
- "Country_ISO3": "IRN",
- "Pop1950": 80,
- "Pop1955": 90,
- "Pop1960": 110,
- "Pop1965": 130,
- "Pop1970": 170,
- "Pop1975": 230,
- "Pop1980": 330,
- "Pop1985": 490,
- "Pop1990": 620,
- "Pop1995": 740,
- "Pop2000": 840,
- "Pop2005": 930,
- "Pop2010": 970,
- "Pop2015": 1040,
- "Pop2020": 1140,
- "Pop2025": 1230,
- "Pop2050": 1302,
- "Location": [
- 34.65,
- 50.88
- ]
- },
- {
- "City": "Shiraz",
- "Country": "Iran (Islamic Republic of)",
- "Country_ISO3": "IRN",
- "Pop1950": 130,
- "Pop1955": 160,
- "Pop1960": 200,
- "Pop1965": 250,
- "Pop1970": 320,
- "Pop1975": 420,
- "Pop1980": 580,
- "Pop1985": 820,
- "Pop1990": 950,
- "Pop1995": 1030,
- "Pop2000": 1120,
- "Pop2005": 1200,
- "Pop2010": 1240,
- "Pop2015": 1300,
- "Pop2020": 1410,
- "Pop2025": 1520,
- "Pop2050": 1608,
- "Location": [
- 29.6,
- 52.53
- ]
- },
- {
- "City": "Tabriz",
- "Country": "Iran (Islamic Republic of)",
- "Country_ISO3": "IRN",
- "Pop1950": 240,
- "Pop1955": 280,
- "Pop1960": 330,
- "Pop1965": 390,
- "Pop1970": 500,
- "Pop1975": 660,
- "Pop1980": 800,
- "Pop1985": 940,
- "Pop1990": 1060,
- "Pop1995": 1160,
- "Pop2000": 1260,
- "Pop2005": 1370,
- "Pop2010": 1410,
- "Pop2015": 1480,
- "Pop2020": 1610,
- "Pop2025": 1740,
- "Pop2050": 1834,
- "Location": [
- 38.08,
- 46.28
- ]
- },
- {
- "City": "Tehran",
- "Country": "Iran (Islamic Republic of)",
- "Country_ISO3": "IRN",
- "Pop1950": 1040,
- "Pop1955": 1400,
- "Pop1960": 1870,
- "Pop1965": 2510,
- "Pop1970": 3290,
- "Pop1975": 4270,
- "Pop1980": 5080,
- "Pop1985": 5840,
- "Pop1990": 6360,
- "Pop1995": 6690,
- "Pop2000": 7130,
- "Pop2005": 7650,
- "Pop2010": 7870,
- "Pop2015": 8220,
- "Pop2020": 8830,
- "Pop2025": 9400,
- "Pop2050": 9814,
- "Location": [
- 35.77,
- 51.44
- ]
- },
- {
- "City": "Al-Basrah",
- "Country": "Iraq",
- "Country_ISO3": "IRQ",
- "Pop1950": 120,
- "Pop1955": 150,
- "Pop1960": 200,
- "Pop1965": 300,
- "Pop1970": 330,
- "Pop1975": 350,
- "Pop1980": 370,
- "Pop1985": 400,
- "Pop1990": 470,
- "Pop1995": 630,
- "Pop2000": 760,
- "Pop2005": 840,
- "Pop2010": 870,
- "Pop2015": 920,
- "Pop2020": 1020,
- "Pop2025": 1140,
- "Pop2050": 1270,
- "Location": [
- 30.5,
- 47.76
- ]
- },
- {
- "City": "Al-Mawsil",
- "Country": "Iraq",
- "Country_ISO3": "IRQ",
- "Pop1950": 140,
- "Pop1955": 170,
- "Pop1960": 200,
- "Pop1965": 260,
- "Pop1970": 320,
- "Pop1975": 400,
- "Pop1980": 490,
- "Pop1985": 600,
- "Pop1990": 740,
- "Pop1995": 890,
- "Pop2000": 1060,
- "Pop2005": 1240,
- "Pop2010": 1320,
- "Pop2015": 1450,
- "Pop2020": 1680,
- "Pop2025": 1890,
- "Pop2050": 2097,
- "Location": [
- 36.33,
- 43.13
- ]
- },
- {
- "City": "Baghdad",
- "Country": "Iraq",
- "Country_ISO3": "IRQ",
- "Pop1950": 580,
- "Pop1955": 720,
- "Pop1960": 1020,
- "Pop1965": 1610,
- "Pop1970": 2070,
- "Pop1975": 2620,
- "Pop1980": 3140,
- "Pop1985": 3610,
- "Pop1990": 4090,
- "Pop1995": 4600,
- "Pop2000": 5200,
- "Pop2005": 5330,
- "Pop2010": 5050,
- "Pop2015": 5890,
- "Pop2020": 6620,
- "Pop2025": 7340,
- "Pop2050": 8060,
- "Location": [
- 33.33,
- 44.39
- ]
- },
- {
- "City": "Irbil",
- "Country": "Iraq",
- "Country_ISO3": "IRQ",
- "Pop1950": 30,
- "Pop1955": 40,
- "Pop1960": 50,
- "Pop1965": 90,
- "Pop1970": 130,
- "Pop1975": 190,
- "Pop1980": 280,
- "Pop1985": 410,
- "Pop1990": 540,
- "Pop1995": 640,
- "Pop2000": 760,
- "Pop2005": 870,
- "Pop2010": 930,
- "Pop2015": 1010,
- "Pop2020": 1160,
- "Pop2025": 1300,
- "Pop2050": 1450,
- "Location": [
- 36.16,
- 44.01
- ]
- },
- {
- "City": "Dublin",
- "Country": "Ireland",
- "Country_ISO3": "IRL",
- "Pop1950": 630,
- "Pop1955": 650,
- "Pop1960": 660,
- "Pop1965": 720,
- "Pop1970": 770,
- "Pop1975": 830,
- "Pop1980": 900,
- "Pop1985": 920,
- "Pop1990": 920,
- "Pop1995": 950,
- "Pop2000": 990,
- "Pop2005": 1040,
- "Pop2010": 1060,
- "Pop2015": 1100,
- "Pop2020": 1180,
- "Pop2025": 1260,
- "Pop2050": 1332,
- "Location": [
- 53.34,
- -6.25
- ]
- },
- {
- "City": "Hefa",
- "Country": "Israel",
- "Country_ISO3": "ISR",
- "Pop1950": 200,
- "Pop1955": 230,
- "Pop1960": 260,
- "Pop1965": 290,
- "Pop1970": 320,
- "Pop1975": 350,
- "Pop1980": 370,
- "Pop1985": 440,
- "Pop1990": 580,
- "Pop1995": 780,
- "Pop2000": 890,
- "Pop2005": 990,
- "Pop2010": 1010,
- "Pop2015": 1040,
- "Pop2020": 1100,
- "Pop2025": 1160,
- "Pop2050": 1210,
- "Location": [
- 32.76,
- 35
- ]
- },
- {
- "City": "Tel Aviv-Yafo",
- "Country": "Israel",
- "Country_ISO3": "ISR",
- "Pop1950": 420,
- "Pop1955": 560,
- "Pop1960": 740,
- "Pop1965": 880,
- "Pop1970": 1030,
- "Pop1975": 1210,
- "Pop1980": 1420,
- "Pop1985": 1680,
- "Pop1990": 2030,
- "Pop1995": 2440,
- "Pop2000": 2750,
- "Pop2005": 3010,
- "Pop2010": 3110,
- "Pop2015": 3260,
- "Pop2020": 3450,
- "Pop2025": 3600,
- "Pop2050": 3726,
- "Location": [
- 32.04,
- 34.76
- ]
- },
- {
- "City": "Milano",
- "Country": "Italy",
- "Country_ISO3": "ITA",
- "Pop1950": 1880,
- "Pop1955": 2100,
- "Pop1960": 2400,
- "Pop1965": 2700,
- "Pop1970": 3020,
- "Pop1975": 3130,
- "Pop1980": 3170,
- "Pop1985": 3130,
- "Pop1990": 3060,
- "Pop1995": 3020,
- "Pop2000": 2980,
- "Pop2005": 2950,
- "Pop2010": 2940,
- "Pop2015": 2940,
- "Pop2020": 2940,
- "Pop2025": 2940,
- "Pop2050": 2938,
- "Location": [
- 45.47,
- 9.18
- ]
- },
- {
- "City": "Napoli",
- "Country": "Italy",
- "Country_ISO3": "ITA",
- "Pop1950": 1500,
- "Pop1955": 1620,
- "Pop1960": 1760,
- "Pop1965": 1880,
- "Pop1970": 2000,
- "Pop1975": 2100,
- "Pop1980": 2190,
- "Pop1985": 2210,
- "Pop1990": 2210,
- "Pop1995": 2220,
- "Pop2000": 2230,
- "Pop2005": 2250,
- "Pop2010": 2250,
- "Pop2015": 2250,
- "Pop2020": 2250,
- "Pop2025": 2250,
- "Pop2050": 2254,
- "Location": [
- 40.83,
- 14.25
- ]
- },
- {
- "City": "Palermo",
- "Country": "Italy",
- "Country_ISO3": "ITA",
- "Pop1950": 590,
- "Pop1955": 640,
- "Pop1960": 690,
- "Pop1965": 720,
- "Pop1970": 750,
- "Pop1975": 780,
- "Pop1980": 820,
- "Pop1985": 830,
- "Pop1990": 840,
- "Pop1995": 850,
- "Pop2000": 860,
- "Pop2005": 860,
- "Pop2010": 860,
- "Pop2015": 860,
- "Pop2020": 870,
- "Pop2025": 870,
- "Pop2050": 871,
- "Location": [
- 38.12,
- 13.35
- ]
- },
- {
- "City": "Rome",
- "Country": "Italy",
- "Country_ISO3": "ITA",
- "Pop1950": 1880,
- "Pop1955": 2140,
- "Pop1960": 2460,
- "Pop1965": 2780,
- "Pop1970": 3140,
- "Pop1975": 3300,
- "Pop1980": 3390,
- "Pop1985": 3430,
- "Pop1990": 3450,
- "Pop1995": 3420,
- "Pop2000": 3380,
- "Pop2005": 3350,
- "Pop2010": 3340,
- "Pop2015": 3330,
- "Pop2020": 3330,
- "Pop2025": 3330,
- "Pop2050": 3330,
- "Location": [
- 41.87,
- 12.51
- ]
- },
- {
- "City": "Torino",
- "Country": "Italy",
- "Country_ISO3": "ITA",
- "Pop1950": 1010,
- "Pop1955": 1150,
- "Pop1960": 1350,
- "Pop1965": 1550,
- "Pop1970": 1760,
- "Pop1975": 1840,
- "Pop1980": 1860,
- "Pop1985": 1830,
- "Pop1990": 1780,
- "Pop1995": 1730,
- "Pop2000": 1690,
- "Pop2005": 1660,
- "Pop2010": 1650,
- "Pop2015": 1650,
- "Pop2020": 1640,
- "Pop2025": 1640,
- "Pop2050": 1645,
- "Location": [
- 45.07,
- 7.66
- ]
- },
- {
- "City": "Abidjan",
- "Country": "Côte d'Ivoire",
- "Country_ISO3": "CIV",
- "Pop1950": 60,
- "Pop1955": 120,
- "Pop1960": 190,
- "Pop1965": 310,
- "Pop1970": 550,
- "Pop1975": 970,
- "Pop1980": 1380,
- "Pop1985": 1720,
- "Pop1990": 2100,
- "Pop1995": 2540,
- "Pop2000": 3030,
- "Pop2005": 3560,
- "Pop2010": 3800,
- "Pop2015": 4180,
- "Pop2020": 4810,
- "Pop2025": 5430,
- "Pop2050": 6031,
- "Location": [
- 5.32,
- -4.02
- ]
- },
- {
- "City": "Fukuoka-Kitakyushu",
- "Country": "Japan",
- "Country_ISO3": "JPN",
- "Pop1950": 950,
- "Pop1955": 1150,
- "Pop1960": 1340,
- "Pop1965": 1490,
- "Pop1970": 1650,
- "Pop1975": 1850,
- "Pop1980": 2030,
- "Pop1985": 2220,
- "Pop1990": 2490,
- "Pop1995": 2620,
- "Pop2000": 2720,
- "Pop2005": 2770,
- "Pop2010": 2790,
- "Pop2015": 2820,
- "Pop2020": 2830,
- "Pop2025": 2830,
- "Pop2050": 2834,
- "Location": [
- 33.57,
- 130.4
- ]
- },
- {
- "City": "Hiroshima",
- "Country": "Japan",
- "Country_ISO3": "JPN",
- "Pop1950": 500,
- "Pop1955": 650,
- "Pop1960": 830,
- "Pop1965": 1070,
- "Pop1970": 1380,
- "Pop1975": 1770,
- "Pop1980": 1820,
- "Pop1985": 1920,
- "Pop1990": 1990,
- "Pop1995": 2040,
- "Pop2000": 2040,
- "Pop2005": 2040,
- "Pop2010": 2040,
- "Pop2015": 2040,
- "Pop2020": 2050,
- "Pop2025": 2050,
- "Pop2050": 2046,
- "Location": [
- 34.37,
- 132.44
- ]
- },
- {
- "City": "Kyoto",
- "Country": "Japan",
- "Country_ISO3": "JPN",
- "Pop1950": 1000,
- "Pop1955": 1090,
- "Pop1960": 1160,
- "Pop1965": 1230,
- "Pop1970": 1300,
- "Pop1975": 1620,
- "Pop1980": 1700,
- "Pop1985": 1710,
- "Pop1990": 1760,
- "Pop1995": 1800,
- "Pop2000": 1810,
- "Pop2005": 1800,
- "Pop2010": 1800,
- "Pop2015": 1800,
- "Pop2020": 1800,
- "Pop2025": 1800,
- "Pop2050": 1804,
- "Location": [
- 35,
- 135.75
- ]
- },
- {
- "City": "Nagoya",
- "Country": "Japan",
- "Country_ISO3": "JPN",
- "Pop1950": 990,
- "Pop1955": 1230,
- "Pop1960": 1560,
- "Pop1965": 1760,
- "Pop1970": 2000,
- "Pop1975": 2290,
- "Pop1980": 2590,
- "Pop1985": 2710,
- "Pop1990": 2950,
- "Pop1995": 3060,
- "Pop2000": 3120,
- "Pop2005": 3200,
- "Pop2010": 3230,
- "Pop2015": 3270,
- "Pop2020": 3290,
- "Pop2025": 3300,
- "Pop2050": 3295,
- "Location": [
- 35.15,
- 136.92
- ]
- },
- {
- "City": "Osaka-Kobe",
- "Country": "Japan",
- "Country_ISO3": "JPN",
- "Pop1950": 4150,
- "Pop1955": 5120,
- "Pop1960": 6230,
- "Pop1965": 7650,
- "Pop1970": 9410,
- "Pop1975": 9840,
- "Pop1980": 9990,
- "Pop1985": 10350,
- "Pop1990": 11040,
- "Pop1995": 11050,
- "Pop2000": 11160,
- "Pop2005": 11260,
- "Pop2010": 11290,
- "Pop2015": 11340,
- "Pop2020": 11360,
- "Pop2025": 11370,
- "Pop2050": 11368,
- "Location": [
- 34.63,
- 135.51
- ]
- },
- {
- "City": "Sapporo",
- "Country": "Japan",
- "Country_ISO3": "JPN",
- "Pop1950": 750,
- "Pop1955": 890,
- "Pop1960": 1060,
- "Pop1965": 1250,
- "Pop1970": 1480,
- "Pop1975": 1750,
- "Pop1980": 2000,
- "Pop1985": 2160,
- "Pop1990": 2320,
- "Pop1995": 2480,
- "Pop2000": 2510,
- "Pop2005": 2530,
- "Pop2010": 2540,
- "Pop2015": 2560,
- "Pop2020": 2560,
- "Pop2025": 2560,
- "Pop2050": 2565,
- "Location": [
- 43.05,
- 141.34
- ]
- },
- {
- "City": "Sendai",
- "Country": "Japan",
- "Country_ISO3": "JPN",
- "Pop1950": 540,
- "Pop1955": 670,
- "Pop1960": 820,
- "Pop1965": 1020,
- "Pop1970": 1260,
- "Pop1975": 1570,
- "Pop1980": 1730,
- "Pop1985": 1860,
- "Pop1990": 2020,
- "Pop1995": 2140,
- "Pop2000": 2180,
- "Pop2005": 2230,
- "Pop2010": 2250,
- "Pop2015": 2270,
- "Pop2020": 2290,
- "Pop2025": 2290,
- "Pop2050": 2288,
- "Location": [
- 38.25,
- 140.89
- ]
- },
- {
- "City": "Tokyo",
- "Country": "Japan",
- "Country_ISO3": "JPN",
- "Pop1950": 11280,
- "Pop1955": 13710,
- "Pop1960": 16680,
- "Pop1965": 20280,
- "Pop1970": 23300,
- "Pop1975": 26620,
- "Pop1980": 28550,
- "Pop1985": 30300,
- "Pop1990": 32530,
- "Pop1995": 33590,
- "Pop2000": 34450,
- "Pop2005": 35330,
- "Pop2010": 35680,
- "Pop2015": 36090,
- "Pop2020": 36370,
- "Pop2025": 36400,
- "Pop2050": 36400,
- "Location": [
- 35.68,
- 139.8
- ]
- },
- {
- "City": "Almaty",
- "Country": "Kazakhstan",
- "Country_ISO3": "KAZ",
- "Pop1950": 350,
- "Pop1955": 440,
- "Pop1960": 530,
- "Pop1965": 630,
- "Pop1970": 740,
- "Pop1975": 860,
- "Pop1980": 970,
- "Pop1985": 1030,
- "Pop1990": 1080,
- "Pop1995": 1110,
- "Pop2000": 1140,
- "Pop2005": 1190,
- "Pop2010": 1210,
- "Pop2015": 1240,
- "Pop2020": 1300,
- "Pop2025": 1360,
- "Pop2050": 1404,
- "Location": [
- 43.25,
- 76.91
- ]
- },
- {
- "City": "Kabul",
- "Country": "Afghanistan",
- "Country_ISO3": "AFG",
- "Pop1950": 130,
- "Pop1955": 180,
- "Pop1960": 260,
- "Pop1965": 370,
- "Pop1970": 470,
- "Pop1975": 670,
- "Pop1980": 980,
- "Pop1985": 1160,
- "Pop1990": 1310,
- "Pop1995": 1620,
- "Pop2000": 1960,
- "Pop2005": 2990,
- "Pop2010": 3280,
- "Pop2015": 3770,
- "Pop2020": 4730,
- "Pop2025": 5840,
- "Pop2050": 7175,
- "Location": [
- 34.53,
- 69.13
- ]
- },
- {
- "City": "Wien",
- "Country": "Austria",
- "Country_ISO3": "AUT",
- "Pop1950": 2090,
- "Pop1955": 2090,
- "Pop1960": 2090,
- "Pop1965": 2080,
- "Pop1970": 2070,
- "Pop1975": 2060,
- "Pop1980": 2050,
- "Pop1985": 2070,
- "Pop1990": 2100,
- "Pop1995": 2130,
- "Pop2000": 2160,
- "Pop2005": 2260,
- "Pop2010": 2320,
- "Pop2015": 2380,
- "Pop2020": 2450,
- "Pop2025": 2480,
- "Pop2050": 2496,
- "Location": [
- 48.2,
- 16.32
- ]
- },
- {
- "City": "Amman",
- "Country": "Jordan",
- "Country_ISO3": "JOR",
- "Pop1950": 90,
- "Pop1955": 140,
- "Pop1960": 220,
- "Pop1965": 300,
- "Pop1970": 390,
- "Pop1975": 500,
- "Pop1980": 640,
- "Pop1985": 740,
- "Pop1990": 850,
- "Pop1995": 970,
- "Pop2000": 1010,
- "Pop2005": 1040,
- "Pop2010": 1060,
- "Pop2015": 1110,
- "Pop2020": 1180,
- "Pop2025": 1270,
- "Pop2050": 1359,
- "Location": [
- 31.94,
- 35.93
- ]
- },
- {
- "City": "Mombasa",
- "Country": "Kenya",
- "Country_ISO3": "KEN",
- "Pop1950": 90,
- "Pop1955": 120,
- "Pop1960": 160,
- "Pop1965": 200,
- "Pop1970": 250,
- "Pop1975": 300,
- "Pop1980": 350,
- "Pop1985": 410,
- "Pop1990": 480,
- "Pop1995": 570,
- "Pop2000": 690,
- "Pop2005": 820,
- "Pop2010": 880,
- "Pop2015": 980,
- "Pop2020": 1200,
- "Pop2025": 1450,
- "Pop2050": 1763,
- "Location": [
- -4.05,
- 39.65
- ]
- },
- {
- "City": "Nairobi",
- "Country": "Kenya",
- "Country_ISO3": "KEN",
- "Pop1950": 140,
- "Pop1955": 200,
- "Pop1960": 290,
- "Pop1965": 400,
- "Pop1970": 530,
- "Pop1975": 680,
- "Pop1980": 860,
- "Pop1985": 1090,
- "Pop1990": 1380,
- "Pop1995": 1760,
- "Pop2000": 2230,
- "Pop2005": 2790,
- "Pop2010": 3010,
- "Pop2015": 3360,
- "Pop2020": 4050,
- "Pop2025": 4880,
- "Pop2050": 5871,
- "Location": [
- -1.26,
- 36.8
- ]
- },
- {
- "City": "Hamhung",
- "Country": "Democratic People's Republic of Korea",
- "Country_ISO3": "PRK",
- "Pop1950": 170,
- "Pop1955": 220,
- "Pop1960": 280,
- "Pop1965": 370,
- "Pop1970": 450,
- "Pop1975": 520,
- "Pop1980": 590,
- "Pop1985": 670,
- "Pop1990": 700,
- "Pop1995": 710,
- "Pop2000": 730,
- "Pop2005": 760,
- "Pop2010": 770,
- "Pop2015": 790,
- "Pop2020": 820,
- "Pop2025": 850,
- "Pop2050": 882,
- "Location": [
- 39.91,
- 127.55
- ]
- },
- {
- "City": "N'ampo",
- "Country": "Democratic People's Republic of Korea",
- "Country_ISO3": "PRK",
- "Pop1950": 50,
- "Pop1955": 70,
- "Pop1960": 90,
- "Pop1965": 120,
- "Pop1970": 150,
- "Pop1975": 220,
- "Pop1980": 300,
- "Pop1985": 420,
- "Pop1990": 580,
- "Pop1995": 810,
- "Pop2000": 1020,
- "Pop2005": 1110,
- "Pop2010": 1130,
- "Pop2015": 1150,
- "Pop2020": 1190,
- "Pop2025": 1230,
- "Pop2050": 1274,
- "Location": [
- 38.73,
- 125.4
- ]
- },
- {
- "City": "P'yongyang",
- "Country": "Democratic People's Republic of Korea",
- "Country_ISO3": "PRK",
- "Pop1950": 520,
- "Pop1955": 580,
- "Pop1960": 650,
- "Pop1965": 770,
- "Pop1970": 990,
- "Pop1975": 1350,
- "Pop1980": 1840,
- "Pop1985": 2200,
- "Pop1990": 2530,
- "Pop1995": 2840,
- "Pop2000": 3120,
- "Pop2005": 3260,
- "Pop2010": 3300,
- "Pop2015": 3350,
- "Pop2020": 3430,
- "Pop2025": 3540,
- "Pop2050": 3630,
- "Location": [
- 39.02,
- 125.75
- ]
- },
- {
- "City": "Bucheon",
- "Country": "Republic of Korea",
- "Country_ISO3": "KOR",
- "Pop1950": 30,
- "Pop1955": 40,
- "Pop1960": 50,
- "Pop1965": 60,
- "Pop1970": 80,
- "Pop1975": 110,
- "Pop1980": 210,
- "Pop1985": 440,
- "Pop1990": 650,
- "Pop1995": 770,
- "Pop2000": 760,
- "Pop2005": 830,
- "Pop2010": 870,
- "Pop2015": 910,
- "Pop2020": 940,
- "Pop2025": 950,
- "Pop2050": 948,
- "Location": [
- 37.5,
- 126.78
- ]
- },
- {
- "City": "Busan",
- "Country": "Republic of Korea",
- "Country_ISO3": "KOR",
- "Pop1950": 950,
- "Pop1955": 1050,
- "Pop1960": 1150,
- "Pop1965": 1360,
- "Pop1970": 1810,
- "Pop1975": 2420,
- "Pop1980": 3110,
- "Pop1985": 3490,
- "Pop1990": 3780,
- "Pop1995": 3810,
- "Pop2000": 3670,
- "Pop2005": 3530,
- "Pop2010": 3480,
- "Pop2015": 3420,
- "Pop2020": 3390,
- "Pop2025": 3380,
- "Pop2050": 3383,
- "Location": [
- 35.1,
- 129.03
- ]
- },
- {
- "City": "Daegu",
- "Country": "Republic of Korea",
- "Country_ISO3": "KOR",
- "Pop1950": 360,
- "Pop1955": 480,
- "Pop1960": 660,
- "Pop1965": 810,
- "Pop1970": 1050,
- "Pop1975": 1300,
- "Pop1980": 1580,
- "Pop1985": 2000,
- "Pop1990": 2220,
- "Pop1995": 2430,
- "Pop2000": 2480,
- "Pop2005": 2470,
- "Pop2010": 2460,
- "Pop2015": 2460,
- "Pop2020": 2460,
- "Pop2025": 2460,
- "Pop2050": 2458,
- "Location": [
- 35.86,
- 128.6
- ]
- },
- {
- "City": "Daejon",
- "Country": "Republic of Korea",
- "Country_ISO3": "KOR",
- "Pop1950": 130,
- "Pop1955": 170,
- "Pop1960": 220,
- "Pop1965": 290,
- "Pop1970": 400,
- "Pop1975": 500,
- "Pop1980": 640,
- "Pop1985": 850,
- "Pop1990": 1040,
- "Pop1995": 1260,
- "Pop2000": 1360,
- "Pop2005": 1440,
- "Pop2010": 1470,
- "Pop2015": 1510,
- "Pop2020": 1540,
- "Pop2025": 1540,
- "Pop2050": 1544,
- "Location": [
- 36.35,
- 127.38
- ]
- },
- {
- "City": "Goyang",
- "Country": "Republic of Korea",
- "Country_ISO3": "KOR",
- "Pop1950": 40,
- "Pop1955": 50,
- "Pop1960": 60,
- "Pop1965": 80,
- "Pop1970": 100,
- "Pop1975": 120,
- "Pop1980": 150,
- "Pop1985": 190,
- "Pop1990": 240,
- "Pop1995": 490,
- "Pop2000": 740,
- "Pop2005": 860,
- "Pop2010": 900,
- "Pop2015": 960,
- "Pop2020": 1000,
- "Pop2025": 1010,
- "Pop2050": 1012,
- "Location": [
- 37.65,
- 126.8
- ]
- },
- {
- "City": "Gwangju",
- "Country": "Republic of Korea",
- "Country_ISO3": "KOR",
- "Pop1950": 170,
- "Pop1955": 230,
- "Pop1960": 310,
- "Pop1965": 380,
- "Pop1970": 490,
- "Pop1975": 600,
- "Pop1980": 720,
- "Pop1985": 890,
- "Pop1990": 1120,
- "Pop1995": 1250,
- "Pop2000": 1350,
- "Pop2005": 1410,
- "Pop2010": 1440,
- "Pop2015": 1470,
- "Pop2020": 1500,
- "Pop2025": 1510,
- "Pop2050": 1507,
- "Location": [
- 35.16,
- 126.91
- ]
- },
- {
- "City": "Incheon",
- "Country": "Republic of Korea",
- "Country_ISO3": "KOR",
- "Pop1950": 260,
- "Pop1955": 320,
- "Pop1960": 390,
- "Pop1965": 500,
- "Pop1970": 630,
- "Pop1975": 790,
- "Pop1980": 1060,
- "Pop1985": 1360,
- "Pop1990": 1780,
- "Pop1995": 2270,
- "Pop2000": 2460,
- "Pop2005": 2530,
- "Pop2010": 2550,
- "Pop2015": 2580,
- "Pop2020": 2600,
- "Pop2025": 2610,
- "Pop2050": 2607,
- "Location": [
- 37.48,
- 126.63
- ]
- },
- {
- "City": "Seongnam",
- "Country": "Republic of Korea",
- "Country_ISO3": "KOR",
- "Pop1950": 50,
- "Pop1955": 80,
- "Pop1960": 100,
- "Pop1965": 140,
- "Pop1970": 200,
- "Pop1975": 270,
- "Pop1980": 370,
- "Pop1985": 440,
- "Pop1990": 530,
- "Pop1995": 840,
- "Pop2000": 910,
- "Pop2005": 930,
- "Pop2010": 940,
- "Pop2015": 950,
- "Pop2020": 970,
- "Pop2025": 970,
- "Pop2050": 971,
- "Location": [
- 37.43,
- 127.15
- ]
- },
- {
- "City": "Seoul",
- "Country": "Republic of Korea",
- "Country_ISO3": "KOR",
- "Pop1950": 1020,
- "Pop1955": 1550,
- "Pop1960": 2360,
- "Pop1965": 3450,
- "Pop1970": 5310,
- "Pop1975": 6810,
- "Pop1980": 8260,
- "Pop1985": 9550,
- "Pop1990": 10540,
- "Pop1995": 10260,
- "Pop2000": 9920,
- "Pop2005": 9820,
- "Pop2010": 9800,
- "Pop2015": 9760,
- "Pop2020": 9740,
- "Pop2025": 9740,
- "Pop2050": 9738,
- "Location": [
- 37.54,
- 126.93
- ]
- },
- {
- "City": "Suweon",
- "Country": "Republic of Korea",
- "Country_ISO3": "KOR",
- "Pop1950": 70,
- "Pop1955": 80,
- "Pop1960": 90,
- "Pop1965": 160,
- "Pop1970": 170,
- "Pop1975": 220,
- "Pop1980": 300,
- "Pop1985": 420,
- "Pop1990": 630,
- "Pop1995": 750,
- "Pop2000": 930,
- "Pop2005": 1040,
- "Pop2010": 1080,
- "Pop2015": 1130,
- "Pop2020": 1170,
- "Pop2025": 1180,
- "Pop2050": 1179,
- "Location": [
- 37.26,
- 127.01
- ]
- },
- {
- "City": "Ulsan",
- "Country": "Republic of Korea",
- "Country_ISO3": "KOR",
- "Pop1950": 30,
- "Pop1955": 40,
- "Pop1960": 70,
- "Pop1965": 100,
- "Pop1970": 150,
- "Pop1975": 250,
- "Pop1980": 400,
- "Pop1985": 540,
- "Pop1990": 670,
- "Pop1995": 940,
- "Pop2000": 1010,
- "Pop2005": 1050,
- "Pop2010": 1060,
- "Pop2015": 1080,
- "Pop2020": 1100,
- "Pop2025": 1100,
- "Pop2050": 1102,
- "Location": [
- 35.55,
- 129.31
- ]
- },
- {
- "City": "Al Kuwayt (Kuwait City)",
- "Country": "Kuwait",
- "Country_ISO3": "KWT",
- "Pop1950": 60,
- "Pop1955": 110,
- "Pop1960": 180,
- "Pop1965": 300,
- "Pop1970": 550,
- "Pop1975": 690,
- "Pop1980": 890,
- "Pop1985": 1120,
- "Pop1990": 1390,
- "Pop1995": 1190,
- "Pop2000": 1500,
- "Pop2005": 1890,
- "Pop2010": 2060,
- "Pop2015": 2300,
- "Pop2020": 2590,
- "Pop2025": 2790,
- "Pop2050": 2956,
- "Location": [
- 29.38,
- 47.97
- ]
- },
- {
- "City": "Bishkek",
- "Country": "Kyrgyzstan",
- "Country_ISO3": "KGZ",
- "Pop1950": 150,
- "Pop1955": 190,
- "Pop1960": 240,
- "Pop1965": 320,
- "Pop1970": 430,
- "Pop1975": 480,
- "Pop1980": 540,
- "Pop1985": 580,
- "Pop1990": 640,
- "Pop1995": 700,
- "Pop2000": 770,
- "Pop2005": 820,
- "Pop2010": 840,
- "Pop2015": 870,
- "Pop2020": 930,
- "Pop2025": 1010,
- "Pop2050": 1096,
- "Location": [
- 42.87,
- 74.77
- ]
- },
- {
- "City": "Bayrut",
- "Country": "Lebanon",
- "Country_ISO3": "LBN",
- "Pop1950": 320,
- "Pop1955": 420,
- "Pop1960": 560,
- "Pop1965": 730,
- "Pop1970": 920,
- "Pop1975": 1500,
- "Pop1980": 1620,
- "Pop1985": 1580,
- "Pop1990": 1290,
- "Pop1995": 1270,
- "Pop2000": 1490,
- "Pop2005": 1780,
- "Pop2010": 1850,
- "Pop2015": 1940,
- "Pop2020": 2050,
- "Pop2025": 2120,
- "Pop2050": 2173,
- "Location": [
- 33.88,
- 35.49
- ]
- },
- {
- "City": "Monrovia",
- "Country": "Liberia",
- "Country_ISO3": "LBR",
- "Pop1950": 20,
- "Pop1955": 30,
- "Pop1960": 80,
- "Pop1965": 120,
- "Pop1970": 160,
- "Pop1975": 230,
- "Pop1980": 320,
- "Pop1985": 510,
- "Pop1990": 1040,
- "Pop1995": 460,
- "Pop2000": 840,
- "Pop2005": 1140,
- "Pop2010": 1040,
- "Pop2015": 1180,
- "Pop2020": 1460,
- "Pop2025": 1750,
- "Pop2050": 2083,
- "Location": [
- 6.3,
- -10.79
- ]
- },
- {
- "City": "Banghazi",
- "Country": "Libyan Arab Jamahiriya",
- "Country_ISO3": "LBY",
- "Pop1950": 50,
- "Pop1955": 70,
- "Pop1960": 100,
- "Pop1965": 150,
- "Pop1970": 220,
- "Pop1975": 310,
- "Pop1980": 380,
- "Pop1985": 470,
- "Pop1990": 610,
- "Pop1995": 800,
- "Pop2000": 940,
- "Pop2005": 1110,
- "Pop2010": 1180,
- "Pop2015": 1270,
- "Pop2020": 1400,
- "Pop2025": 1500,
- "Pop2050": 1590,
- "Location": [
- 32.12,
- 20.06
- ]
- },
- {
- "City": "Tarabulus",
- "Country": "Libyan Arab Jamahiriya",
- "Country_ISO3": "LBY",
- "Pop1950": 110,
- "Pop1955": 140,
- "Pop1960": 170,
- "Pop1965": 240,
- "Pop1970": 400,
- "Pop1975": 610,
- "Pop1980": 800,
- "Pop1985": 1060,
- "Pop1990": 1500,
- "Pop1995": 1680,
- "Pop2000": 1880,
- "Pop2005": 2100,
- "Pop2010": 2190,
- "Pop2015": 2320,
- "Pop2020": 2530,
- "Pop2025": 2710,
- "Pop2050": 2855,
- "Location": [
- 32.9,
- 13.18
- ]
- },
- {
- "City": "Antananarivo",
- "Country": "Madagascar",
- "Country_ISO3": "MDG",
- "Pop1950": 180,
- "Pop1955": 190,
- "Pop1960": 250,
- "Pop1965": 300,
- "Pop1970": 360,
- "Pop1975": 450,
- "Pop1980": 580,
- "Pop1985": 740,
- "Pop1990": 950,
- "Pop1995": 1170,
- "Pop2000": 1360,
- "Pop2005": 1590,
- "Pop2010": 1700,
- "Pop2015": 1880,
- "Pop2020": 2230,
- "Pop2025": 2640,
- "Pop2050": 3118,
- "Location": [
- -18.9,
- 47.52
- ]
- },
- {
- "City": "Johore Bharu",
- "Country": "Malaysia",
- "Country_ISO3": "MYS",
- "Pop1950": 50,
- "Pop1955": 70,
- "Pop1960": 90,
- "Pop1965": 110,
- "Pop1970": 140,
- "Pop1975": 180,
- "Pop1980": 250,
- "Pop1985": 320,
- "Pop1990": 420,
- "Pop1995": 520,
- "Pop2000": 630,
- "Pop2005": 800,
- "Pop2010": 880,
- "Pop2015": 1000,
- "Pop2020": 1180,
- "Pop2025": 1290,
- "Pop2050": 1382,
- "Location": [
- 1.5,
- 103.76
- ]
- },
- {
- "City": "Klang",
- "Country": "Malaysia",
- "Country_ISO3": "MYS",
- "Pop1950": 40,
- "Pop1955": 60,
- "Pop1960": 80,
- "Pop1965": 100,
- "Pop1970": 110,
- "Pop1975": 150,
- "Pop1980": 190,
- "Pop1985": 260,
- "Pop1990": 340,
- "Pop1995": 470,
- "Pop2000": 630,
- "Pop2005": 850,
- "Pop2010": 960,
- "Pop2015": 1130,
- "Pop2020": 1360,
- "Pop2025": 1500,
- "Pop2050": 1603,
- "Location": [
- 3.03,
- 101.45
- ]
- },
- {
- "City": "Kuala Lumpur",
- "Country": "Malaysia",
- "Country_ISO3": "MYS",
- "Pop1950": 210,
- "Pop1955": 280,
- "Pop1960": 340,
- "Pop1965": 390,
- "Pop1970": 450,
- "Pop1975": 640,
- "Pop1980": 920,
- "Pop1985": 1020,
- "Pop1990": 1120,
- "Pop1995": 1210,
- "Pop2000": 1310,
- "Pop2005": 1400,
- "Pop2010": 1450,
- "Pop2015": 1520,
- "Pop2020": 1670,
- "Pop2025": 1820,
- "Pop2050": 1938,
- "Location": [
- 3.14,
- 101.7
- ]
- },
- {
- "City": "Bamako",
- "Country": "Mali",
- "Country_ISO3": "MLI",
- "Pop1950": 90,
- "Pop1955": 110,
- "Pop1960": 130,
- "Pop1965": 160,
- "Pop1970": 220,
- "Pop1975": 360,
- "Pop1980": 490,
- "Pop1985": 610,
- "Pop1990": 750,
- "Pop1995": 910,
- "Pop2000": 1110,
- "Pop2005": 1370,
- "Pop2010": 1490,
- "Pop2015": 1710,
- "Pop2020": 2130,
- "Pop2025": 2630,
- "Pop2050": 3214,
- "Location": [
- 12.65,
- -7.98
- ]
- },
- {
- "City": "Aguascalientes",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 90,
- "Pop1955": 110,
- "Pop1960": 130,
- "Pop1965": 150,
- "Pop1970": 180,
- "Pop1975": 230,
- "Pop1980": 300,
- "Pop1985": 400,
- "Pop1990": 550,
- "Pop1995": 630,
- "Pop2000": 730,
- "Pop2005": 830,
- "Pop2010": 870,
- "Pop2015": 930,
- "Pop2020": 1000,
- "Pop2025": 1050,
- "Pop2050": 1089,
- "Location": [
- 21.88,
- -102.29
- ]
- },
- {
- "City": "Chihuahua",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 90,
- "Pop1955": 130,
- "Pop1960": 190,
- "Pop1965": 240,
- "Pop1970": 290,
- "Pop1975": 340,
- "Pop1980": 410,
- "Pop1985": 470,
- "Pop1990": 540,
- "Pop1995": 620,
- "Pop2000": 680,
- "Pop2005": 760,
- "Pop2010": 790,
- "Pop2015": 840,
- "Pop2020": 900,
- "Pop2025": 950,
- "Pop2050": 985,
- "Location": [
- 28.63,
- -106.07
- ]
- },
- {
- "City": "Ciudad de México",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 2880,
- "Pop1955": 3800,
- "Pop1960": 5010,
- "Pop1965": 6650,
- "Pop1970": 8770,
- "Pop1975": 10690,
- "Pop1980": 13010,
- "Pop1985": 14110,
- "Pop1990": 15310,
- "Pop1995": 16810,
- "Pop2000": 18020,
- "Pop2005": 18740,
- "Pop2010": 19030,
- "Pop2015": 19480,
- "Pop2020": 20190,
- "Pop2025": 20700,
- "Pop2050": 21009,
- "Location": [
- 19.42,
- -99.12
- ]
- },
- {
- "City": "Ciudad Juárez",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 120,
- "Pop1955": 180,
- "Pop1960": 260,
- "Pop1965": 330,
- "Pop1970": 410,
- "Pop1975": 470,
- "Pop1980": 550,
- "Pop1985": 660,
- "Pop1990": 810,
- "Pop1995": 1000,
- "Pop2000": 1220,
- "Pop2005": 1310,
- "Pop2010": 1340,
- "Pop2015": 1400,
- "Pop2020": 1480,
- "Pop2025": 1540,
- "Pop2050": 1597,
- "Location": [
- 31.73,
- -106.48
- ]
- },
- {
- "City": "Culiacán",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 50,
- "Pop1955": 60,
- "Pop1960": 80,
- "Pop1965": 120,
- "Pop1970": 170,
- "Pop1975": 230,
- "Pop1980": 310,
- "Pop1985": 430,
- "Pop1990": 610,
- "Pop1995": 690,
- "Pop2000": 750,
- "Pop2005": 790,
- "Pop2010": 810,
- "Pop2015": 840,
- "Pop2020": 890,
- "Pop2025": 930,
- "Pop2050": 964,
- "Location": [
- 24.8,
- -107.38
- ]
- },
- {
- "City": "Guadalajara",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 400,
- "Pop1955": 590,
- "Pop1960": 870,
- "Pop1965": 1150,
- "Pop1970": 1510,
- "Pop1975": 1850,
- "Pop1980": 2270,
- "Pop1985": 2620,
- "Pop1990": 3010,
- "Pop1995": 3430,
- "Pop2000": 3700,
- "Pop2005": 4050,
- "Pop2010": 4200,
- "Pop2015": 4410,
- "Pop2020": 4670,
- "Pop2025": 4850,
- "Pop2050": 4973,
- "Location": [
- 20.67,
- -103.34
- ]
- },
- {
- "City": "León de los Aldamas",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 120,
- "Pop1955": 190,
- "Pop1960": 300,
- "Pop1965": 380,
- "Pop1970": 480,
- "Pop1975": 590,
- "Pop1980": 720,
- "Pop1985": 830,
- "Pop1990": 960,
- "Pop1995": 1130,
- "Pop2000": 1290,
- "Pop2005": 1430,
- "Pop2010": 1490,
- "Pop2015": 1570,
- "Pop2020": 1680,
- "Pop2025": 1760,
- "Pop2050": 1817,
- "Location": [
- 21.11,
- -101.68
- ]
- },
- {
- "City": "Mérida",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 140,
- "Pop1955": 170,
- "Pop1960": 210,
- "Pop1965": 240,
- "Pop1970": 270,
- "Pop1975": 350,
- "Pop1980": 460,
- "Pop1985": 550,
- "Pop1990": 660,
- "Pop1995": 760,
- "Pop2000": 850,
- "Pop2005": 930,
- "Pop2010": 960,
- "Pop2015": 1020,
- "Pop2020": 1090,
- "Pop2025": 1140,
- "Pop2050": 1180,
- "Location": [
- 20.97,
- -89.62
- ]
- },
- {
- "City": "Mexicali",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 70,
- "Pop1955": 110,
- "Pop1960": 180,
- "Pop1965": 220,
- "Pop1970": 270,
- "Pop1975": 300,
- "Pop1980": 340,
- "Pop1985": 460,
- "Pop1990": 610,
- "Pop1995": 690,
- "Pop2000": 770,
- "Pop2005": 850,
- "Pop2010": 880,
- "Pop2015": 940,
- "Pop2020": 1000,
- "Pop2025": 1050,
- "Pop2050": 1090,
- "Location": [
- 32.65,
- -115.46
- ]
- },
- {
- "City": "Monterrey",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 360,
- "Pop1955": 500,
- "Pop1960": 700,
- "Pop1965": 940,
- "Pop1970": 1270,
- "Pop1975": 1590,
- "Pop1980": 1990,
- "Pop1985": 2270,
- "Pop1990": 2590,
- "Pop1995": 2960,
- "Pop2000": 3270,
- "Pop2005": 3580,
- "Pop2010": 3710,
- "Pop2015": 3900,
- "Pop2020": 4140,
- "Pop2025": 4300,
- "Pop2050": 4413,
- "Location": [
- 25.67,
- -100.31
- ]
- },
- {
- "City": "Puebla",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 230,
- "Pop1955": 290,
- "Pop1960": 380,
- "Pop1965": 490,
- "Pop1970": 640,
- "Pop1975": 860,
- "Pop1980": 1140,
- "Pop1985": 1400,
- "Pop1990": 1690,
- "Pop1995": 1690,
- "Pop2000": 1910,
- "Pop2005": 2110,
- "Pop2010": 2200,
- "Pop2015": 2320,
- "Pop2020": 2470,
- "Pop2025": 2580,
- "Pop2050": 2657,
- "Location": [
- 19.04,
- -98.19
- ]
- },
- {
- "City": "Querétaro",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 50,
- "Pop1955": 60,
- "Pop1960": 70,
- "Pop1965": 90,
- "Pop1970": 120,
- "Pop1975": 160,
- "Pop1980": 220,
- "Pop1985": 350,
- "Pop1990": 560,
- "Pop1995": 670,
- "Pop2000": 800,
- "Pop2005": 910,
- "Pop2010": 960,
- "Pop2015": 1030,
- "Pop2020": 1120,
- "Pop2025": 1170,
- "Pop2050": 1215,
- "Location": [
- 20.58,
- -100.38
- ]
- },
- {
- "City": "Saltillo",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 70,
- "Pop1955": 80,
- "Pop1960": 100,
- "Pop1965": 130,
- "Pop1970": 160,
- "Pop1975": 220,
- "Pop1980": 290,
- "Pop1985": 380,
- "Pop1990": 490,
- "Pop1995": 580,
- "Pop2000": 640,
- "Pop2005": 720,
- "Pop2010": 750,
- "Pop2015": 800,
- "Pop2020": 860,
- "Pop2025": 910,
- "Pop2050": 942,
- "Location": [
- 25.41,
- -100.99
- ]
- },
- {
- "City": "San Luis Potosí",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 130,
- "Pop1955": 160,
- "Pop1960": 210,
- "Pop1965": 250,
- "Pop1970": 300,
- "Pop1975": 380,
- "Pop1980": 470,
- "Pop1985": 560,
- "Pop1990": 660,
- "Pop1995": 770,
- "Pop2000": 860,
- "Pop2005": 950,
- "Pop2010": 990,
- "Pop2015": 1050,
- "Pop2020": 1130,
- "Pop2025": 1180,
- "Pop2050": 1223,
- "Location": [
- 22.15,
- -100.97
- ]
- },
- {
- "City": "Tijuana",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 60,
- "Pop1955": 100,
- "Pop1960": 150,
- "Pop1965": 210,
- "Pop1970": 290,
- "Pop1975": 360,
- "Pop1980": 440,
- "Pop1985": 580,
- "Pop1990": 760,
- "Pop1995": 1020,
- "Pop2000": 1290,
- "Pop2005": 1470,
- "Pop2010": 1550,
- "Pop2015": 1670,
- "Pop2020": 1800,
- "Pop2025": 1880,
- "Pop2050": 1943,
- "Location": [
- 32.52,
- -117.03
- ]
- },
- {
- "City": "Toluca de Lerdo",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 50,
- "Pop1955": 70,
- "Pop1960": 90,
- "Pop1965": 120,
- "Pop1970": 160,
- "Pop1975": 310,
- "Pop1980": 600,
- "Pop1985": 710,
- "Pop1990": 840,
- "Pop1995": 980,
- "Pop2000": 1420,
- "Pop2005": 1500,
- "Pop2010": 1530,
- "Pop2015": 1580,
- "Pop2020": 1670,
- "Pop2025": 1740,
- "Pop2050": 1802,
- "Location": [
- 19.28,
- -99.66
- ]
- },
- {
- "City": "Torreón",
- "Country": "Mexico",
- "Country_ISO3": "MEX",
- "Pop1950": 190,
- "Pop1955": 260,
- "Pop1960": 350,
- "Pop1965": 390,
- "Pop1970": 450,
- "Pop1975": 560,
- "Pop1980": 690,
- "Pop1985": 780,
- "Pop1990": 880,
- "Pop1995": 950,
- "Pop2000": 1010,
- "Pop2005": 1100,
- "Pop2010": 1140,
- "Pop2015": 1200,
- "Pop2020": 1280,
- "Pop2025": 1340,
- "Pop2050": 1387,
- "Location": [
- 25.55,
- -103.76
- ]
- },
- {
- "City": "Ulaanbaatar",
- "Country": "Mongolia",
- "Country_ISO3": "MNG",
- "Pop1950": 70,
- "Pop1955": 110,
- "Pop1960": 180,
- "Pop1965": 250,
- "Pop1970": 300,
- "Pop1975": 360,
- "Pop1980": 420,
- "Pop1985": 490,
- "Pop1990": 570,
- "Pop1995": 660,
- "Pop2000": 760,
- "Pop2005": 860,
- "Pop2010": 880,
- "Pop2015": 920,
- "Pop2020": 980,
- "Pop2025": 1040,
- "Pop2050": 1112,
- "Location": [
- 47.92,
- 106.91
- ]
- },
- {
- "City": "Chittagong",
- "Country": "Bangladesh",
- "Country_ISO3": "BGD",
- "Pop1950": 290,
- "Pop1955": 320,
- "Pop1960": 360,
- "Pop1965": 500,
- "Pop1970": 720,
- "Pop1975": 1020,
- "Pop1980": 1340,
- "Pop1985": 1660,
- "Pop1990": 2020,
- "Pop1995": 2580,
- "Pop2000": 3310,
- "Pop2005": 4190,
- "Pop2010": 4530,
- "Pop2015": 5010,
- "Pop2020": 5810,
- "Pop2025": 6690,
- "Pop2050": 7639,
- "Location": [
- 22.32,
- 91.82
- ]
- },
- {
- "City": "Dhaka",
- "Country": "Bangladesh",
- "Country_ISO3": "BGD",
- "Pop1950": 340,
- "Pop1955": 410,
- "Pop1960": 510,
- "Pop1965": 820,
- "Pop1970": 1370,
- "Pop1975": 2220,
- "Pop1980": 3270,
- "Pop1985": 4660,
- "Pop1990": 6620,
- "Pop1995": 8330,
- "Pop2000": 10280,
- "Pop2005": 12580,
- "Pop2010": 13480,
- "Pop2015": 14800,
- "Pop2020": 17020,
- "Pop2025": 19420,
- "Pop2050": 22015,
- "Location": [
- 23.7,
- 90.4
- ]
- },
- {
- "City": "Khulna",
- "Country": "Bangladesh",
- "Country_ISO3": "BGD",
- "Pop1950": 40,
- "Pop1955": 70,
- "Pop1960": 120,
- "Pop1965": 190,
- "Pop1970": 310,
- "Pop1975": 470,
- "Pop1980": 630,
- "Pop1985": 790,
- "Pop1990": 980,
- "Pop1995": 1130,
- "Pop2000": 1280,
- "Pop2005": 1470,
- "Pop2010": 1550,
- "Pop2015": 1700,
- "Pop2020": 1980,
- "Pop2025": 2290,
- "Pop2050": 2640,
- "Location": [
- 22.84,
- 89.55
- ]
- },
- {
- "City": "Rajshahi",
- "Country": "Bangladesh",
- "Country_ISO3": "BGD",
- "Pop1950": 40,
- "Pop1955": 50,
- "Pop1960": 60,
- "Pop1965": 80,
- "Pop1970": 100,
- "Pop1975": 150,
- "Pop1980": 240,
- "Pop1985": 350,
- "Pop1990": 520,
- "Pop1995": 610,
- "Pop2000": 680,
- "Pop2005": 770,
- "Pop2010": 810,
- "Pop2015": 890,
- "Pop2020": 1040,
- "Pop2025": 1210,
- "Pop2050": 1396,
- "Location": [
- 24.35,
- 88.63
- ]
- },
- {
- "City": "Dar-el-Beida",
- "Country": "Morocco",
- "Country_ISO3": "MAR",
- "Pop1950": 620,
- "Pop1955": 780,
- "Pop1960": 970,
- "Pop1965": 1210,
- "Pop1970": 1500,
- "Pop1975": 1790,
- "Pop1980": 2110,
- "Pop1985": 2410,
- "Pop1990": 2680,
- "Pop1995": 2950,
- "Pop2000": 3040,
- "Pop2005": 3140,
- "Pop2010": 3180,
- "Pop2015": 3270,
- "Pop2020": 3480,
- "Pop2025": 3720,
- "Pop2050": 3949,
- "Location": [
- 33.6,
- -7.63
- ]
- },
- {
- "City": "Fès",
- "Country": "Morocco",
- "Country_ISO3": "MAR",
- "Pop1950": 160,
- "Pop1955": 220,
- "Pop1960": 280,
- "Pop1965": 320,
- "Pop1970": 370,
- "Pop1975": 430,
- "Pop1980": 510,
- "Pop1985": 590,
- "Pop1990": 680,
- "Pop1995": 780,
- "Pop2000": 870,
- "Pop2005": 960,
- "Pop2010": 1000,
- "Pop2015": 1060,
- "Pop2020": 1150,
- "Pop2025": 1240,
- "Pop2050": 1332,
- "Location": [
- 34.04,
- -4.99
- ]
- },
- {
- "City": "Marrakech",
- "Country": "Morocco",
- "Country_ISO3": "MAR",
- "Pop1950": 210,
- "Pop1955": 220,
- "Pop1960": 240,
- "Pop1965": 280,
- "Pop1970": 320,
- "Pop1975": 370,
- "Pop1980": 420,
- "Pop1985": 480,
- "Pop1990": 580,
- "Pop1995": 680,
- "Pop2000": 760,
- "Pop2005": 840,
- "Pop2010": 870,
- "Pop2015": 920,
- "Pop2020": 1000,
- "Pop2025": 1080,
- "Pop2050": 1163,
- "Location": [
- 31.63,
- -8.01
- ]
- },
- {
- "City": "Rabat",
- "Country": "Morocco",
- "Country_ISO3": "MAR",
- "Pop1950": 140,
- "Pop1955": 180,
- "Pop1960": 230,
- "Pop1965": 340,
- "Pop1970": 490,
- "Pop1975": 640,
- "Pop1980": 810,
- "Pop1985": 990,
- "Pop1990": 1170,
- "Pop1995": 1380,
- "Pop2000": 1510,
- "Pop2005": 1650,
- "Pop2010": 1700,
- "Pop2015": 1790,
- "Pop2020": 1940,
- "Pop2025": 2080,
- "Pop2050": 2222,
- "Location": [
- 34.01,
- -6.83
- ]
- },
- {
- "City": "Maputo",
- "Country": "Mozambique",
- "Country_ISO3": "MOZ",
- "Pop1950": 90,
- "Pop1955": 130,
- "Pop1960": 180,
- "Pop1965": 260,
- "Pop1970": 370,
- "Pop1975": 460,
- "Pop1980": 550,
- "Pop1985": 650,
- "Pop1990": 780,
- "Pop1995": 920,
- "Pop2000": 1100,
- "Pop2005": 1330,
- "Pop2010": 1450,
- "Pop2015": 1620,
- "Pop2020": 1920,
- "Pop2025": 2240,
- "Pop2050": 2560,
- "Location": [
- -25.96,
- 32.57
- ]
- },
- {
- "City": "Yerevan",
- "Country": "Armenia",
- "Country_ISO3": "ARM",
- "Pop1950": 340,
- "Pop1955": 430,
- "Pop1960": 540,
- "Pop1965": 650,
- "Pop1970": 780,
- "Pop1975": 910,
- "Pop1980": 1040,
- "Pop1985": 1120,
- "Pop1990": 1180,
- "Pop1995": 1140,
- "Pop2000": 1110,
- "Pop2005": 1100,
- "Pop2010": 1100,
- "Pop2015": 1100,
- "Pop2020": 1100,
- "Pop2025": 1100,
- "Pop2050": 1102,
- "Location": [
- 40.2,
- 44.53
- ]
- },
- {
- "City": "Kathmandu",
- "Country": "Nepal",
- "Country_ISO3": "NPL",
- "Pop1950": 100,
- "Pop1955": 110,
- "Pop1960": 120,
- "Pop1965": 130,
- "Pop1970": 150,
- "Pop1975": 180,
- "Pop1980": 220,
- "Pop1985": 300,
- "Pop1990": 400,
- "Pop1995": 510,
- "Pop2000": 640,
- "Pop2005": 820,
- "Pop2010": 900,
- "Pop2015": 1030,
- "Pop2020": 1280,
- "Pop2025": 1580,
- "Pop2050": 1907,
- "Location": [
- 27.71,
- 85.31
- ]
- },
- {
- "City": "Amsterdam",
- "Country": "Netherlands",
- "Country_ISO3": "NLD",
- "Pop1950": 850,
- "Pop1955": 870,
- "Pop1960": 900,
- "Pop1965": 940,
- "Pop1970": 930,
- "Pop1975": 980,
- "Pop1980": 940,
- "Pop1985": 910,
- "Pop1990": 940,
- "Pop1995": 990,
- "Pop2000": 1000,
- "Pop2005": 1020,
- "Pop2010": 1030,
- "Pop2015": 1040,
- "Pop2020": 1060,
- "Pop2025": 1080,
- "Pop2050": 1089,
- "Location": [
- 52.37,
- 4.89
- ]
- },
- {
- "City": "Rotterdam",
- "Country": "Netherlands",
- "Country_ISO3": "NLD",
- "Pop1950": 760,
- "Pop1955": 850,
- "Pop1960": 940,
- "Pop1965": 970,
- "Pop1970": 970,
- "Pop1975": 930,
- "Pop1980": 910,
- "Pop1985": 930,
- "Pop1990": 950,
- "Pop1995": 980,
- "Pop2000": 990,
- "Pop2005": 1000,
- "Pop2010": 1000,
- "Pop2015": 1010,
- "Pop2020": 1030,
- "Pop2025": 1050,
- "Pop2050": 1057,
- "Location": [
- 51.92,
- 4.48
- ]
- },
- {
- "City": "Auckland",
- "Country": "New Zealand",
- "Country_ISO3": "NZL",
- "Pop1950": 320,
- "Pop1955": 390,
- "Pop1960": 440,
- "Pop1965": 530,
- "Pop1970": 640,
- "Pop1975": 730,
- "Pop1980": 770,
- "Pop1985": 810,
- "Pop1990": 870,
- "Pop1995": 980,
- "Pop2000": 1060,
- "Pop2005": 1190,
- "Pop2010": 1240,
- "Pop2015": 1320,
- "Pop2020": 1400,
- "Pop2025": 1440,
- "Pop2050": 1475,
- "Location": [
- -36.9,
- 174.76
- ]
- },
- {
- "City": "Managua",
- "Country": "Nicaragua",
- "Country_ISO3": "NIC",
- "Pop1950": 110,
- "Pop1955": 150,
- "Pop1960": 200,
- "Pop1965": 270,
- "Pop1970": 370,
- "Pop1975": 440,
- "Pop1980": 520,
- "Pop1985": 620,
- "Pop1990": 740,
- "Pop1995": 860,
- "Pop2000": 890,
- "Pop2005": 910,
- "Pop2010": 920,
- "Pop2015": 940,
- "Pop2020": 1020,
- "Pop2025": 1100,
- "Pop2050": 1193,
- "Location": [
- 12.15,
- -86.27
- ]
- },
- {
- "City": "Antwerpen",
- "Country": "Belgium",
- "Country_ISO3": "BEL",
- "Pop1950": 760,
- "Pop1955": 790,
- "Pop1960": 810,
- "Pop1965": 840,
- "Pop1970": 860,
- "Pop1975": 870,
- "Pop1980": 880,
- "Pop1985": 880,
- "Pop1990": 890,
- "Pop1995": 910,
- "Pop2000": 910,
- "Pop2005": 920,
- "Pop2010": 920,
- "Pop2015": 920,
- "Pop2020": 920,
- "Pop2025": 920,
- "Pop2050": 920,
- "Location": [
- 51.2,
- 4.42
- ]
- },
- {
- "City": "Bruxelles-Brussel",
- "Country": "Belgium",
- "Country_ISO3": "BEL",
- "Pop1950": 1420,
- "Pop1955": 1450,
- "Pop1960": 1480,
- "Pop1965": 1520,
- "Pop1970": 1570,
- "Pop1975": 1610,
- "Pop1980": 1650,
- "Pop1985": 1650,
- "Pop1990": 1680,
- "Pop1995": 1720,
- "Pop2000": 1730,
- "Pop2005": 1740,
- "Pop2010": 1740,
- "Pop2015": 1740,
- "Pop2020": 1740,
- "Pop2025": 1740,
- "Pop2050": 1744,
- "Location": [
- 50.83,
- 4.36
- ]
- },
- {
- "City": "Niamey",
- "Country": "Niger",
- "Country_ISO3": "NER",
- "Pop1950": 20,
- "Pop1955": 40,
- "Pop1960": 60,
- "Pop1965": 80,
- "Pop1970": 130,
- "Pop1975": 200,
- "Pop1980": 270,
- "Pop1985": 340,
- "Pop1990": 430,
- "Pop1995": 540,
- "Pop2000": 680,
- "Pop2005": 850,
- "Pop2010": 920,
- "Pop2015": 1030,
- "Pop2020": 1260,
- "Pop2025": 1580,
- "Pop2050": 2028,
- "Location": [
- 13.51,
- 2.12
- ]
- },
- {
- "City": "Abuja",
- "Country": "Nigeria",
- "Country_ISO3": "NGA",
- "Pop1950": 20,
- "Pop1955": 20,
- "Pop1960": 20,
- "Pop1965": 30,
- "Pop1970": 50,
- "Pop1975": 80,
- "Pop1980": 120,
- "Pop1985": 200,
- "Pop1990": 330,
- "Pop1995": 530,
- "Pop2000": 830,
- "Pop2005": 1320,
- "Pop2010": 1580,
- "Pop2015": 1990,
- "Pop2020": 2560,
- "Pop2025": 2970,
- "Pop2050": 3358,
- "Location": [
- 9.05,
- 7.25
- ]
- },
- {
- "City": "Benin City",
- "Country": "Nigeria",
- "Country_ISO3": "NGA",
- "Pop1950": 50,
- "Pop1955": 60,
- "Pop1960": 80,
- "Pop1965": 110,
- "Pop1970": 160,
- "Pop1975": 230,
- "Pop1980": 340,
- "Pop1985": 480,
- "Pop1990": 690,
- "Pop1995": 840,
- "Pop2000": 980,
- "Pop2005": 1120,
- "Pop2010": 1190,
- "Pop2015": 1300,
- "Pop2020": 1520,
- "Pop2025": 1760,
- "Pop2050": 1991,
- "Location": [
- 6.33,
- 5.62
- ]
- },
- {
- "City": "Ibadan",
- "Country": "Nigeria",
- "Country_ISO3": "NGA",
- "Pop1950": 420,
- "Pop1955": 490,
- "Pop1960": 570,
- "Pop1965": 670,
- "Pop1970": 810,
- "Pop1975": 980,
- "Pop1980": 1190,
- "Pop1985": 1440,
- "Pop1990": 1740,
- "Pop1995": 1990,
- "Pop2000": 2240,
- "Pop2005": 2510,
- "Pop2010": 2630,
- "Pop2015": 2840,
- "Pop2020": 3270,
- "Pop2025": 3750,
- "Pop2050": 4234,
- "Location": [
- 7.37,
- 3.89
- ]
- },
- {
- "City": "Ilorin",
- "Country": "Nigeria",
- "Country_ISO3": "NGA",
- "Pop1950": 110,
- "Pop1955": 140,
- "Pop1960": 180,
- "Pop1965": 220,
- "Pop1970": 270,
- "Pop1975": 320,
- "Pop1980": 390,
- "Pop1985": 460,
- "Pop1990": 520,
- "Pop1995": 580,
- "Pop2000": 650,
- "Pop2005": 740,
- "Pop2010": 770,
- "Pop2015": 840,
- "Pop2020": 970,
- "Pop2025": 1120,
- "Pop2050": 1277,
- "Location": [
- 8.49,
- 4.54
- ]
- },
- {
- "City": "Kaduna",
- "Country": "Nigeria",
- "Country_ISO3": "NGA",
- "Pop1950": 30,
- "Pop1955": 50,
- "Pop1960": 100,
- "Pop1965": 170,
- "Pop1970": 270,
- "Pop1975": 410,
- "Pop1980": 630,
- "Pop1985": 850,
- "Pop1990": 960,
- "Pop1995": 1080,
- "Pop2000": 1220,
- "Pop2005": 1380,
- "Pop2010": 1440,
- "Pop2015": 1560,
- "Pop2020": 1810,
- "Pop2025": 2080,
- "Pop2050": 2360,
- "Location": [
- 10.51,
- 7.44
- ]
- },
- {
- "City": "Kano",
- "Country": "Nigeria",
- "Country_ISO3": "NGA",
- "Pop1950": 120,
- "Pop1955": 160,
- "Pop1960": 230,
- "Pop1965": 340,
- "Pop1970": 540,
- "Pop1975": 860,
- "Pop1980": 1350,
- "Pop1985": 1860,
- "Pop1990": 2100,
- "Pop1995": 2360,
- "Pop2000": 2660,
- "Pop2005": 2990,
- "Pop2010": 3140,
- "Pop2015": 3390,
- "Pop2020": 3910,
- "Pop2025": 4490,
- "Pop2050": 5056,
- "Location": [
- 11.99,
- 8.49
- ]
- },
- {
- "City": "Lagos",
- "Country": "Nigeria",
- "Country_ISO3": "NGA",
- "Pop1950": 300,
- "Pop1955": 470,
- "Pop1960": 760,
- "Pop1965": 1140,
- "Pop1970": 1410,
- "Pop1975": 1890,
- "Pop1980": 2570,
- "Pop1985": 3500,
- "Pop1990": 4760,
- "Pop1995": 5970,
- "Pop2000": 7230,
- "Pop2005": 8770,
- "Pop2010": 9470,
- "Pop2015": 10570,
- "Pop2020": 12400,
- "Pop2025": 14130,
- "Pop2050": 15796,
- "Location": [
- 6.45,
- 3.3
- ]
- },
- {
- "City": "Maiduguri",
- "Country": "Nigeria",
- "Country_ISO3": "NGA",
- "Pop1950": 50,
- "Pop1955": 70,
- "Pop1960": 100,
- "Pop1965": 160,
- "Pop1970": 220,
- "Pop1975": 300,
- "Pop1980": 420,
- "Pop1985": 530,
- "Pop1990": 600,
- "Pop1995": 670,
- "Pop2000": 760,
- "Pop2005": 850,
- "Pop2010": 900,
- "Pop2015": 970,
- "Pop2020": 1120,
- "Pop2025": 1300,
- "Pop2050": 1479,
- "Location": [
- 11.85,
- 13.16
- ]
- },
- {
- "City": "Ogbomosho",
- "Country": "Nigeria",
- "Country_ISO3": "NGA",
- "Pop1950": 120,
- "Pop1955": 170,
- "Pop1960": 250,
- "Pop1965": 330,
- "Pop1970": 380,
- "Pop1975": 430,
- "Pop1980": 480,
- "Pop1985": 550,
- "Pop1990": 620,
- "Pop1995": 700,
- "Pop2000": 800,
- "Pop2005": 900,
- "Pop2010": 950,
- "Pop2015": 1030,
- "Pop2020": 1200,
- "Pop2025": 1390,
- "Pop2050": 1575,
- "Location": [
- 8.13,
- 4.25
- ]
- },
- {
- "City": "Port Harcourt",
- "Country": "Nigeria",
- "Country_ISO3": "NGA",
- "Pop1950": 60,
- "Pop1955": 90,
- "Pop1960": 140,
- "Pop1965": 200,
- "Pop1970": 270,
- "Pop1975": 360,
- "Pop1980": 480,
- "Pop1985": 600,
- "Pop1990": 680,
- "Pop1995": 770,
- "Pop2000": 860,
- "Pop2005": 970,
- "Pop2010": 1020,
- "Pop2015": 1100,
- "Pop2020": 1280,
- "Pop2025": 1480,
- "Pop2050": 1680,
- "Location": [
- 4.78,
- 7
- ]
- },
- {
- "City": "Zaria",
- "Country": "Nigeria",
- "Country_ISO3": "NGA",
- "Pop1950": 50,
- "Pop1955": 70,
- "Pop1960": 120,
- "Pop1965": 180,
- "Pop1970": 240,
- "Pop1975": 320,
- "Pop1980": 420,
- "Pop1985": 520,
- "Pop1990": 590,
- "Pop1995": 670,
- "Pop2000": 750,
- "Pop2005": 850,
- "Pop2010": 890,
- "Pop2015": 960,
- "Pop2020": 1120,
- "Pop2025": 1290,
- "Pop2050": 1470,
- "Location": [
- 11.06,
- 7.7
- ]
- },
- {
- "City": "Oslo",
- "Country": "Norway",
- "Country_ISO3": "NOR",
- "Pop1950": 470,
- "Pop1955": 530,
- "Pop1960": 580,
- "Pop1965": 610,
- "Pop1970": 640,
- "Pop1975": 640,
- "Pop1980": 640,
- "Pop1985": 660,
- "Pop1990": 680,
- "Pop1995": 730,
- "Pop2000": 770,
- "Pop2005": 820,
- "Pop2010": 840,
- "Pop2015": 860,
- "Pop2020": 880,
- "Pop2025": 910,
- "Pop2050": 936,
- "Location": [
- 59.93,
- 10.71
- ]
- },
- {
- "City": "Faisalabad",
- "Country": "Pakistan",
- "Country_ISO3": "PAK",
- "Pop1950": 170,
- "Pop1955": 260,
- "Pop1960": 400,
- "Pop1965": 550,
- "Pop1970": 730,
- "Pop1975": 910,
- "Pop1980": 1080,
- "Pop1985": 1280,
- "Pop1990": 1520,
- "Pop1995": 1800,
- "Pop2000": 2140,
- "Pop2005": 2480,
- "Pop2010": 2620,
- "Pop2015": 2830,
- "Pop2020": 3260,
- "Pop2025": 3760,
- "Pop2050": 4283,
- "Location": [
- 31.4,
- 73.08
- ]
- },
- {
- "City": "Gujranwala",
- "Country": "Pakistan",
- "Country_ISO3": "PAK",
- "Pop1950": 120,
- "Pop1955": 150,
- "Pop1960": 190,
- "Pop1965": 250,
- "Pop1970": 320,
- "Pop1975": 430,
- "Pop1980": 580,
- "Pop1985": 700,
- "Pop1990": 850,
- "Pop1995": 1020,
- "Pop2000": 1220,
- "Pop2005": 1430,
- "Pop2010": 1510,
- "Pop2015": 1640,
- "Pop2020": 1900,
- "Pop2025": 2200,
- "Pop2050": 2513,
- "Location": [
- 32.15,
- 74.18
- ]
- },
- {
- "City": "Hyderabad",
- "Country": "Pakistan",
- "Country_ISO3": "PAK",
- "Pop1950": 230,
- "Pop1955": 310,
- "Pop1960": 420,
- "Pop1965": 500,
- "Pop1970": 590,
- "Pop1975": 670,
- "Pop1980": 740,
- "Pop1985": 840,
- "Pop1990": 950,
- "Pop1995": 1080,
- "Pop2000": 1220,
- "Pop2005": 1390,
- "Pop2010": 1460,
- "Pop2015": 1580,
- "Pop2020": 1830,
- "Pop2025": 2110,
- "Pop2050": 2420,
- "Location": [
- 25.38,
- 68.36
- ]
- },
- {
- "City": "Islamabad",
- "Country": "Pakistan",
- "Country_ISO3": "PAK",
- "Pop1950": 40,
- "Pop1955": 40,
- "Pop1960": 40,
- "Pop1965": 60,
- "Pop1970": 70,
- "Pop1975": 110,
- "Pop1980": 190,
- "Pop1985": 260,
- "Pop1990": 340,
- "Pop1995": 450,
- "Pop2000": 590,
- "Pop2005": 730,
- "Pop2010": 780,
- "Pop2015": 850,
- "Pop2020": 990,
- "Pop2025": 1150,
- "Pop2050": 1320,
- "Location": [
- 33.71,
- 73.06
- ]
- },
- {
- "City": "Karachi",
- "Country": "Pakistan",
- "Country_ISO3": "PAK",
- "Pop1950": 1060,
- "Pop1955": 1420,
- "Pop1960": 1850,
- "Pop1965": 2400,
- "Pop1970": 3120,
- "Pop1975": 3990,
- "Pop1980": 5050,
- "Pop1985": 6030,
- "Pop1990": 7150,
- "Pop1995": 8470,
- "Pop2000": 10020,
- "Pop2005": 11550,
- "Pop2010": 12130,
- "Pop2015": 13050,
- "Pop2020": 14860,
- "Pop2025": 16920,
- "Pop2050": 19095,
- "Location": [
- 24.89,
- 67.02
- ]
- },
- {
- "City": "Lahore",
- "Country": "Pakistan",
- "Country_ISO3": "PAK",
- "Pop1950": 840,
- "Pop1955": 1020,
- "Pop1960": 1260,
- "Pop1965": 1580,
- "Pop1970": 1960,
- "Pop1975": 2400,
- "Pop1980": 2880,
- "Pop1985": 3390,
- "Pop1990": 3970,
- "Pop1995": 4650,
- "Pop2000": 5450,
- "Pop2005": 6260,
- "Pop2010": 6580,
- "Pop2015": 7090,
- "Pop2020": 8110,
- "Pop2025": 9280,
- "Pop2050": 10512,
- "Location": [
- 31.54,
- 74.34
- ]
- },
- {
- "City": "Multan",
- "Country": "Pakistan",
- "Country_ISO3": "PAK",
- "Pop1950": 190,
- "Pop1955": 250,
- "Pop1960": 340,
- "Pop1965": 420,
- "Pop1970": 500,
- "Pop1975": 600,
- "Pop1980": 720,
- "Pop1985": 830,
- "Pop1990": 950,
- "Pop1995": 1100,
- "Pop2000": 1260,
- "Pop2005": 1440,
- "Pop2010": 1520,
- "Pop2015": 1650,
- "Pop2020": 1910,
- "Pop2025": 2200,
- "Pop2050": 2523,
- "Location": [
- 30.2,
- 71.41
- ]
- },
- {
- "City": "Peshawar",
- "Country": "Pakistan",
- "Country_ISO3": "PAK",
- "Pop1950": 150,
- "Pop1955": 180,
- "Pop1960": 210,
- "Pop1965": 240,
- "Pop1970": 260,
- "Pop1975": 350,
- "Pop1980": 540,
- "Pop1985": 650,
- "Pop1990": 770,
- "Pop1995": 900,
- "Pop2000": 1070,
- "Pop2005": 1240,
- "Pop2010": 1300,
- "Pop2015": 1420,
- "Pop2020": 1640,
- "Pop2025": 1890,
- "Pop2050": 2170,
- "Location": [
- 34,
- 71.54
- ]
- },
- {
- "City": "Quetta",
- "Country": "Pakistan",
- "Country_ISO3": "PAK",
- "Pop1950": 80,
- "Pop1955": 90,
- "Pop1960": 100,
- "Pop1965": 120,
- "Pop1970": 140,
- "Pop1975": 190,
- "Pop1980": 270,
- "Pop1985": 340,
- "Pop1990": 410,
- "Pop1995": 500,
- "Pop2000": 610,
- "Pop2005": 720,
- "Pop2010": 770,
- "Pop2015": 840,
- "Pop2020": 970,
- "Pop2025": 1130,
- "Pop2050": 1298,
- "Location": [
- 30.2,
- 67.01
- ]
- },
- {
- "City": "Rawalpindi",
- "Country": "Pakistan",
- "Country_ISO3": "PAK",
- "Pop1950": 230,
- "Pop1955": 280,
- "Pop1960": 330,
- "Pop1965": 430,
- "Pop1970": 550,
- "Pop1975": 670,
- "Pop1980": 780,
- "Pop1985": 920,
- "Pop1990": 1090,
- "Pop1995": 1290,
- "Pop2000": 1520,
- "Pop2005": 1760,
- "Pop2010": 1860,
- "Pop2015": 2020,
- "Pop2020": 2320,
- "Pop2025": 2680,
- "Pop2050": 3067,
- "Location": [
- 33.6,
- 73.04
- ]
- },
- {
- "City": "Ciudad de Panamá (Panama City)",
- "Country": "Panama",
- "Country_ISO3": "PAN",
- "Pop1950": 170,
- "Pop1955": 220,
- "Pop1960": 280,
- "Pop1965": 360,
- "Pop1970": 460,
- "Pop1975": 530,
- "Pop1980": 610,
- "Pop1985": 720,
- "Pop1990": 850,
- "Pop1995": 950,
- "Pop2000": 1070,
- "Pop2005": 1220,
- "Pop2010": 1280,
- "Pop2015": 1380,
- "Pop2020": 1530,
- "Pop2025": 1650,
- "Pop2050": 1759,
- "Location": [
- 9,
- -79.51
- ]
- },
- {
- "City": "Asunción",
- "Country": "Paraguay",
- "Country_ISO3": "PRY",
- "Pop1950": 260,
- "Pop1955": 310,
- "Pop1960": 380,
- "Pop1965": 460,
- "Pop1970": 550,
- "Pop1975": 650,
- "Pop1980": 770,
- "Pop1985": 910,
- "Pop1990": 1090,
- "Pop1995": 1290,
- "Pop2000": 1510,
- "Pop2005": 1760,
- "Pop2010": 1870,
- "Pop2015": 2030,
- "Pop2020": 2280,
- "Pop2025": 2510,
- "Pop2050": 2715,
- "Location": [
- -25.3,
- -57.62
- ]
- },
- {
- "City": "Arequipa",
- "Country": "Peru",
- "Country_ISO3": "PER",
- "Pop1950": 130,
- "Pop1955": 140,
- "Pop1960": 160,
- "Pop1965": 210,
- "Pop1970": 270,
- "Pop1975": 350,
- "Pop1980": 430,
- "Pop1985": 500,
- "Pop1990": 560,
- "Pop1995": 640,
- "Pop2000": 700,
- "Pop2005": 780,
- "Pop2010": 820,
- "Pop2015": 860,
- "Pop2020": 930,
- "Pop2025": 980,
- "Pop2050": 1038,
- "Location": [
- -16.39,
- -71.52
- ]
- },
- {
- "City": "Lima",
- "Country": "Peru",
- "Country_ISO3": "PER",
- "Pop1950": 1070,
- "Pop1955": 1370,
- "Pop1960": 1760,
- "Pop1965": 2280,
- "Pop1970": 2980,
- "Pop1975": 3700,
- "Pop1980": 4440,
- "Pop1985": 5120,
- "Pop1990": 5840,
- "Pop1995": 6540,
- "Pop2000": 7120,
- "Pop2005": 7750,
- "Pop2010": 8010,
- "Pop2015": 8380,
- "Pop2020": 8860,
- "Pop2025": 9250,
- "Pop2050": 9600,
- "Location": [
- -12.08,
- -77.04
- ]
- },
- {
- "City": "Cebu",
- "Country": "Philippines",
- "Country_ISO3": "PHL",
- "Pop1950": 180,
- "Pop1955": 210,
- "Pop1960": 250,
- "Pop1965": 300,
- "Pop1970": 350,
- "Pop1975": 420,
- "Pop1980": 490,
- "Pop1985": 550,
- "Pop1990": 610,
- "Pop1995": 660,
- "Pop2000": 720,
- "Pop2005": 790,
- "Pop2010": 820,
- "Pop2015": 860,
- "Pop2020": 960,
- "Pop2025": 1060,
- "Pop2050": 1153,
- "Location": [
- 10.42,
- 123.79
- ]
- },
- {
- "City": "Davao",
- "Country": "Philippines",
- "Country_ISO3": "PHL",
- "Pop1950": 120,
- "Pop1955": 170,
- "Pop1960": 230,
- "Pop1965": 300,
- "Pop1970": 400,
- "Pop1975": 490,
- "Pop1980": 610,
- "Pop1985": 720,
- "Pop1990": 850,
- "Pop1995": 1000,
- "Pop2000": 1150,
- "Pop2005": 1320,
- "Pop2010": 1400,
- "Pop2015": 1520,
- "Pop2020": 1730,
- "Pop2025": 1910,
- "Pop2050": 2065,
- "Location": [
- 7.08,
- 125.61
- ]
- },
- {
- "City": "Manila",
- "Country": "Philippines",
- "Country_ISO3": "PHL",
- "Pop1950": 1540,
- "Pop1955": 1870,
- "Pop1960": 2270,
- "Pop1965": 2830,
- "Pop1970": 3530,
- "Pop1975": 5000,
- "Pop1980": 5960,
- "Pop1985": 6890,
- "Pop1990": 7970,
- "Pop1995": 9400,
- "Pop2000": 9960,
- "Pop2005": 10760,
- "Pop2010": 11100,
- "Pop2015": 11660,
- "Pop2020": 12790,
- "Pop2025": 13890,
- "Pop2050": 14808,
- "Location": [
- 14.61,
- 120.96
- ]
- },
- {
- "City": "Zamboanga",
- "Country": "Philippines",
- "Country_ISO3": "PHL",
- "Pop1950": 110,
- "Pop1955": 120,
- "Pop1960": 130,
- "Pop1965": 160,
- "Pop1970": 200,
- "Pop1975": 210,
- "Pop1980": 340,
- "Pop1985": 390,
- "Pop1990": 440,
- "Pop1995": 510,
- "Pop2000": 600,
- "Pop2005": 720,
- "Pop2010": 770,
- "Pop2015": 860,
- "Pop2020": 990,
- "Pop2025": 1100,
- "Pop2050": 1192,
- "Location": [
- 6.9,
- 122.06
- ]
- },
- {
- "City": "Kraków",
- "Country": "Poland",
- "Country_ISO3": "POL",
- "Pop1950": 340,
- "Pop1955": 400,
- "Pop1960": 470,
- "Pop1965": 520,
- "Pop1970": 580,
- "Pop1975": 640,
- "Pop1980": 700,
- "Pop1985": 720,
- "Pop1990": 740,
- "Pop1995": 750,
- "Pop2000": 760,
- "Pop2005": 760,
- "Pop2010": 760,
- "Pop2015": 760,
- "Pop2020": 760,
- "Pop2025": 760,
- "Pop2050": 755,
- "Location": [
- 50.06,
- 19.94
- ]
- },
- {
- "City": "Lódz",
- "Country": "Poland",
- "Country_ISO3": "POL",
- "Pop1950": 610,
- "Pop1955": 660,
- "Pop1960": 700,
- "Pop1965": 730,
- "Pop1970": 760,
- "Pop1975": 800,
- "Pop1980": 820,
- "Pop1985": 830,
- "Pop1990": 840,
- "Pop1995": 820,
- "Pop2000": 800,
- "Pop2005": 770,
- "Pop2010": 760,
- "Pop2015": 740,
- "Pop2020": 740,
- "Pop2025": 740,
- "Pop2050": 735,
- "Location": [
- 51.77,
- 19.47
- ]
- },
- {
- "City": "Warszawa",
- "Country": "Poland",
- "Country_ISO3": "POL",
- "Pop1950": 770,
- "Pop1955": 940,
- "Pop1960": 1120,
- "Pop1965": 1210,
- "Pop1970": 1300,
- "Pop1975": 1440,
- "Pop1980": 1560,
- "Pop1985": 1600,
- "Pop1990": 1630,
- "Pop1995": 1650,
- "Pop2000": 1670,
- "Pop2005": 1690,
- "Pop2010": 1710,
- "Pop2015": 1720,
- "Pop2020": 1740,
- "Pop2025": 1740,
- "Pop2050": 1736,
- "Location": [
- 52.24,
- 21.01
- ]
- },
- {
- "City": "Lisboa",
- "Country": "Portugal",
- "Country_ISO3": "PRT",
- "Pop1950": 1300,
- "Pop1955": 1400,
- "Pop1960": 1510,
- "Pop1965": 1660,
- "Pop1970": 1820,
- "Pop1975": 2100,
- "Pop1980": 2450,
- "Pop1985": 2520,
- "Pop1990": 2540,
- "Pop1995": 2600,
- "Pop2000": 2670,
- "Pop2005": 2760,
- "Pop2010": 2810,
- "Pop2015": 2890,
- "Pop2020": 3000,
- "Pop2025": 3060,
- "Pop2050": 3086,
- "Location": [
- 38.72,
- -9.12
- ]
- },
- {
- "City": "Porto",
- "Country": "Portugal",
- "Country_ISO3": "PRT",
- "Pop1950": 730,
- "Pop1955": 780,
- "Pop1960": 840,
- "Pop1965": 880,
- "Pop1970": 920,
- "Pop1975": 1010,
- "Pop1980": 1100,
- "Pop1985": 1140,
- "Pop1990": 1160,
- "Pop1995": 1210,
- "Pop2000": 1250,
- "Pop2005": 1310,
- "Pop2010": 1340,
- "Pop2015": 1380,
- "Pop2020": 1440,
- "Pop2025": 1480,
- "Pop2050": 1497,
- "Location": [
- 41.16,
- -8.58
- ]
- },
- {
- "City": "San Juan",
- "Country": "Puerto Rico",
- "Country_ISO3": "PRI",
- "Pop1950": 450,
- "Pop1955": 520,
- "Pop1960": 600,
- "Pop1965": 740,
- "Pop1970": 920,
- "Pop1975": 1070,
- "Pop1980": 1240,
- "Pop1985": 1380,
- "Pop1990": 1540,
- "Pop1995": 1860,
- "Pop2000": 2240,
- "Pop2005": 2600,
- "Pop2010": 2690,
- "Pop2015": 2760,
- "Pop2020": 2800,
- "Pop2025": 2800,
- "Pop2050": 2803,
- "Location": [
- 18.8,
- -71.22
- ]
- },
- {
- "City": "Bucuresti",
- "Country": "Romania",
- "Country_ISO3": "ROU",
- "Pop1950": 650,
- "Pop1955": 860,
- "Pop1960": 1000,
- "Pop1965": 1150,
- "Pop1970": 1400,
- "Pop1975": 1700,
- "Pop1980": 1860,
- "Pop1985": 1950,
- "Pop1990": 2040,
- "Pop1995": 2020,
- "Pop2000": 1950,
- "Pop2005": 1940,
- "Pop2010": 1940,
- "Pop2015": 1950,
- "Pop2020": 1950,
- "Pop2025": 1950,
- "Pop2050": 1949,
- "Location": [
- 44.43,
- 26.12
- ]
- },
- {
- "City": "Chelyabinsk",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 570,
- "Pop1955": 640,
- "Pop1960": 710,
- "Pop1965": 790,
- "Pop1970": 880,
- "Pop1975": 970,
- "Pop1980": 1050,
- "Pop1985": 1100,
- "Pop1990": 1130,
- "Pop1995": 1100,
- "Pop2000": 1080,
- "Pop2005": 1090,
- "Pop2010": 1090,
- "Pop2015": 1090,
- "Pop2020": 1090,
- "Pop2025": 1080,
- "Pop2050": 1085,
- "Location": [
- 55.14,
- 61.39
- ]
- },
- {
- "City": "Kazan",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 510,
- "Pop1955": 590,
- "Pop1960": 670,
- "Pop1965": 770,
- "Pop1970": 880,
- "Pop1975": 940,
- "Pop1980": 1010,
- "Pop1985": 1060,
- "Pop1990": 1090,
- "Pop1995": 1090,
- "Pop2000": 1100,
- "Pop2005": 1110,
- "Pop2010": 1120,
- "Pop2015": 1120,
- "Pop2020": 1120,
- "Pop2025": 1120,
- "Pop2050": 1122,
- "Location": [
- 55.73,
- 49.14
- ]
- },
- {
- "City": "Krasnoyarsk",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 290,
- "Pop1955": 360,
- "Pop1960": 440,
- "Pop1965": 540,
- "Pop1970": 660,
- "Pop1975": 730,
- "Pop1980": 810,
- "Pop1985": 870,
- "Pop1990": 910,
- "Pop1995": 910,
- "Pop2000": 910,
- "Pop2005": 920,
- "Pop2010": 920,
- "Pop2015": 930,
- "Pop2020": 930,
- "Pop2025": 940,
- "Pop2050": 935,
- "Location": [
- 56.01,
- 92.83
- ]
- },
- {
- "City": "Moskva",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 5360,
- "Pop1955": 5750,
- "Pop1960": 6170,
- "Pop1965": 6620,
- "Pop1970": 7110,
- "Pop1975": 7620,
- "Pop1980": 8140,
- "Pop1985": 8580,
- "Pop1990": 8990,
- "Pop1995": 9200,
- "Pop2000": 10020,
- "Pop2005": 10420,
- "Pop2010": 10450,
- "Pop2015": 10500,
- "Pop2020": 10520,
- "Pop2025": 10530,
- "Pop2050": 10526,
- "Location": [
- 55.74,
- 37.7
- ]
- },
- {
- "City": "Nizhniy Novgorod",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 800,
- "Pop1955": 880,
- "Pop1960": 970,
- "Pop1965": 1070,
- "Pop1970": 1180,
- "Pop1975": 1270,
- "Pop1980": 1360,
- "Pop1985": 1400,
- "Pop1990": 1420,
- "Pop1995": 1380,
- "Pop2000": 1330,
- "Pop2005": 1290,
- "Pop2010": 1280,
- "Pop2015": 1270,
- "Pop2020": 1260,
- "Pop2025": 1260,
- "Pop2050": 1262,
- "Location": [
- 58.54,
- 31.27
- ]
- },
- {
- "City": "Novosibirsk",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 720,
- "Pop1955": 810,
- "Pop1960": 920,
- "Pop1965": 1040,
- "Pop1970": 1170,
- "Pop1975": 1250,
- "Pop1980": 1330,
- "Pop1985": 1390,
- "Pop1990": 1430,
- "Pop1995": 1430,
- "Pop2000": 1430,
- "Pop2005": 1400,
- "Pop2010": 1390,
- "Pop2015": 1380,
- "Pop2020": 1370,
- "Pop2025": 1370,
- "Pop2050": 1366,
- "Location": [
- 55.03,
- 82.94
- ]
- },
- {
- "City": "Omsk",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 440,
- "Pop1955": 520,
- "Pop1960": 610,
- "Pop1965": 710,
- "Pop1970": 830,
- "Pop1975": 930,
- "Pop1980": 1030,
- "Pop1985": 1100,
- "Pop1990": 1140,
- "Pop1995": 1140,
- "Pop2000": 1140,
- "Pop2005": 1140,
- "Pop2010": 1140,
- "Pop2015": 1130,
- "Pop2020": 1120,
- "Pop2025": 1120,
- "Pop2050": 1125,
- "Location": [
- 55.06,
- 73.25
- ]
- },
- {
- "City": "Perm",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 500,
- "Pop1955": 570,
- "Pop1960": 660,
- "Pop1965": 750,
- "Pop1970": 860,
- "Pop1975": 940,
- "Pop1980": 1010,
- "Pop1985": 1050,
- "Pop1990": 1080,
- "Pop1995": 1040,
- "Pop2000": 1010,
- "Pop2005": 990,
- "Pop2010": 1000,
- "Pop2015": 1000,
- "Pop2020": 1010,
- "Pop2025": 1010,
- "Pop2050": 1007,
- "Location": [
- 58,
- 56.23
- ]
- },
- {
- "City": "Rostov-na-Donu",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 480,
- "Pop1955": 550,
- "Pop1960": 620,
- "Pop1965": 700,
- "Pop1970": 800,
- "Pop1975": 870,
- "Pop1980": 950,
- "Pop1985": 990,
- "Pop1990": 1020,
- "Pop1995": 1040,
- "Pop2000": 1060,
- "Pop2005": 1060,
- "Pop2010": 1050,
- "Pop2015": 1050,
- "Pop2020": 1040,
- "Pop2025": 1040,
- "Pop2050": 1044,
- "Location": [
- 47.23,
- 39.68
- ]
- },
- {
- "City": "Samara",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 660,
- "Pop1955": 740,
- "Pop1960": 840,
- "Pop1965": 940,
- "Pop1970": 1060,
- "Pop1975": 1150,
- "Pop1980": 1220,
- "Pop1985": 1240,
- "Pop1990": 1240,
- "Pop1995": 1210,
- "Pop2000": 1170,
- "Pop2005": 1150,
- "Pop2010": 1140,
- "Pop2015": 1130,
- "Pop2020": 1120,
- "Pop2025": 1120,
- "Pop2050": 1119,
- "Location": [
- 53.23,
- 50.16
- ]
- },
- {
- "City": "Sankt Peterburg",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 2900,
- "Pop1955": 3140,
- "Pop1960": 3400,
- "Pop1965": 3680,
- "Pop1970": 3980,
- "Pop1975": 4320,
- "Pop1980": 4640,
- "Pop1985": 4840,
- "Pop1990": 4990,
- "Pop1995": 4840,
- "Pop2000": 4730,
- "Pop2005": 4590,
- "Pop2010": 4550,
- "Pop2015": 4510,
- "Pop2020": 4480,
- "Pop2025": 4480,
- "Pop2050": 4476,
- "Location": [
- 59.91,
- 30.24
- ]
- },
- {
- "City": "Saratov",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 470,
- "Pop1955": 530,
- "Pop1960": 600,
- "Pop1965": 680,
- "Pop1970": 760,
- "Pop1975": 820,
- "Pop1980": 860,
- "Pop1985": 890,
- "Pop1990": 900,
- "Pop1995": 890,
- "Pop2000": 880,
- "Pop2005": 850,
- "Pop2010": 840,
- "Pop2015": 830,
- "Pop2020": 820,
- "Pop2025": 820,
- "Pop2050": 822,
- "Location": [
- 51.49,
- 45.95
- ]
- },
- {
- "City": "Ufa",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 420,
- "Pop1955": 490,
- "Pop1960": 570,
- "Pop1965": 670,
- "Pop1970": 780,
- "Pop1975": 890,
- "Pop1980": 980,
- "Pop1985": 1040,
- "Pop1990": 1080,
- "Pop1995": 1060,
- "Pop2000": 1050,
- "Pop2005": 1030,
- "Pop2010": 1020,
- "Pop2015": 1000,
- "Pop2020": 990,
- "Pop2025": 990,
- "Pop2050": 986,
- "Location": [
- 54.82,
- 56.09
- ]
- },
- {
- "City": "Volgograd",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 460,
- "Pop1955": 530,
- "Pop1960": 620,
- "Pop1965": 720,
- "Pop1970": 820,
- "Pop1975": 880,
- "Pop1980": 940,
- "Pop1985": 970,
- "Pop1990": 1000,
- "Pop1995": 1000,
- "Pop2000": 1010,
- "Pop2005": 990,
- "Pop2010": 980,
- "Pop2015": 970,
- "Pop2020": 970,
- "Pop2025": 960,
- "Pop2050": 965,
- "Location": [
- 48.7,
- 44.48
- ]
- },
- {
- "City": "Voronezh",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 330,
- "Pop1955": 400,
- "Pop1960": 470,
- "Pop1965": 560,
- "Pop1970": 670,
- "Pop1975": 730,
- "Pop1980": 800,
- "Pop1985": 850,
- "Pop1990": 880,
- "Pop1995": 870,
- "Pop2000": 850,
- "Pop2005": 850,
- "Pop2010": 840,
- "Pop2015": 840,
- "Pop2020": 840,
- "Pop2025": 840,
- "Pop2050": 838,
- "Location": [
- 51.71,
- 39.26
- ]
- },
- {
- "City": "Yekaterinburg",
- "Country": "Russian Federation",
- "Country_ISO3": "RUS",
- "Pop1950": 630,
- "Pop1955": 710,
- "Pop1960": 810,
- "Pop1965": 920,
- "Pop1970": 1040,
- "Pop1975": 1140,
- "Pop1980": 1230,
- "Pop1985": 1300,
- "Pop1990": 1350,
- "Pop1995": 1330,
- "Pop2000": 1300,
- "Pop2005": 1310,
- "Pop2010": 1310,
- "Pop2015": 1320,
- "Pop2020": 1320,
- "Pop2025": 1320,
- "Pop2050": 1324,
- "Location": [
- 56.83,
- 60.58
- ]
- },
- {
- "City": "Kigali",
- "Country": "Rwanda",
- "Country_ISO3": "RWA",
- "Pop1950": 20,
- "Pop1955": 20,
- "Pop1960": 30,
- "Pop1965": 40,
- "Pop1970": 60,
- "Pop1975": 90,
- "Pop1980": 130,
- "Pop1985": 170,
- "Pop1990": 220,
- "Pop1995": 290,
- "Pop2000": 500,
- "Pop2005": 780,
- "Pop2010": 860,
- "Pop2015": 950,
- "Pop2020": 1150,
- "Pop2025": 1410,
- "Pop2050": 1715,
- "Location": [
- -1.95,
- 30.05
- ]
- },
- {
- "City": "La Paz",
- "Country": "Bolivia",
- "Country_ISO3": "BOL",
- "Pop1950": 320,
- "Pop1955": 370,
- "Pop1960": 440,
- "Pop1965": 510,
- "Pop1970": 600,
- "Pop1975": 700,
- "Pop1980": 810,
- "Pop1985": 930,
- "Pop1990": 1060,
- "Pop1995": 1270,
- "Pop2000": 1390,
- "Pop2005": 1530,
- "Pop2010": 1590,
- "Pop2015": 1690,
- "Pop2020": 1860,
- "Pop2025": 2030,
- "Pop2050": 2178,
- "Location": [
- -16.5,
- -68.15
- ]
- },
- {
- "City": "Santa Cruz",
- "Country": "Bolivia",
- "Country_ISO3": "BOL",
- "Pop1950": 40,
- "Pop1955": 60,
- "Pop1960": 80,
- "Pop1965": 120,
- "Pop1970": 170,
- "Pop1975": 230,
- "Pop1980": 320,
- "Pop1985": 450,
- "Pop1990": 620,
- "Pop1995": 830,
- "Pop2000": 1050,
- "Pop2005": 1320,
- "Pop2010": 1420,
- "Pop2015": 1550,
- "Pop2020": 1720,
- "Pop2025": 1880,
- "Pop2050": 2016,
- "Location": [
- -17.78,
- -63.19
- ]
- },
- {
- "City": "Ad-Dammam",
- "Country": "Saudi Arabia",
- "Country_ISO3": "SAU",
- "Pop1950": 20,
- "Pop1955": 30,
- "Pop1960": 40,
- "Pop1965": 50,
- "Pop1970": 80,
- "Pop1975": 140,
- "Pop1980": 200,
- "Pop1985": 280,
- "Pop1990": 410,
- "Pop1995": 530,
- "Pop2000": 640,
- "Pop2005": 770,
- "Pop2010": 820,
- "Pop2015": 900,
- "Pop2020": 1020,
- "Pop2025": 1120,
- "Pop2050": 1212,
- "Location": [
- 26.33,
- 50.08
- ]
- },
- {
- "City": "Al-Madinah",
- "Country": "Saudi Arabia",
- "Country_ISO3": "SAU",
- "Pop1950": 50,
- "Pop1955": 50,
- "Pop1960": 60,
- "Pop1965": 80,
- "Pop1970": 130,
- "Pop1975": 210,
- "Pop1980": 280,
- "Pop1985": 390,
- "Pop1990": 530,
- "Pop1995": 670,
- "Pop2000": 800,
- "Pop2005": 940,
- "Pop2010": 1010,
- "Pop2015": 1100,
- "Pop2020": 1240,
- "Pop2025": 1360,
- "Pop2050": 1474,
- "Location": [
- 24.42,
- 39.69
- ]
- },
- {
- "City": "Ar-Riyadh",
- "Country": "Saudi Arabia",
- "Country_ISO3": "SAU",
- "Pop1950": 110,
- "Pop1955": 130,
- "Pop1960": 160,
- "Pop1965": 230,
- "Pop1970": 410,
- "Pop1975": 710,
- "Pop1980": 1060,
- "Pop1985": 1570,
- "Pop1990": 2320,
- "Pop1995": 3040,
- "Pop2000": 3570,
- "Pop2005": 4190,
- "Pop2010": 4460,
- "Pop2015": 4860,
- "Pop2020": 5400,
- "Pop2025": 5870,
- "Pop2050": 6275,
- "Location": [
- 24.65,
- 46.77
- ]
- },
- {
- "City": "Jiddah",
- "Country": "Saudi Arabia",
- "Country_ISO3": "SAU",
- "Pop1950": 120,
- "Pop1955": 130,
- "Pop1960": 140,
- "Pop1965": 200,
- "Pop1970": 350,
- "Pop1975": 590,
- "Pop1980": 850,
- "Pop1985": 1220,
- "Pop1990": 1740,
- "Pop1995": 2200,
- "Pop2000": 2510,
- "Pop2005": 2860,
- "Pop2010": 3010,
- "Pop2015": 3240,
- "Pop2020": 3590,
- "Pop2025": 3910,
- "Pop2050": 4190,
- "Location": [
- 21.54,
- 39.17
- ]
- },
- {
- "City": "Makkah",
- "Country": "Saudi Arabia",
- "Country_ISO3": "SAU",
- "Pop1950": 150,
- "Pop1955": 150,
- "Pop1960": 160,
- "Pop1965": 190,
- "Pop1970": 270,
- "Pop1975": 380,
- "Pop1980": 500,
- "Pop1985": 660,
- "Pop1990": 860,
- "Pop1995": 1030,
- "Pop2000": 1170,
- "Pop2005": 1320,
- "Pop2010": 1380,
- "Pop2015": 1490,
- "Pop2020": 1650,
- "Pop2025": 1810,
- "Pop2050": 1948,
- "Location": [
- 21.42,
- 39.81
- ]
- },
- {
- "City": "Dakar",
- "Country": "Senegal",
- "Country_ISO3": "SEN",
- "Pop1950": 210,
- "Pop1955": 240,
- "Pop1960": 360,
- "Pop1965": 470,
- "Pop1970": 610,
- "Pop1975": 780,
- "Pop1980": 960,
- "Pop1985": 1160,
- "Pop1990": 1400,
- "Pop1995": 1690,
- "Pop2000": 2030,
- "Pop2005": 2430,
- "Pop2010": 2600,
- "Pop2015": 2860,
- "Pop2020": 3280,
- "Pop2025": 3730,
- "Pop2050": 4225,
- "Location": [
- 14.68,
- -17.45
- ]
- },
- {
- "City": "Beograd",
- "Country": "Serbia",
- "Country_ISO3": "SRB",
- "Pop1950": 410,
- "Pop1955": 500,
- "Pop1960": 580,
- "Pop1965": 650,
- "Pop1970": 730,
- "Pop1975": 870,
- "Pop1980": 1060,
- "Pop1985": 1120,
- "Pop1990": 1160,
- "Pop1995": 1150,
- "Pop2000": 1130,
- "Pop2005": 1110,
- "Pop2010": 1100,
- "Pop2015": 1100,
- "Pop2020": 1110,
- "Pop2025": 1130,
- "Pop2050": 1163,
- "Location": [
- 44.79,
- 20.41
- ]
- },
- {
- "City": "Freetown",
- "Country": "Sierra Leone",
- "Country_ISO3": "SLE",
- "Pop1950": 90,
- "Pop1955": 100,
- "Pop1960": 120,
- "Pop1965": 150,
- "Pop1970": 210,
- "Pop1975": 280,
- "Pop1980": 360,
- "Pop1985": 460,
- "Pop1990": 530,
- "Pop1995": 600,
- "Pop2000": 690,
- "Pop2005": 780,
- "Pop2010": 830,
- "Pop2015": 890,
- "Pop2020": 1030,
- "Pop2025": 1200,
- "Pop2050": 1406,
- "Location": [
- 8.48,
- -13.23
- ]
- },
- {
- "City": "Singapore",
- "Country": "Singapore",
- "Country_ISO3": "SGP",
- "Pop1950": 1020,
- "Pop1955": 1310,
- "Pop1960": 1630,
- "Pop1965": 1880,
- "Pop1970": 2080,
- "Pop1975": 2260,
- "Pop1980": 2420,
- "Pop1985": 2710,
- "Pop1990": 3020,
- "Pop1995": 3480,
- "Pop2000": 4020,
- "Pop2005": 4330,
- "Pop2010": 4440,
- "Pop2015": 4590,
- "Pop2020": 4810,
- "Pop2025": 4960,
- "Pop2050": 5104,
- "Location": [
- 1.26,
- 103.83
- ]
- },
- {
- "City": "Hà Noi",
- "Country": "Viet Nam",
- "Country_ISO3": "VNM",
- "Pop1950": 280,
- "Pop1955": 420,
- "Pop1960": 640,
- "Pop1965": 920,
- "Pop1970": 1310,
- "Pop1975": 1880,
- "Pop1980": 2610,
- "Pop1985": 2850,
- "Pop1990": 3130,
- "Pop1995": 3420,
- "Pop2000": 3750,
- "Pop2005": 4170,
- "Pop2010": 4380,
- "Pop2015": 4720,
- "Pop2020": 5360,
- "Pop2025": 6040,
- "Pop2050": 6754,
- "Location": [
- 21.03,
- 105.82
- ]
- },
- {
- "City": "Hai Phòng",
- "Country": "Viet Nam",
- "Country_ISO3": "VNM",
- "Pop1950": 170,
- "Pop1955": 250,
- "Pop1960": 370,
- "Pop1965": 510,
- "Pop1970": 700,
- "Pop1975": 970,
- "Pop1980": 1290,
- "Pop1985": 1380,
- "Pop1990": 1470,
- "Pop1995": 1580,
- "Pop2000": 1700,
- "Pop2005": 1880,
- "Pop2010": 1970,
- "Pop2015": 2130,
- "Pop2020": 2430,
- "Pop2025": 2750,
- "Pop2050": 3096,
- "Location": [
- 20.86,
- 106.67
- ]
- },
- {
- "City": "Thành Pho Ho Chí Minh",
- "Country": "Viet Nam",
- "Country_ISO3": "VNM",
- "Pop1950": 1210,
- "Pop1955": 1300,
- "Pop1960": 1400,
- "Pop1965": 1760,
- "Pop1970": 2230,
- "Pop1975": 2810,
- "Pop1980": 3460,
- "Pop1985": 3720,
- "Pop1990": 4000,
- "Pop1995": 4300,
- "Pop2000": 4620,
- "Pop2005": 5070,
- "Pop2010": 5310,
- "Pop2015": 5720,
- "Pop2020": 6480,
- "Pop2025": 7290,
- "Pop2050": 8149,
- "Location": [
- 10.75,
- 106.66
- ]
- },
- {
- "City": "Muqdisho",
- "Country": "Somalia",
- "Country_ISO3": "SOM",
- "Pop1950": 70,
- "Pop1955": 70,
- "Pop1960": 90,
- "Pop1965": 150,
- "Pop1970": 270,
- "Pop1975": 440,
- "Pop1980": 550,
- "Pop1985": 750,
- "Pop1990": 1040,
- "Pop1995": 1150,
- "Pop2000": 1200,
- "Pop2005": 1420,
- "Pop2010": 1100,
- "Pop2015": 1500,
- "Pop2020": 1790,
- "Pop2025": 2140,
- "Pop2050": 2529,
- "Location": [
- 2.04,
- 45.34
- ]
- },
- {
- "City": "Cape Town",
- "Country": "South Africa",
- "Country_ISO3": "ZAF",
- "Pop1950": 620,
- "Pop1955": 700,
- "Pop1960": 800,
- "Pop1965": 940,
- "Pop1970": 1110,
- "Pop1975": 1340,
- "Pop1980": 1610,
- "Pop1985": 1920,
- "Pop1990": 2160,
- "Pop1995": 2390,
- "Pop2000": 2720,
- "Pop2005": 3090,
- "Pop2010": 3220,
- "Pop2015": 3360,
- "Pop2020": 3500,
- "Pop2025": 3630,
- "Pop2050": 3744,
- "Location": [
- -33.97,
- 18.48
- ]
- },
- {
- "City": "Durban",
- "Country": "South Africa",
- "Country_ISO3": "ZAF",
- "Pop1950": 480,
- "Pop1955": 570,
- "Pop1960": 680,
- "Pop1965": 760,
- "Pop1970": 860,
- "Pop1975": 1020,
- "Pop1980": 1210,
- "Pop1985": 1450,
- "Pop1990": 1720,
- "Pop1995": 2080,
- "Pop2000": 2370,
- "Pop2005": 2640,
- "Pop2010": 2730,
- "Pop2015": 2840,
- "Pop2020": 2960,
- "Pop2025": 3070,
- "Pop2050": 3173,
- "Location": [
- -29.83,
- 30.94
- ]
- },
- {
- "City": "Ekurhuleni",
- "Country": "South Africa",
- "Country_ISO3": "ZAF",
- "Pop1950": 550,
- "Pop1955": 610,
- "Pop1960": 680,
- "Pop1965": 780,
- "Pop1970": 900,
- "Pop1975": 1000,
- "Pop1980": 1110,
- "Pop1985": 1240,
- "Pop1990": 1530,
- "Pop1995": 1890,
- "Pop2000": 2330,
- "Pop2005": 2820,
- "Pop2010": 2990,
- "Pop2015": 3160,
- "Pop2020": 3310,
- "Pop2025": 3430,
- "Pop2050": 3539,
- "Location": [
- -26.17,
- 28.22
- ]
- },
- {
- "City": "Johannesburg",
- "Country": "South Africa",
- "Country_ISO3": "ZAF",
- "Pop1950": 900,
- "Pop1955": 1020,
- "Pop1960": 1150,
- "Pop1965": 1290,
- "Pop1970": 1440,
- "Pop1975": 1550,
- "Pop1980": 1660,
- "Pop1985": 1770,
- "Pop1990": 1900,
- "Pop1995": 2260,
- "Pop2000": 2730,
- "Pop2005": 3260,
- "Pop2010": 3440,
- "Pop2015": 3620,
- "Pop2020": 3780,
- "Pop2025": 3920,
- "Pop2050": 4041,
- "Location": [
- -26.17,
- 28
- ]
- },
- {
- "City": "Port Elizabeth",
- "Country": "South Africa",
- "Country_ISO3": "ZAF",
- "Pop1950": 190,
- "Pop1955": 240,
- "Pop1960": 290,
- "Pop1965": 370,
- "Pop1970": 480,
- "Pop1975": 530,
- "Pop1980": 590,
- "Pop1985": 660,
- "Pop1990": 830,
- "Pop1995": 910,
- "Pop2000": 960,
- "Pop2005": 1000,
- "Pop2010": 1020,
- "Pop2015": 1050,
- "Pop2020": 1100,
- "Pop2025": 1150,
- "Pop2050": 1197,
- "Location": [
- -33.88,
- 25.48
- ]
- },
- {
- "City": "Pretoria",
- "Country": "South Africa",
- "Country_ISO3": "ZAF",
- "Pop1950": 280,
- "Pop1955": 340,
- "Pop1960": 420,
- "Pop1965": 490,
- "Pop1970": 560,
- "Pop1975": 620,
- "Pop1980": 690,
- "Pop1985": 760,
- "Pop1990": 910,
- "Pop1995": 950,
- "Pop2000": 1080,
- "Pop2005": 1270,
- "Pop2010": 1340,
- "Pop2015": 1410,
- "Pop2020": 1480,
- "Pop2025": 1540,
- "Pop2050": 1604,
- "Location": [
- -25.73,
- 28.21
- ]
- },
- {
- "City": "Vereeniging",
- "Country": "South Africa",
- "Country_ISO3": "ZAF",
- "Pop1950": 120,
- "Pop1955": 150,
- "Pop1960": 190,
- "Pop1965": 240,
- "Pop1970": 310,
- "Pop1975": 370,
- "Pop1980": 450,
- "Pop1985": 550,
- "Pop1990": 740,
- "Pop1995": 800,
- "Pop2000": 900,
- "Pop2005": 1030,
- "Pop2010": 1070,
- "Pop2015": 1130,
- "Pop2020": 1180,
- "Pop2025": 1240,
- "Pop2050": 1286,
- "Location": [
- -26.67,
- 27.93
- ]
- },
- {
- "City": "Harare",
- "Country": "Zimbabwe",
- "Country_ISO3": "ZWE",
- "Pop1950": 140,
- "Pop1955": 190,
- "Pop1960": 250,
- "Pop1965": 320,
- "Pop1970": 420,
- "Pop1975": 530,
- "Pop1980": 620,
- "Pop1985": 780,
- "Pop1990": 1050,
- "Pop1995": 1260,
- "Pop2000": 1380,
- "Pop2005": 1520,
- "Pop2010": 1570,
- "Pop2015": 1660,
- "Pop2020": 1840,
- "Pop2025": 2040,
- "Pop2050": 2247,
- "Location": [
- -17.82,
- 31.02
- ]
- },
- {
- "City": "Barcelona",
- "Country": "Spain",
- "Country_ISO3": "ESP",
- "Pop1950": 1810,
- "Pop1955": 2100,
- "Pop1960": 2470,
- "Pop1965": 2930,
- "Pop1970": 3480,
- "Pop1975": 3680,
- "Pop1980": 3840,
- "Pop1985": 3970,
- "Pop1990": 4100,
- "Pop1995": 4320,
- "Pop2000": 4560,
- "Pop2005": 4820,
- "Pop2010": 4920,
- "Pop2015": 5060,
- "Pop2020": 5170,
- "Pop2025": 5180,
- "Pop2050": 5183,
- "Location": [
- 41.38,
- 2.18
- ]
- },
- {
- "City": "Madrid",
- "Country": "Spain",
- "Country_ISO3": "ESP",
- "Pop1950": 1700,
- "Pop1955": 2020,
- "Pop1960": 2390,
- "Pop1965": 2900,
- "Pop1970": 3520,
- "Pop1975": 3890,
- "Pop1980": 4250,
- "Pop1985": 4360,
- "Pop1990": 4410,
- "Pop1995": 4700,
- "Pop2000": 5040,
- "Pop2005": 5410,
- "Pop2010": 5570,
- "Pop2015": 5760,
- "Pop2020": 5920,
- "Pop2025": 5930,
- "Pop2050": 5935,
- "Location": [
- 40.44,
- -3.69
- ]
- },
- {
- "City": "Valencia",
- "Country": "Spain",
- "Country_ISO3": "ESP",
- "Pop1950": 510,
- "Pop1955": 510,
- "Pop1960": 500,
- "Pop1965": 570,
- "Pop1970": 640,
- "Pop1975": 700,
- "Pop1980": 740,
- "Pop1985": 760,
- "Pop1990": 780,
- "Pop1995": 780,
- "Pop2000": 800,
- "Pop2005": 800,
- "Pop2010": 810,
- "Pop2015": 820,
- "Pop2020": 830,
- "Pop2025": 840,
- "Pop2050": 847,
- "Location": [
- 39.47,
- -0.36
- ]
- },
- {
- "City": "Al-Khartum",
- "Country": "Sudan",
- "Country_ISO3": "SDN",
- "Pop1950": 180,
- "Pop1955": 250,
- "Pop1960": 350,
- "Pop1965": 480,
- "Pop1970": 660,
- "Pop1975": 890,
- "Pop1980": 1160,
- "Pop1985": 1610,
- "Pop1990": 2360,
- "Pop1995": 3240,
- "Pop2000": 3950,
- "Pop2005": 4520,
- "Pop2010": 4750,
- "Pop2015": 5180,
- "Pop2020": 6080,
- "Pop2025": 7020,
- "Pop2050": 7937,
- "Location": [
- 15.55,
- 32.52
- ]
- },
- {
- "City": "Stockholm",
- "Country": "Sweden",
- "Country_ISO3": "SWE",
- "Pop1950": 740,
- "Pop1955": 770,
- "Pop1960": 800,
- "Pop1965": 1000,
- "Pop1970": 1040,
- "Pop1975": 1020,
- "Pop1980": 990,
- "Pop1985": 1010,
- "Pop1990": 1040,
- "Pop1995": 1140,
- "Pop2000": 1210,
- "Pop2005": 1250,
- "Pop2010": 1260,
- "Pop2015": 1280,
- "Pop2020": 1310,
- "Pop2025": 1330,
- "Pop2050": 1343,
- "Location": [
- 59.33,
- 17.99
- ]
- },
- {
- "City": "Zürich",
- "Country": "Switzerland",
- "Country_ISO3": "CHE",
- "Pop1950": 490,
- "Pop1955": 510,
- "Pop1960": 540,
- "Pop1965": 610,
- "Pop1970": 710,
- "Pop1975": 710,
- "Pop1980": 710,
- "Pop1985": 840,
- "Pop1990": 1010,
- "Pop1995": 1050,
- "Pop2000": 1080,
- "Pop2005": 1100,
- "Pop2010": 1110,
- "Pop2015": 1120,
- "Pop2020": 1130,
- "Pop2025": 1150,
- "Pop2050": 1172,
- "Location": [
- 47.4,
- 8.53
- ]
- },
- {
- "City": "Baixada Santista",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 250,
- "Pop1955": 310,
- "Pop1960": 400,
- "Pop1965": 500,
- "Pop1970": 620,
- "Pop1975": 770,
- "Pop1980": 950,
- "Pop1985": 1060,
- "Pop1990": 1180,
- "Pop1995": 1320,
- "Pop2000": 1470,
- "Pop2005": 1640,
- "Pop2010": 1710,
- "Pop2015": 1810,
- "Pop2020": 1940,
- "Pop2025": 2030,
- "Pop2050": 2095,
- "Location": [
- -23.95,
- -46.36
- ]
- },
- {
- "City": "Belém",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 240,
- "Pop1955": 300,
- "Pop1960": 380,
- "Pop1965": 480,
- "Pop1970": 600,
- "Pop1975": 710,
- "Pop1980": 830,
- "Pop1985": 970,
- "Pop1990": 1130,
- "Pop1995": 1390,
- "Pop2000": 1750,
- "Pop2005": 2040,
- "Pop2010": 2170,
- "Pop2015": 2340,
- "Pop2020": 2520,
- "Pop2025": 2640,
- "Pop2050": 2717,
- "Location": [
- -1.43,
- -48.49
- ]
- },
- {
- "City": "Belo Horizonte",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 410,
- "Pop1955": 570,
- "Pop1960": 780,
- "Pop1965": 1080,
- "Pop1970": 1480,
- "Pop1975": 1910,
- "Pop1980": 2440,
- "Pop1985": 2950,
- "Pop1990": 3550,
- "Pop1995": 4090,
- "Pop2000": 4660,
- "Pop2005": 5300,
- "Pop2010": 5580,
- "Pop2015": 5940,
- "Pop2020": 6360,
- "Pop2025": 6600,
- "Pop2050": 6748,
- "Location": [
- -19.85,
- -43.9
- ]
- },
- {
- "City": "Brasília",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 40,
- "Pop1955": 70,
- "Pop1960": 140,
- "Pop1965": 270,
- "Pop1970": 520,
- "Pop1975": 830,
- "Pop1980": 1290,
- "Pop1985": 1560,
- "Pop1990": 1860,
- "Pop1995": 2260,
- "Pop2000": 2750,
- "Pop2005": 3340,
- "Pop2010": 3600,
- "Pop2015": 3940,
- "Pop2020": 4280,
- "Pop2025": 4460,
- "Pop2050": 4578,
- "Location": [
- -15.79,
- -47.89
- ]
- },
- {
- "City": "Campinas",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 150,
- "Pop1955": 210,
- "Pop1960": 290,
- "Pop1965": 400,
- "Pop1970": 540,
- "Pop1975": 770,
- "Pop1980": 1110,
- "Pop1985": 1370,
- "Pop1990": 1690,
- "Pop1995": 1980,
- "Pop2000": 2260,
- "Pop2005": 2630,
- "Pop2010": 2790,
- "Pop2015": 3000,
- "Pop2020": 3240,
- "Pop2025": 3380,
- "Pop2050": 3474,
- "Location": [
- -22.9,
- -47.05
- ]
- },
- {
- "City": "Campo Grande",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 30,
- "Pop1955": 40,
- "Pop1960": 60,
- "Pop1965": 90,
- "Pop1970": 130,
- "Pop1975": 190,
- "Pop1980": 280,
- "Pop1985": 370,
- "Pop1990": 490,
- "Pop1995": 570,
- "Pop2000": 650,
- "Pop2005": 740,
- "Pop2010": 780,
- "Pop2015": 830,
- "Pop2020": 900,
- "Pop2025": 940,
- "Pop2050": 978,
- "Location": [
- -20.45,
- -54.61
- ]
- },
- {
- "City": "Cuiabá",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 30,
- "Pop1955": 40,
- "Pop1960": 50,
- "Pop1965": 70,
- "Pop1970": 100,
- "Pop1975": 160,
- "Pop1980": 260,
- "Pop1985": 370,
- "Pop1990": 510,
- "Pop1995": 610,
- "Pop2000": 690,
- "Pop2005": 770,
- "Pop2010": 810,
- "Pop2015": 860,
- "Pop2020": 920,
- "Pop2025": 970,
- "Pop2050": 1008,
- "Location": [
- -15.61,
- -56.09
- ]
- },
- {
- "City": "Curitiba",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 160,
- "Pop1955": 240,
- "Pop1960": 380,
- "Pop1965": 500,
- "Pop1970": 650,
- "Pop1975": 920,
- "Pop1980": 1310,
- "Pop1985": 1550,
- "Pop1990": 1830,
- "Pop1995": 2140,
- "Pop2000": 2490,
- "Pop2005": 2910,
- "Pop2010": 3080,
- "Pop2015": 3320,
- "Pop2020": 3580,
- "Pop2025": 3740,
- "Pop2050": 3836,
- "Location": [
- -25.43,
- -49.28
- ]
- },
- {
- "City": "Florianópolis",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 70,
- "Pop1955": 80,
- "Pop1960": 100,
- "Pop1965": 120,
- "Pop1970": 150,
- "Pop1975": 220,
- "Pop1980": 330,
- "Pop1985": 410,
- "Pop1990": 500,
- "Pop1995": 610,
- "Pop2000": 730,
- "Pop2005": 930,
- "Pop2010": 1020,
- "Pop2015": 1140,
- "Pop2020": 1260,
- "Pop2025": 1330,
- "Pop2050": 1374,
- "Location": [
- -27.57,
- -48.61
- ]
- },
- {
- "City": "Fortaleza",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 260,
- "Pop1955": 360,
- "Pop1960": 500,
- "Pop1965": 660,
- "Pop1970": 870,
- "Pop1975": 1140,
- "Pop1980": 1490,
- "Pop1985": 1820,
- "Pop1990": 2230,
- "Pop1995": 2550,
- "Pop2000": 2880,
- "Pop2005": 3240,
- "Pop2010": 3390,
- "Pop2015": 3600,
- "Pop2020": 3850,
- "Pop2025": 4010,
- "Pop2050": 4117,
- "Location": [
- -3.78,
- -38.58
- ]
- },
- {
- "City": "Goiânia",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 50,
- "Pop1955": 90,
- "Pop1960": 150,
- "Pop1965": 240,
- "Pop1970": 380,
- "Pop1975": 530,
- "Pop1980": 740,
- "Pop1985": 920,
- "Pop1990": 1130,
- "Pop1995": 1360,
- "Pop2000": 1610,
- "Pop2005": 1900,
- "Pop2010": 2020,
- "Pop2015": 2190,
- "Pop2020": 2370,
- "Pop2025": 2480,
- "Pop2050": 2556,
- "Location": [
- -16.72,
- -49.25
- ]
- },
- {
- "City": "Grande São Luís",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 120,
- "Pop1955": 140,
- "Pop1960": 160,
- "Pop1965": 200,
- "Pop1970": 260,
- "Pop1975": 340,
- "Pop1980": 440,
- "Pop1985": 550,
- "Pop1990": 670,
- "Pop1995": 780,
- "Pop2000": 880,
- "Pop2005": 990,
- "Pop2010": 1040,
- "Pop2015": 1110,
- "Pop2020": 1190,
- "Pop2025": 1250,
- "Pop2050": 1296,
- "Location": [
- -2.51,
- -44.3
- ]
- },
- {
- "City": "Grande Vitória",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 80,
- "Pop1955": 120,
- "Pop1960": 170,
- "Pop1965": 240,
- "Pop1970": 340,
- "Pop1975": 490,
- "Pop1980": 720,
- "Pop1985": 870,
- "Pop1990": 1050,
- "Pop1995": 1220,
- "Pop2000": 1400,
- "Pop2005": 1610,
- "Pop2010": 1700,
- "Pop2015": 1830,
- "Pop2020": 1980,
- "Pop2025": 2070,
- "Pop2050": 2132,
- "Location": [
- -20.3,
- -40.35
- ]
- },
- {
- "City": "João Pessoa",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 120,
- "Pop1955": 150,
- "Pop1960": 180,
- "Pop1965": 230,
- "Pop1970": 290,
- "Pop1975": 360,
- "Pop1980": 450,
- "Pop1985": 540,
- "Pop1990": 650,
- "Pop1995": 740,
- "Pop2000": 830,
- "Pop2005": 920,
- "Pop2010": 960,
- "Pop2015": 1010,
- "Pop2020": 1090,
- "Pop2025": 1140,
- "Pop2050": 1183,
- "Location": [
- -7.12,
- -34.86
- ]
- },
- {
- "City": "Maceió",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 120,
- "Pop1955": 150,
- "Pop1960": 180,
- "Pop1965": 220,
- "Pop1970": 280,
- "Pop1975": 340,
- "Pop1980": 420,
- "Pop1985": 530,
- "Pop1990": 660,
- "Pop1995": 800,
- "Pop2000": 950,
- "Pop2005": 1120,
- "Pop2010": 1190,
- "Pop2015": 1280,
- "Pop2020": 1390,
- "Pop2025": 1460,
- "Pop2050": 1510,
- "Location": [
- -9.67,
- -35.74
- ]
- },
- {
- "City": "Manaus",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 90,
- "Pop1955": 120,
- "Pop1960": 150,
- "Pop1965": 210,
- "Pop1970": 280,
- "Pop1975": 410,
- "Pop1980": 600,
- "Pop1985": 760,
- "Pop1990": 960,
- "Pop1995": 1160,
- "Pop2000": 1390,
- "Pop2005": 1640,
- "Pop2010": 1750,
- "Pop2015": 1900,
- "Pop2020": 2060,
- "Pop2025": 2160,
- "Pop2050": 2223,
- "Location": [
- -3.12,
- -60.01
- ]
- },
- {
- "City": "Natal",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 110,
- "Pop1955": 140,
- "Pop1960": 180,
- "Pop1965": 220,
- "Pop1970": 290,
- "Pop1975": 370,
- "Pop1980": 470,
- "Pop1985": 570,
- "Pop1990": 690,
- "Pop1995": 800,
- "Pop2000": 910,
- "Pop2005": 1040,
- "Pop2010": 1090,
- "Pop2015": 1160,
- "Pop2020": 1250,
- "Pop2025": 1320,
- "Pop2050": 1362,
- "Location": [
- -5.8,
- -35.21
- ]
- },
- {
- "City": "Norte/Nordeste Catarinense",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 60,
- "Pop1955": 90,
- "Pop1960": 120,
- "Pop1965": 150,
- "Pop1970": 200,
- "Pop1975": 280,
- "Pop1980": 380,
- "Pop1985": 480,
- "Pop1990": 600,
- "Pop1995": 710,
- "Pop2000": 820,
- "Pop2005": 940,
- "Pop2010": 990,
- "Pop2015": 1060,
- "Pop2020": 1150,
- "Pop2025": 1200,
- "Pop2050": 1247,
- "Location": [
- -26.32,
- -48.84
- ]
- },
- {
- "City": "Pôrto Alegre",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 490,
- "Pop1955": 660,
- "Pop1960": 880,
- "Pop1965": 1110,
- "Pop1970": 1400,
- "Pop1975": 1730,
- "Pop1980": 2130,
- "Pop1985": 2500,
- "Pop1990": 2930,
- "Pop1995": 3240,
- "Pop2000": 3500,
- "Pop2005": 3800,
- "Pop2010": 3920,
- "Pop2015": 4100,
- "Pop2020": 4340,
- "Pop2025": 4520,
- "Pop2050": 4633,
- "Location": [
- -30.04,
- -51.2
- ]
- },
- {
- "City": "Recife",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 660,
- "Pop1955": 840,
- "Pop1960": 1070,
- "Pop1965": 1330,
- "Pop1970": 1640,
- "Pop1975": 1870,
- "Pop1980": 2120,
- "Pop1985": 2390,
- "Pop1990": 2690,
- "Pop1995": 2960,
- "Pop2000": 3230,
- "Pop2005": 3530,
- "Pop2010": 3650,
- "Pop2015": 3830,
- "Pop2020": 4070,
- "Pop2025": 4240,
- "Pop2050": 4347,
- "Location": [
- -8.08,
- -34.91
- ]
- },
- {
- "City": "Rio de Janeiro",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 2950,
- "Pop1955": 3590,
- "Pop1960": 4370,
- "Pop1965": 5390,
- "Pop1970": 6640,
- "Pop1975": 7560,
- "Pop1980": 8580,
- "Pop1985": 9090,
- "Pop1990": 9600,
- "Pop1995": 10170,
- "Pop2000": 10800,
- "Pop2005": 11470,
- "Pop2010": 11750,
- "Pop2015": 12170,
- "Pop2020": 12780,
- "Pop2025": 13180,
- "Pop2050": 13413,
- "Location": [
- -22.72,
- -43.45
- ]
- },
- {
- "City": "Salvador",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 400,
- "Pop1955": 520,
- "Pop1960": 670,
- "Pop1965": 850,
- "Pop1970": 1070,
- "Pop1975": 1340,
- "Pop1980": 1680,
- "Pop1985": 1980,
- "Pop1990": 2330,
- "Pop1995": 2640,
- "Pop2000": 2970,
- "Pop2005": 3330,
- "Pop2010": 3480,
- "Pop2015": 3700,
- "Pop2020": 3950,
- "Pop2025": 4110,
- "Pop2050": 4222,
- "Location": [
- -12.99,
- -38.48
- ]
- },
- {
- "City": "São Paulo",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 2330,
- "Pop1955": 3040,
- "Pop1960": 3970,
- "Pop1965": 5490,
- "Pop1970": 7620,
- "Pop1975": 9610,
- "Pop1980": 12090,
- "Pop1985": 13400,
- "Pop1990": 14780,
- "Pop1995": 15950,
- "Pop2000": 17100,
- "Pop2005": 18330,
- "Pop2010": 18840,
- "Pop2015": 19580,
- "Pop2020": 20540,
- "Pop2025": 21120,
- "Pop2050": 21428,
- "Location": [
- -23.58,
- -46.62
- ]
- },
- {
- "City": "Teresina",
- "Country": "Brazil",
- "Country_ISO3": "BRA",
- "Pop1950": 50,
- "Pop1955": 80,
- "Pop1960": 100,
- "Pop1965": 140,
- "Pop1970": 200,
- "Pop1975": 280,
- "Pop1980": 390,
- "Pop1985": 490,
- "Pop1990": 610,
- "Pop1995": 710,
- "Pop2000": 790,
- "Pop2005": 870,
- "Pop2010": 910,
- "Pop2015": 960,
- "Pop2020": 1030,
- "Pop2025": 1080,
- "Pop2050": 1121,
- "Location": [
- -5.1,
- -42.8
- ]
- },
- {
- "City": "Dimashq",
- "Country": "Syrian Arab Republic",
- "Country_ISO3": "SYR",
- "Pop1950": 370,
- "Pop1955": 460,
- "Pop1960": 580,
- "Pop1965": 730,
- "Pop1970": 910,
- "Pop1975": 1120,
- "Pop1980": 1380,
- "Pop1985": 1550,
- "Pop1990": 1690,
- "Pop1995": 1850,
- "Pop2000": 2040,
- "Pop2005": 2330,
- "Pop2010": 2470,
- "Pop2015": 2680,
- "Pop2020": 2980,
- "Pop2025": 3290,
- "Pop2050": 3605,
- "Location": [
- 33.49,
- 36.29
- ]
- },
- {
- "City": "Halab",
- "Country": "Syrian Arab Republic",
- "Country_ISO3": "SYR",
- "Pop1950": 320,
- "Pop1955": 390,
- "Pop1960": 480,
- "Pop1965": 590,
- "Pop1970": 720,
- "Pop1975": 880,
- "Pop1980": 1070,
- "Pop1985": 1290,
- "Pop1990": 1550,
- "Pop1995": 1870,
- "Pop2000": 2220,
- "Pop2005": 2580,
- "Pop2010": 2740,
- "Pop2015": 2970,
- "Pop2020": 3310,
- "Pop2025": 3650,
- "Pop2050": 3993,
- "Location": [
- 36.21,
- 37.15
- ]
- },
- {
- "City": "Hims",
- "Country": "Syrian Arab Republic",
- "Country_ISO3": "SYR",
- "Pop1950": 100,
- "Pop1955": 130,
- "Pop1960": 160,
- "Pop1965": 200,
- "Pop1970": 250,
- "Pop1975": 310,
- "Pop1980": 390,
- "Pop1985": 470,
- "Pop1990": 560,
- "Pop1995": 680,
- "Pop2000": 810,
- "Pop2005": 950,
- "Pop2010": 1000,
- "Pop2015": 1100,
- "Pop2020": 1230,
- "Pop2025": 1360,
- "Pop2050": 1504,
- "Location": [
- 34.73,
- 36.71
- ]
- },
- {
- "City": "Krung Thep",
- "Country": "Thailand",
- "Country_ISO3": "THA",
- "Pop1950": 1360,
- "Pop1955": 1710,
- "Pop1960": 2150,
- "Pop1965": 2580,
- "Pop1970": 3110,
- "Pop1975": 3840,
- "Pop1980": 4720,
- "Pop1985": 5280,
- "Pop1990": 5890,
- "Pop1995": 6110,
- "Pop2000": 6330,
- "Pop2005": 6580,
- "Pop2010": 6700,
- "Pop2015": 6920,
- "Pop2020": 7330,
- "Pop2025": 7810,
- "Pop2050": 8332,
- "Location": [
- 13.75,
- 100.51
- ]
- },
- {
- "City": "Lomé",
- "Country": "Togo",
- "Country_ISO3": "TGO",
- "Pop1950": 30,
- "Pop1955": 60,
- "Pop1960": 100,
- "Pop1965": 140,
- "Pop1970": 190,
- "Pop1975": 260,
- "Pop1980": 340,
- "Pop1985": 470,
- "Pop1990": 620,
- "Pop1995": 800,
- "Pop2000": 1020,
- "Pop2005": 1320,
- "Pop2010": 1450,
- "Pop2015": 1670,
- "Pop2020": 2040,
- "Pop2025": 2410,
- "Pop2050": 2791,
- "Location": [
- 6.1,
- 1.2
- ]
- },
- {
- "City": "Dubayy",
- "Country": "United Arab Emirates",
- "Country_ISO3": "ARE",
- "Pop1950": 20,
- "Pop1955": 30,
- "Pop1960": 40,
- "Pop1965": 50,
- "Pop1970": 80,
- "Pop1975": 170,
- "Pop1980": 250,
- "Pop1985": 340,
- "Pop1990": 470,
- "Pop1995": 650,
- "Pop2000": 940,
- "Pop2005": 1270,
- "Pop2010": 1380,
- "Pop2015": 1520,
- "Pop2020": 1710,
- "Pop2025": 1890,
- "Pop2050": 2077,
- "Location": [
- 25.27,
- 55.32
- ]
- },
- {
- "City": "Adana",
- "Country": "Turkey",
- "Country_ISO3": "TUR",
- "Pop1950": 140,
- "Pop1955": 200,
- "Pop1960": 270,
- "Pop1965": 340,
- "Pop1970": 400,
- "Pop1975": 470,
- "Pop1980": 570,
- "Pop1985": 760,
- "Pop1990": 910,
- "Pop1995": 1010,
- "Pop2000": 1120,
- "Pop2005": 1240,
- "Pop2010": 1290,
- "Pop2015": 1360,
- "Pop2020": 1470,
- "Pop2025": 1560,
- "Pop2050": 1635,
- "Location": [
- 37,
- 35.32
- ]
- },
- {
- "City": "Ankara",
- "Country": "Turkey",
- "Country_ISO3": "TUR",
- "Pop1950": 280,
- "Pop1955": 440,
- "Pop1960": 640,
- "Pop1965": 950,
- "Pop1970": 1340,
- "Pop1975": 1710,
- "Pop1980": 1890,
- "Pop1985": 2210,
- "Pop1990": 2560,
- "Pop1995": 2840,
- "Pop2000": 3180,
- "Pop2005": 3570,
- "Pop2010": 3720,
- "Pop2015": 3910,
- "Pop2020": 4180,
- "Pop2025": 4400,
- "Pop2050": 4589,
- "Location": [
- 39.92,
- 32.85
- ]
- },
- {
- "City": "Antalya",
- "Country": "Turkey",
- "Country_ISO3": "TUR",
- "Pop1950": 30,
- "Pop1955": 40,
- "Pop1960": 50,
- "Pop1965": 70,
- "Pop1970": 100,
- "Pop1975": 130,
- "Pop1980": 180,
- "Pop1985": 260,
- "Pop1990": 370,
- "Pop1995": 470,
- "Pop2000": 600,
- "Pop2005": 740,
- "Pop2010": 780,
- "Pop2015": 840,
- "Pop2020": 910,
- "Pop2025": 970,
- "Pop2050": 1021,
- "Location": [
- 36.89,
- 30.7
- ]
- },
- {
- "City": "Bursa",
- "Country": "Turkey",
- "Country_ISO3": "TUR",
- "Pop1950": 150,
- "Pop1955": 180,
- "Pop1960": 220,
- "Pop1965": 300,
- "Pop1970": 320,
- "Pop1975": 340,
- "Pop1980": 480,
- "Pop1985": 600,
- "Pop1990": 820,
- "Pop1995": 980,
- "Pop2000": 1180,
- "Pop2005": 1410,
- "Pop2010": 1490,
- "Pop2015": 1590,
- "Pop2020": 1710,
- "Pop2025": 1820,
- "Pop2050": 1906,
- "Location": [
- 40.19,
- 29.07
- ]
- },
- {
- "City": "Gaziantep",
- "Country": "Turkey",
- "Country_ISO3": "TUR",
- "Pop1950": 100,
- "Pop1955": 140,
- "Pop1960": 180,
- "Pop1965": 230,
- "Pop1970": 260,
- "Pop1975": 300,
- "Pop1980": 370,
- "Pop1985": 470,
- "Pop1990": 600,
- "Pop1995": 710,
- "Pop2000": 840,
- "Pop2005": 990,
- "Pop2010": 1040,
- "Pop2015": 1110,
- "Pop2020": 1200,
- "Pop2025": 1270,
- "Pop2050": 1340,
- "Location": [
- 37.04,
- 37.3
- ]
- },
- {
- "City": "Istanbul",
- "Country": "Turkey",
- "Country_ISO3": "TUR",
- "Pop1950": 970,
- "Pop1955": 1250,
- "Pop1960": 1450,
- "Pop1965": 2000,
- "Pop1970": 2770,
- "Pop1975": 3600,
- "Pop1980": 4400,
- "Pop1985": 5410,
- "Pop1990": 6550,
- "Pop1995": 7660,
- "Pop2000": 8740,
- "Pop2005": 9710,
- "Pop2010": 10060,
- "Pop2015": 10530,
- "Pop2020": 11180,
- "Pop2025": 11700,
- "Pop2050": 12102,
- "Location": [
- 41.06,
- 29
- ]
- },
- {
- "City": "Izmir",
- "Country": "Turkey",
- "Country_ISO3": "TUR",
- "Pop1950": 220,
- "Pop1955": 290,
- "Pop1960": 360,
- "Pop1965": 560,
- "Pop1970": 880,
- "Pop1975": 1050,
- "Pop1980": 1220,
- "Pop1985": 1470,
- "Pop1990": 1740,
- "Pop1995": 1970,
- "Pop2000": 2220,
- "Pop2005": 2490,
- "Pop2010": 2590,
- "Pop2015": 2720,
- "Pop2020": 2920,
- "Pop2025": 3080,
- "Pop2050": 3223,
- "Location": [
- 38.43,
- 27.14
- ]
- },
- {
- "City": "Konya",
- "Country": "Turkey",
- "Country_ISO3": "TUR",
- "Pop1950": 100,
- "Pop1955": 140,
- "Pop1960": 180,
- "Pop1965": 240,
- "Pop1970": 240,
- "Pop1975": 250,
- "Pop1980": 340,
- "Pop1985": 430,
- "Pop1990": 510,
- "Pop1995": 610,
- "Pop2000": 730,
- "Pop2005": 870,
- "Pop2010": 920,
- "Pop2015": 980,
- "Pop2020": 1060,
- "Pop2025": 1130,
- "Pop2050": 1185,
- "Location": [
- 37.87,
- 32.48
- ]
- },
- {
- "City": "Kampala",
- "Country": "Uganda",
- "Country_ISO3": "UGA",
- "Pop1950": 100,
- "Pop1955": 110,
- "Pop1960": 140,
- "Pop1965": 220,
- "Pop1970": 340,
- "Pop1975": 400,
- "Pop1980": 470,
- "Pop1985": 600,
- "Pop1990": 760,
- "Pop1995": 910,
- "Pop2000": 1100,
- "Pop2005": 1320,
- "Pop2010": 1420,
- "Pop2015": 1600,
- "Pop2020": 1980,
- "Pop2025": 2510,
- "Pop2050": 3198,
- "Location": [
- 0.32,
- 32.57
- ]
- },
- {
- "City": "Dnipropetrovs'k",
- "Country": "Ukraine",
- "Country_ISO3": "UKR",
- "Pop1950": 540,
- "Pop1955": 610,
- "Pop1960": 680,
- "Pop1965": 770,
- "Pop1970": 870,
- "Pop1975": 980,
- "Pop1980": 1080,
- "Pop1985": 1140,
- "Pop1990": 1160,
- "Pop1995": 1120,
- "Pop2000": 1080,
- "Pop2005": 1060,
- "Pop2010": 1050,
- "Pop2015": 1040,
- "Pop2020": 1040,
- "Pop2025": 1040,
- "Pop2050": 1042,
- "Location": [
- 48.42,
- 35.13
- ]
- },
- {
- "City": "Donets'k",
- "Country": "Ukraine",
- "Country_ISO3": "UKR",
- "Pop1950": 580,
- "Pop1955": 650,
- "Pop1960": 720,
- "Pop1965": 800,
- "Pop1970": 890,
- "Pop1975": 960,
- "Pop1980": 1030,
- "Pop1985": 1080,
- "Pop1990": 1100,
- "Pop1995": 1060,
- "Pop2000": 1030,
- "Pop2005": 1000,
- "Pop2010": 990,
- "Pop2015": 980,
- "Pop2020": 970,
- "Pop2025": 970,
- "Pop2050": 972,
- "Location": [
- 48.04,
- 37.73
- ]
- },
- {
- "City": "Kharkiv",
- "Country": "Ukraine",
- "Country_ISO3": "UKR",
- "Pop1950": 760,
- "Pop1955": 860,
- "Pop1960": 970,
- "Pop1965": 1090,
- "Pop1970": 1230,
- "Pop1975": 1350,
- "Pop1980": 1470,
- "Pop1985": 1540,
- "Pop1990": 1590,
- "Pop1995": 1530,
- "Pop2000": 1480,
- "Pop2005": 1460,
- "Pop2010": 1460,
- "Pop2015": 1460,
- "Pop2020": 1460,
- "Pop2025": 1460,
- "Pop2050": 1455,
- "Location": [
- 49.98,
- 36.2
- ]
- },
- {
- "City": "Kyiv",
- "Country": "Ukraine",
- "Country_ISO3": "UKR",
- "Pop1950": 820,
- "Pop1955": 970,
- "Pop1960": 1160,
- "Pop1965": 1390,
- "Pop1970": 1660,
- "Pop1975": 1930,
- "Pop1980": 2200,
- "Pop1985": 2410,
- "Pop1990": 2570,
- "Pop1995": 2590,
- "Pop2000": 2610,
- "Pop2005": 2670,
- "Pop2010": 2710,
- "Pop2015": 2750,
- "Pop2020": 2770,
- "Pop2025": 2770,
- "Pop2050": 2772,
- "Location": [
- 50.44,
- 30.5
- ]
- },
- {
- "City": "Odesa",
- "Country": "Ukraine",
- "Country_ISO3": "UKR",
- "Pop1950": 530,
- "Pop1955": 610,
- "Pop1960": 690,
- "Pop1965": 790,
- "Pop1970": 900,
- "Pop1975": 980,
- "Pop1980": 1050,
- "Pop1985": 1080,
- "Pop1990": 1090,
- "Pop1995": 1060,
- "Pop2000": 1040,
- "Pop2005": 1000,
- "Pop2010": 990,
- "Pop2015": 980,
- "Pop2020": 970,
- "Pop2025": 970,
- "Pop2050": 970,
- "Location": [
- 46.46,
- 30.73
- ]
- },
- {
- "City": "Zaporizhzhya",
- "Country": "Ukraine",
- "Country_ISO3": "UKR",
- "Pop1950": 320,
- "Pop1955": 380,
- "Pop1960": 460,
- "Pop1965": 550,
- "Pop1970": 660,
- "Pop1975": 730,
- "Pop1980": 800,
- "Pop1985": 840,
- "Pop1990": 870,
- "Pop1995": 850,
- "Pop2000": 820,
- "Pop2005": 800,
- "Pop2010": 790,
- "Pop2015": 780,
- "Pop2020": 770,
- "Pop2025": 770,
- "Pop2050": 772,
- "Location": [
- 47.85,
- 35.15
- ]
- },
- {
- "City": "Al-Iskandariyah",
- "Country": "Egypt",
- "Country_ISO3": "EGY",
- "Pop1950": 1040,
- "Pop1955": 1250,
- "Pop1960": 1500,
- "Pop1965": 1750,
- "Pop1970": 1990,
- "Pop1975": 2240,
- "Pop1980": 2520,
- "Pop1985": 2830,
- "Pop1990": 3060,
- "Pop1995": 3280,
- "Pop2000": 3600,
- "Pop2005": 4000,
- "Pop2010": 4160,
- "Pop2015": 4420,
- "Pop2020": 4820,
- "Pop2025": 5210,
- "Pop2050": 5652,
- "Location": [
- 31.2,
- 29.9
- ]
- },
- {
- "City": "Al-Qahirah",
- "Country": "Egypt",
- "Country_ISO3": "EGY",
- "Pop1950": 2490,
- "Pop1955": 3030,
- "Pop1960": 3680,
- "Pop1965": 4740,
- "Pop1970": 5580,
- "Pop1975": 6450,
- "Pop1980": 7350,
- "Pop1985": 8330,
- "Pop1990": 9060,
- "Pop1995": 9710,
- "Pop2000": 10530,
- "Pop2005": 11490,
- "Pop2010": 11890,
- "Pop2015": 12500,
- "Pop2020": 13460,
- "Pop2025": 14450,
- "Pop2050": 15561,
- "Location": [
- 30.07,
- 31.25
- ]
- },
- {
- "City": "Birmingham",
- "Country": "United Kingdom",
- "Country_ISO3": "GBR",
- "Pop1950": 2230,
- "Pop1955": 2280,
- "Pop1960": 2340,
- "Pop1965": 2360,
- "Pop1970": 2370,
- "Pop1975": 2360,
- "Pop1980": 2360,
- "Pop1985": 2330,
- "Pop1990": 2300,
- "Pop1995": 2290,
- "Pop2000": 2280,
- "Pop2005": 2280,
- "Pop2010": 2280,
- "Pop2015": 2290,
- "Pop2020": 2300,
- "Pop2025": 2320,
- "Pop2050": 2323,
- "Location": [
- 52.49,
- -1.86
- ]
- },
- {
- "City": "Glasgow",
- "Country": "United Kingdom",
- "Country_ISO3": "GBR",
- "Pop1950": 1760,
- "Pop1955": 1780,
- "Pop1960": 1800,
- "Pop1965": 1770,
- "Pop1970": 1730,
- "Pop1975": 1600,
- "Pop1980": 1460,
- "Pop1985": 1330,
- "Pop1990": 1220,
- "Pop1995": 1190,
- "Pop2000": 1170,
- "Pop2005": 1160,
- "Pop2010": 1160,
- "Pop2015": 1160,
- "Pop2020": 1180,
- "Pop2025": 1190,
- "Pop2050": 1197,
- "Location": [
- 55.86,
- -4.26
- ]
- },
- {
- "City": "Liverpool",
- "Country": "United Kingdom",
- "Country_ISO3": "GBR",
- "Pop1950": 1380,
- "Pop1955": 1380,
- "Pop1960": 1380,
- "Pop1965": 1330,
- "Pop1970": 1280,
- "Pop1975": 1020,
- "Pop1980": 780,
- "Pop1985": 790,
- "Pop1990": 830,
- "Pop1995": 830,
- "Pop2000": 820,
- "Pop2005": 810,
- "Pop2010": 810,
- "Pop2015": 820,
- "Pop2020": 820,
- "Pop2025": 840,
- "Pop2050": 845,
- "Location": [
- 53.42,
- -2.97
- ]
- },
- {
- "City": "London",
- "Country": "United Kingdom",
- "Country_ISO3": "GBR",
- "Pop1950": 8360,
- "Pop1955": 8280,
- "Pop1960": 8200,
- "Pop1965": 7870,
- "Pop1970": 7510,
- "Pop1975": 7550,
- "Pop1980": 7660,
- "Pop1985": 7670,
- "Pop1990": 7650,
- "Pop1995": 7910,
- "Pop2000": 8220,
- "Pop2005": 8500,
- "Pop2010": 8570,
- "Pop2015": 8610,
- "Pop2020": 8620,
- "Pop2025": 8620,
- "Pop2050": 8618,
- "Location": [
- 51.48,
- -0.17
- ]
- },
- {
- "City": "Manchester",
- "Country": "United Kingdom",
- "Country_ISO3": "GBR",
- "Pop1950": 2420,
- "Pop1955": 2420,
- "Pop1960": 2430,
- "Pop1965": 2410,
- "Pop1970": 2400,
- "Pop1975": 2370,
- "Pop1980": 2340,
- "Pop1985": 2310,
- "Pop1990": 2280,
- "Pop1995": 2260,
- "Pop2000": 2240,
- "Pop2005": 2230,
- "Pop2010": 2230,
- "Pop2015": 2240,
- "Pop2020": 2250,
- "Pop2025": 2260,
- "Pop2050": 2267,
- "Location": [
- 53.47,
- -2.26
- ]
- },
- {
- "City": "Newcastle upon Tyne",
- "Country": "United Kingdom",
- "Country_ISO3": "GBR",
- "Pop1950": 910,
- "Pop1955": 920,
- "Pop1960": 930,
- "Pop1965": 910,
- "Pop1970": 890,
- "Pop1975": 840,
- "Pop1980": 790,
- "Pop1985": 820,
- "Pop1990": 880,
- "Pop1995": 880,
- "Pop2000": 880,
- "Pop2005": 880,
- "Pop2010": 880,
- "Pop2015": 890,
- "Pop2020": 900,
- "Pop2025": 910,
- "Pop2050": 918,
- "Location": [
- 54.96,
- -1.6
- ]
- },
- {
- "City": "West Yorkshire",
- "Country": "United Kingdom",
- "Country_ISO3": "GBR",
- "Pop1950": 1690,
- "Pop1955": 1700,
- "Pop1960": 1700,
- "Pop1965": 1710,
- "Pop1970": 1730,
- "Pop1975": 1620,
- "Pop1980": 1500,
- "Pop1985": 1460,
- "Pop1990": 1450,
- "Pop1995": 1470,
- "Pop2000": 1500,
- "Pop2005": 1520,
- "Pop2010": 1530,
- "Pop2015": 1540,
- "Pop2020": 1550,
- "Pop2025": 1560,
- "Pop2050": 1575,
- "Location": [
- 53.79,
- -1.54
- ]
- },
- {
- "City": "Dar es Salaam",
- "Country": "United Republic of Tanzania",
- "Country_ISO3": "TZA",
- "Pop1950": 70,
- "Pop1955": 110,
- "Pop1960": 160,
- "Pop1965": 230,
- "Pop1970": 360,
- "Pop1975": 570,
- "Pop1980": 840,
- "Pop1985": 1050,
- "Pop1990": 1320,
- "Pop1995": 1670,
- "Pop2000": 2120,
- "Pop2005": 2680,
- "Pop2010": 2930,
- "Pop2015": 3320,
- "Pop2020": 4020,
- "Pop2025": 4800,
- "Pop2050": 5688,
- "Location": [
- -6.81,
- 39.25
- ]
- },
- {
- "City": "Atlanta",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 510,
- "Pop1955": 630,
- "Pop1960": 780,
- "Pop1965": 960,
- "Pop1970": 1180,
- "Pop1975": 1390,
- "Pop1980": 1620,
- "Pop1985": 1880,
- "Pop1990": 2180,
- "Pop1995": 2780,
- "Pop2000": 3540,
- "Pop2005": 4310,
- "Pop2010": 4510,
- "Pop2015": 4700,
- "Pop2020": 4890,
- "Pop2025": 5040,
- "Pop2050": 5151,
- "Location": [
- 33.79,
- -84.34
- ]
- },
- {
- "City": "Austin",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 140,
- "Pop1955": 160,
- "Pop1960": 190,
- "Pop1965": 220,
- "Pop1970": 270,
- "Pop1975": 320,
- "Pop1980": 380,
- "Pop1985": 470,
- "Pop1990": 570,
- "Pop1995": 720,
- "Pop2000": 910,
- "Pop2005": 1110,
- "Pop2010": 1160,
- "Pop2015": 1220,
- "Pop2020": 1280,
- "Pop2025": 1330,
- "Pop2050": 1372,
- "Location": [
- 30.27,
- -97.73
- ]
- },
- {
- "City": "Baltimore",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 1170,
- "Pop1955": 1290,
- "Pop1960": 1420,
- "Pop1965": 1490,
- "Pop1970": 1560,
- "Pop1975": 1650,
- "Pop1980": 1750,
- "Pop1985": 1800,
- "Pop1990": 1850,
- "Pop1995": 1960,
- "Pop2000": 2080,
- "Pop2005": 2210,
- "Pop2010": 2260,
- "Pop2015": 2320,
- "Pop2020": 2420,
- "Pop2025": 2510,
- "Pop2050": 2578,
- "Location": [
- 39.32,
- -76.61
- ]
- },
- {
- "City": "Boston",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 2550,
- "Pop1955": 2680,
- "Pop1960": 2820,
- "Pop1965": 3000,
- "Pop1970": 3190,
- "Pop1975": 3230,
- "Pop1980": 3280,
- "Pop1985": 3350,
- "Pop1990": 3430,
- "Pop1995": 3730,
- "Pop2000": 4050,
- "Pop2005": 4360,
- "Pop2010": 4470,
- "Pop2015": 4600,
- "Pop2020": 4770,
- "Pop2025": 4920,
- "Pop2050": 5032,
- "Location": [
- 42.37,
- -71.1
- ]
- },
- {
- "City": "Bridgeport-Stamford",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 420,
- "Pop1955": 510,
- "Pop1960": 620,
- "Pop1965": 660,
- "Pop1970": 700,
- "Pop1975": 700,
- "Pop1980": 700,
- "Pop1985": 710,
- "Pop1990": 710,
- "Pop1995": 800,
- "Pop2000": 890,
- "Pop2005": 990,
- "Pop2010": 1020,
- "Pop2015": 1060,
- "Pop2020": 1110,
- "Pop2025": 1150,
- "Pop2050": 1193,
- "Location": [
- 41.18,
- -73.19
- ]
- },
- {
- "City": "Buffalo",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 900,
- "Pop1955": 980,
- "Pop1960": 1060,
- "Pop1965": 1070,
- "Pop1970": 1080,
- "Pop1975": 1040,
- "Pop1980": 1000,
- "Pop1985": 980,
- "Pop1990": 960,
- "Pop1995": 970,
- "Pop2000": 980,
- "Pop2005": 1000,
- "Pop2010": 1020,
- "Pop2015": 1050,
- "Pop2020": 1100,
- "Pop2025": 1140,
- "Pop2050": 1180,
- "Location": [
- 42.89,
- -78.84
- ]
- },
- {
- "City": "Charlotte",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 140,
- "Pop1955": 170,
- "Pop1960": 210,
- "Pop1965": 240,
- "Pop1970": 280,
- "Pop1975": 320,
- "Pop1980": 350,
- "Pop1985": 400,
- "Pop1990": 460,
- "Pop1995": 600,
- "Pop2000": 770,
- "Pop2005": 950,
- "Pop2010": 1000,
- "Pop2015": 1040,
- "Pop2020": 1100,
- "Pop2025": 1140,
- "Pop2050": 1183,
- "Location": [
- 35.2,
- -80.83
- ]
- },
- {
- "City": "Chicago",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 5000,
- "Pop1955": 5560,
- "Pop1960": 6180,
- "Pop1965": 6640,
- "Pop1970": 7110,
- "Pop1975": 7160,
- "Pop1980": 7220,
- "Pop1985": 7280,
- "Pop1990": 7370,
- "Pop1995": 7840,
- "Pop2000": 8330,
- "Pop2005": 8820,
- "Pop2010": 8990,
- "Pop2015": 9210,
- "Pop2020": 9520,
- "Pop2025": 9760,
- "Pop2050": 9932,
- "Location": [
- 41.82,
- -87.64
- ]
- },
- {
- "City": "Cincinnati",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 880,
- "Pop1955": 980,
- "Pop1960": 1090,
- "Pop1965": 1140,
- "Pop1970": 1200,
- "Pop1975": 1220,
- "Pop1980": 1230,
- "Pop1985": 1280,
- "Pop1990": 1340,
- "Pop1995": 1420,
- "Pop2000": 1510,
- "Pop2005": 1600,
- "Pop2010": 1640,
- "Pop2015": 1690,
- "Pop2020": 1760,
- "Pop2025": 1830,
- "Pop2050": 1886,
- "Location": [
- 39.14,
- -84.47
- ]
- },
- {
- "City": "Cleveland",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 1390,
- "Pop1955": 1580,
- "Pop1960": 1790,
- "Pop1965": 1880,
- "Pop1970": 1950,
- "Pop1975": 1850,
- "Pop1980": 1750,
- "Pop1985": 1710,
- "Pop1990": 1680,
- "Pop1995": 1730,
- "Pop2000": 1790,
- "Pop2005": 1860,
- "Pop2010": 1890,
- "Pop2015": 1940,
- "Pop2020": 2030,
- "Pop2025": 2100,
- "Pop2050": 2165,
- "Location": [
- 41.39,
- -81.72
- ]
- },
- {
- "City": "Columbus, Ohio",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 440,
- "Pop1955": 520,
- "Pop1960": 620,
- "Pop1965": 700,
- "Pop1970": 790,
- "Pop1975": 810,
- "Pop1980": 840,
- "Pop1985": 890,
- "Pop1990": 950,
- "Pop1995": 1040,
- "Pop2000": 1140,
- "Pop2005": 1240,
- "Pop2010": 1270,
- "Pop2015": 1310,
- "Pop2020": 1380,
- "Pop2025": 1430,
- "Pop2050": 1477,
- "Location": [
- 40.04,
- -82.99
- ]
- },
- {
- "City": "Dallas-Fort Worth",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 870,
- "Pop1955": 1120,
- "Pop1960": 1450,
- "Pop1965": 1720,
- "Pop1970": 2020,
- "Pop1975": 2230,
- "Pop1980": 2470,
- "Pop1985": 2820,
- "Pop1990": 3220,
- "Pop1995": 3660,
- "Pop2000": 4170,
- "Pop2005": 4660,
- "Pop2010": 4800,
- "Pop2015": 4960,
- "Pop2020": 5150,
- "Pop2025": 5300,
- "Pop2050": 5419,
- "Location": [
- 32.76,
- -96.66
- ]
- },
- {
- "City": "Dayton",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 350,
- "Pop1955": 420,
- "Pop1960": 510,
- "Pop1965": 590,
- "Pop1970": 680,
- "Pop1975": 640,
- "Pop1980": 600,
- "Pop1985": 600,
- "Pop1990": 620,
- "Pop1995": 660,
- "Pop2000": 710,
- "Pop2005": 750,
- "Pop2010": 770,
- "Pop2015": 800,
- "Pop2020": 840,
- "Pop2025": 880,
- "Pop2050": 909,
- "Location": [
- 39.75,
- -84.19
- ]
- },
- {
- "City": "Denver-Aurora",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 500,
- "Pop1955": 640,
- "Pop1960": 810,
- "Pop1965": 920,
- "Pop1970": 1050,
- "Pop1975": 1200,
- "Pop1980": 1360,
- "Pop1985": 1440,
- "Pop1990": 1530,
- "Pop1995": 1750,
- "Pop2000": 2000,
- "Pop2005": 2240,
- "Pop2010": 2310,
- "Pop2015": 2400,
- "Pop2020": 2500,
- "Pop2025": 2590,
- "Pop2050": 2661,
- "Location": [
- 39.57,
- -105.07
- ]
- },
- {
- "City": "Detroit",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 2770,
- "Pop1955": 3140,
- "Pop1960": 3550,
- "Pop1965": 3760,
- "Pop1970": 3970,
- "Pop1975": 3880,
- "Pop1980": 3810,
- "Pop1985": 3750,
- "Pop1990": 3700,
- "Pop1995": 3800,
- "Pop2000": 3910,
- "Pop2005": 4040,
- "Pop2010": 4100,
- "Pop2015": 4200,
- "Pop2020": 4360,
- "Pop2025": 4500,
- "Pop2050": 4606,
- "Location": [
- 42.39,
- -83.07
- ]
- },
- {
- "City": "El Paso",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 140,
- "Pop1955": 200,
- "Pop1960": 280,
- "Pop1965": 310,
- "Pop1970": 340,
- "Pop1975": 390,
- "Pop1980": 460,
- "Pop1985": 510,
- "Pop1990": 570,
- "Pop1995": 620,
- "Pop2000": 680,
- "Pop2005": 730,
- "Pop2010": 750,
- "Pop2015": 780,
- "Pop2020": 820,
- "Pop2025": 860,
- "Pop2050": 886,
- "Location": [
- 31.77,
- -106.45
- ]
- },
- {
- "City": "Hartford",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 420,
- "Pop1955": 450,
- "Pop1960": 480,
- "Pop1965": 570,
- "Pop1970": 670,
- "Pop1975": 700,
- "Pop1980": 730,
- "Pop1985": 760,
- "Pop1990": 780,
- "Pop1995": 820,
- "Pop2000": 850,
- "Pop2005": 890,
- "Pop2010": 910,
- "Pop2015": 940,
- "Pop2020": 990,
- "Pop2025": 1030,
- "Pop2050": 1066,
- "Location": [
- 41.76,
- -72.7
- ]
- },
- {
- "City": "Honolulu",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 250,
- "Pop1955": 300,
- "Pop1960": 350,
- "Pop1965": 400,
- "Pop1970": 440,
- "Pop1975": 510,
- "Pop1980": 580,
- "Pop1985": 610,
- "Pop1990": 640,
- "Pop1995": 680,
- "Pop2000": 720,
- "Pop2005": 770,
- "Pop2010": 790,
- "Pop2015": 810,
- "Pop2020": 850,
- "Pop2025": 890,
- "Pop2050": 923,
- "Location": [
- 21.32,
- -157.86
- ]
- },
- {
- "City": "Houston",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 710,
- "Pop1955": 900,
- "Pop1960": 1150,
- "Pop1965": 1400,
- "Pop1970": 1690,
- "Pop1975": 2030,
- "Pop1980": 2420,
- "Pop1985": 2660,
- "Pop1990": 2920,
- "Pop1995": 3350,
- "Pop2000": 3850,
- "Pop2005": 4320,
- "Pop2010": 4460,
- "Pop2015": 4610,
- "Pop2020": 4790,
- "Pop2025": 4940,
- "Pop2050": 5049,
- "Location": [
- 29.77,
- -95.4
- ]
- },
- {
- "City": "Indianapolis",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 500,
- "Pop1955": 570,
- "Pop1960": 640,
- "Pop1965": 730,
- "Pop1970": 820,
- "Pop1975": 830,
- "Pop1980": 840,
- "Pop1985": 880,
- "Pop1990": 920,
- "Pop1995": 1060,
- "Pop2000": 1230,
- "Pop2005": 1390,
- "Pop2010": 1440,
- "Pop2015": 1490,
- "Pop2020": 1560,
- "Pop2025": 1620,
- "Pop2050": 1673,
- "Location": [
- 39.81,
- -86.13
- ]
- },
- {
- "City": "Jacksonville, Florida",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 250,
- "Pop1955": 300,
- "Pop1960": 380,
- "Pop1965": 450,
- "Pop1970": 530,
- "Pop1975": 560,
- "Pop1980": 600,
- "Pop1985": 670,
- "Pop1990": 740,
- "Pop1995": 810,
- "Pop2000": 890,
- "Pop2005": 960,
- "Pop2010": 990,
- "Pop2015": 1020,
- "Pop2020": 1070,
- "Pop2025": 1120,
- "Pop2050": 1157,
- "Location": [
- 30.33,
- -81.65
- ]
- },
- {
- "City": "Kansas City",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 700,
- "Pop1955": 810,
- "Pop1960": 920,
- "Pop1965": 1000,
- "Pop1970": 1090,
- "Pop1975": 1080,
- "Pop1980": 1080,
- "Pop1985": 1150,
- "Pop1990": 1230,
- "Pop1995": 1300,
- "Pop2000": 1360,
- "Pop2005": 1440,
- "Pop2010": 1470,
- "Pop2015": 1510,
- "Pop2020": 1580,
- "Pop2025": 1640,
- "Pop2050": 1696,
- "Location": [
- 38.99,
- -94.62
- ]
- },
- {
- "City": "Las Vegas",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 40,
- "Pop1955": 60,
- "Pop1960": 90,
- "Pop1965": 150,
- "Pop1970": 240,
- "Pop1975": 320,
- "Pop1980": 440,
- "Pop1985": 560,
- "Pop1990": 710,
- "Pop1995": 970,
- "Pop2000": 1340,
- "Pop2005": 1720,
- "Pop2010": 1820,
- "Pop2015": 1920,
- "Pop2020": 2010,
- "Pop2025": 2080,
- "Pop2050": 2146,
- "Location": [
- 36.17,
- -115.13
- ]
- },
- {
- "City": "Los Angeles-Long Beach-Santa Ana",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 4050,
- "Pop1955": 5150,
- "Pop1960": 6530,
- "Pop1965": 7410,
- "Pop1970": 8380,
- "Pop1975": 8930,
- "Pop1980": 9510,
- "Pop1985": 10180,
- "Pop1990": 10880,
- "Pop1995": 11340,
- "Pop2000": 11810,
- "Pop2005": 12310,
- "Pop2010": 12500,
- "Pop2015": 12770,
- "Pop2020": 13160,
- "Pop2025": 13460,
- "Pop2050": 13672,
- "Location": [
- 34,
- -118.25
- ]
- },
- {
- "City": "Louisville",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 480,
- "Pop1955": 540,
- "Pop1960": 610,
- "Pop1965": 670,
- "Pop1970": 740,
- "Pop1975": 750,
- "Pop1980": 760,
- "Pop1985": 760,
- "Pop1990": 760,
- "Pop1995": 810,
- "Pop2000": 870,
- "Pop2005": 920,
- "Pop2010": 950,
- "Pop2015": 980,
- "Pop2020": 1030,
- "Pop2025": 1070,
- "Pop2050": 1108,
- "Location": [
- 38.25,
- -85.76
- ]
- },
- {
- "City": "Memphis",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 410,
- "Pop1955": 470,
- "Pop1960": 550,
- "Pop1965": 600,
- "Pop1970": 670,
- "Pop1975": 720,
- "Pop1980": 780,
- "Pop1985": 800,
- "Pop1990": 830,
- "Pop1995": 900,
- "Pop2000": 980,
- "Pop2005": 1050,
- "Pop2010": 1080,
- "Pop2015": 1120,
- "Pop2020": 1170,
- "Pop2025": 1220,
- "Pop2050": 1262,
- "Location": [
- 35.11,
- -90
- ]
- },
- {
- "City": "Miami",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 620,
- "Pop1955": 920,
- "Pop1960": 1360,
- "Pop1965": 1710,
- "Pop1970": 2140,
- "Pop1975": 2590,
- "Pop1980": 3120,
- "Pop1985": 3520,
- "Pop1990": 3970,
- "Pop1995": 4430,
- "Pop2000": 4950,
- "Pop2005": 5440,
- "Pop2010": 5580,
- "Pop2015": 5760,
- "Pop2020": 5970,
- "Pop2025": 6140,
- "Pop2050": 6272,
- "Location": [
- 25.83,
- -80.27
- ]
- },
- {
- "City": "Milwaukee",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 840,
- "Pop1955": 980,
- "Pop1960": 1150,
- "Pop1965": 1200,
- "Pop1970": 1250,
- "Pop1975": 1230,
- "Pop1980": 1210,
- "Pop1985": 1220,
- "Pop1990": 1230,
- "Pop1995": 1270,
- "Pop2000": 1310,
- "Pop2005": 1360,
- "Pop2010": 1390,
- "Pop2015": 1430,
- "Pop2020": 1500,
- "Pop2025": 1550,
- "Pop2050": 1602,
- "Location": [
- 43.06,
- -87.99
- ]
- },
- {
- "City": "Minneapolis-St. Paul",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 1000,
- "Pop1955": 1180,
- "Pop1960": 1380,
- "Pop1965": 1540,
- "Pop1970": 1710,
- "Pop1975": 1750,
- "Pop1980": 1790,
- "Pop1985": 1940,
- "Pop1990": 2090,
- "Pop1995": 2240,
- "Pop2000": 2400,
- "Pop2005": 2560,
- "Pop2010": 2620,
- "Pop2015": 2700,
- "Pop2020": 2810,
- "Pop2025": 2900,
- "Pop2050": 2983,
- "Location": [
- 44.92,
- -93.3
- ]
- },
- {
- "City": "Nashville-Davidson",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 260,
- "Pop1955": 300,
- "Pop1960": 350,
- "Pop1965": 400,
- "Pop1970": 450,
- "Pop1975": 480,
- "Pop1980": 520,
- "Pop1985": 550,
- "Pop1990": 580,
- "Pop1995": 660,
- "Pop2000": 760,
- "Pop2005": 850,
- "Pop2010": 880,
- "Pop2015": 910,
- "Pop2020": 960,
- "Pop2025": 1000,
- "Pop2050": 1034,
- "Location": [
- 36.14,
- -86.81
- ]
- },
- {
- "City": "New Orleans",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 660,
- "Pop1955": 750,
- "Pop1960": 850,
- "Pop1965": 900,
- "Pop1970": 960,
- "Pop1975": 1020,
- "Pop1980": 1080,
- "Pop1985": 1060,
- "Pop1990": 1040,
- "Pop1995": 1020,
- "Pop2000": 1010,
- "Pop2005": 1000,
- "Pop2010": 780,
- "Pop2015": 980,
- "Pop2020": 980,
- "Pop2025": 1000,
- "Pop2050": 1037,
- "Location": [
- 29.95,
- -90.09
- ]
- },
- {
- "City": "New York-Newark",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 12340,
- "Pop1955": 13220,
- "Pop1960": 14160,
- "Pop1965": 15180,
- "Pop1970": 16190,
- "Pop1975": 15880,
- "Pop1980": 15600,
- "Pop1985": 15830,
- "Pop1990": 16090,
- "Pop1995": 16940,
- "Pop2000": 17850,
- "Pop2005": 18730,
- "Pop2010": 19040,
- "Pop2015": 19440,
- "Pop2020": 19970,
- "Pop2025": 20370,
- "Pop2050": 20628,
- "Location": [
- 40.7,
- -73.9
- ]
- },
- {
- "City": "Oklahoma City",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 280,
- "Pop1955": 350,
- "Pop1960": 430,
- "Pop1965": 480,
- "Pop1970": 530,
- "Pop1975": 570,
- "Pop1980": 620,
- "Pop1985": 660,
- "Pop1990": 710,
- "Pop1995": 730,
- "Pop2000": 750,
- "Pop2005": 770,
- "Pop2010": 790,
- "Pop2015": 810,
- "Pop2020": 850,
- "Pop2025": 890,
- "Pop2050": 922,
- "Location": [
- 35.48,
- -97.53
- ]
- },
- {
- "City": "Orlando",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 80,
- "Pop1955": 120,
- "Pop1960": 200,
- "Pop1965": 250,
- "Pop1970": 310,
- "Pop1975": 430,
- "Pop1980": 580,
- "Pop1985": 720,
- "Pop1990": 890,
- "Pop1995": 1020,
- "Pop2000": 1160,
- "Pop2005": 1310,
- "Pop2010": 1350,
- "Pop2015": 1400,
- "Pop2020": 1470,
- "Pop2025": 1530,
- "Pop2050": 1574,
- "Location": [
- 28.54,
- -81.37
- ]
- },
- {
- "City": "Philadelphia",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 3130,
- "Pop1955": 3510,
- "Pop1960": 3930,
- "Pop1965": 4160,
- "Pop1970": 4400,
- "Pop1975": 4470,
- "Pop1980": 4540,
- "Pop1985": 4630,
- "Pop1990": 4720,
- "Pop1995": 4940,
- "Pop2000": 5160,
- "Pop2005": 5400,
- "Pop2010": 5490,
- "Pop2015": 5630,
- "Pop2020": 5840,
- "Pop2025": 6000,
- "Pop2050": 6133,
- "Location": [
- 39.92,
- -75.21
- ]
- },
- {
- "City": "Phoenix-Mesa",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 220,
- "Pop1955": 350,
- "Pop1960": 560,
- "Pop1965": 700,
- "Pop1970": 870,
- "Pop1975": 1120,
- "Pop1980": 1420,
- "Pop1985": 1700,
- "Pop1990": 2020,
- "Pop1995": 2440,
- "Pop2000": 2930,
- "Pop2005": 3420,
- "Pop2010": 3550,
- "Pop2015": 3690,
- "Pop2020": 3840,
- "Pop2025": 3960,
- "Pop2050": 4062,
- "Location": [
- 33.5,
- -112.11
- ]
- },
- {
- "City": "Pittsburgh",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 1540,
- "Pop1955": 1670,
- "Pop1960": 1800,
- "Pop1965": 1830,
- "Pop1970": 1840,
- "Pop1975": 1830,
- "Pop1980": 1810,
- "Pop1985": 1740,
- "Pop1990": 1680,
- "Pop1995": 1720,
- "Pop2000": 1760,
- "Pop2005": 1810,
- "Pop2010": 1840,
- "Pop2015": 1890,
- "Pop2020": 1970,
- "Pop2025": 2040,
- "Pop2050": 2105,
- "Location": [
- 40.49,
- -79.99
- ]
- },
- {
- "City": "Portland",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 520,
- "Pop1955": 580,
- "Pop1960": 660,
- "Pop1965": 740,
- "Pop1970": 830,
- "Pop1975": 920,
- "Pop1980": 1030,
- "Pop1985": 1100,
- "Pop1990": 1180,
- "Pop1995": 1370,
- "Pop2000": 1600,
- "Pop2005": 1810,
- "Pop2010": 1880,
- "Pop2015": 1950,
- "Pop2020": 2040,
- "Pop2025": 2110,
- "Pop2050": 2172,
- "Location": [
- 45.44,
- -122.64
- ]
- },
- {
- "City": "Providence",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 700,
- "Pop1955": 740,
- "Pop1960": 790,
- "Pop1965": 860,
- "Pop1970": 940,
- "Pop1975": 960,
- "Pop1980": 990,
- "Pop1985": 1020,
- "Pop1990": 1050,
- "Pop1995": 1110,
- "Pop2000": 1180,
- "Pop2005": 1250,
- "Pop2010": 1280,
- "Pop2015": 1320,
- "Pop2020": 1380,
- "Pop2025": 1440,
- "Pop2050": 1481,
- "Location": [
- 41.81,
- -71.42
- ]
- },
- {
- "City": "Richmond",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 260,
- "Pop1955": 300,
- "Pop1960": 340,
- "Pop1965": 420,
- "Pop1970": 520,
- "Pop1975": 560,
- "Pop1980": 600,
- "Pop1985": 650,
- "Pop1990": 700,
- "Pop1995": 760,
- "Pop2000": 820,
- "Pop2005": 890,
- "Pop2010": 910,
- "Pop2015": 940,
- "Pop2020": 990,
- "Pop2025": 1030,
- "Pop2050": 1069,
- "Location": [
- 37.56,
- -77.47
- ]
- },
- {
- "City": "Riverside-San Bernardino",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 140,
- "Pop1955": 230,
- "Pop1960": 380,
- "Pop1965": 470,
- "Pop1970": 590,
- "Pop1975": 640,
- "Pop1980": 710,
- "Pop1985": 920,
- "Pop1990": 1180,
- "Pop1995": 1340,
- "Pop2000": 1520,
- "Pop2005": 1690,
- "Pop2010": 1740,
- "Pop2015": 1810,
- "Pop2020": 1890,
- "Pop2025": 1960,
- "Pop2050": 2021,
- "Location": [
- 34.12,
- -117.29
- ]
- },
- {
- "City": "Rochester",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 410,
- "Pop1955": 450,
- "Pop1960": 500,
- "Pop1965": 550,
- "Pop1970": 600,
- "Pop1975": 600,
- "Pop1980": 610,
- "Pop1985": 610,
- "Pop1990": 620,
- "Pop1995": 660,
- "Pop2000": 700,
- "Pop2005": 740,
- "Pop2010": 760,
- "Pop2015": 780,
- "Pop2020": 820,
- "Pop2025": 860,
- "Pop2050": 887,
- "Location": [
- 43.21,
- -77.63
- ]
- },
- {
- "City": "Sacramento",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 220,
- "Pop1955": 320,
- "Pop1960": 460,
- "Pop1965": 540,
- "Pop1970": 640,
- "Pop1975": 710,
- "Pop1980": 800,
- "Pop1985": 940,
- "Pop1990": 1100,
- "Pop1995": 1240,
- "Pop2000": 1400,
- "Pop2005": 1560,
- "Pop2010": 1600,
- "Pop2015": 1660,
- "Pop2020": 1740,
- "Pop2025": 1800,
- "Pop2050": 1860,
- "Location": [
- 38.56,
- -121.42
- ]
- },
- {
- "City": "Salt Lake City",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 230,
- "Pop1955": 280,
- "Pop1960": 350,
- "Pop1965": 410,
- "Pop1970": 480,
- "Pop1975": 570,
- "Pop1980": 680,
- "Pop1985": 730,
- "Pop1990": 790,
- "Pop1995": 840,
- "Pop2000": 890,
- "Pop2005": 940,
- "Pop2010": 970,
- "Pop2015": 1000,
- "Pop2020": 1050,
- "Pop2025": 1090,
- "Pop2050": 1128,
- "Location": [
- 40.69,
- -111.89
- ]
- },
- {
- "City": "San Antonio",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 450,
- "Pop1955": 540,
- "Pop1960": 640,
- "Pop1965": 710,
- "Pop1970": 780,
- "Pop1975": 860,
- "Pop1980": 950,
- "Pop1985": 1040,
- "Pop1990": 1130,
- "Pop1995": 1230,
- "Pop2000": 1330,
- "Pop2005": 1440,
- "Pop2010": 1470,
- "Pop2015": 1520,
- "Pop2020": 1590,
- "Pop2025": 1660,
- "Pop2050": 1706,
- "Location": [
- 29.42,
- -98.52
- ]
- },
- {
- "City": "San Diego",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 440,
- "Pop1955": 610,
- "Pop1960": 840,
- "Pop1965": 1010,
- "Pop1970": 1210,
- "Pop1975": 1440,
- "Pop1980": 1720,
- "Pop1985": 2020,
- "Pop1990": 2360,
- "Pop1995": 2510,
- "Pop2000": 2680,
- "Pop2005": 2850,
- "Pop2010": 2920,
- "Pop2015": 3000,
- "Pop2020": 3130,
- "Pop2025": 3230,
- "Pop2050": 3315,
- "Location": [
- 32.76,
- -117.12
- ]
- },
- {
- "City": "San Francisco-Oakland",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 1860,
- "Pop1955": 2020,
- "Pop1960": 2200,
- "Pop1965": 2360,
- "Pop1970": 2530,
- "Pop1975": 2590,
- "Pop1980": 2660,
- "Pop1985": 2800,
- "Pop1990": 2960,
- "Pop1995": 3100,
- "Pop2000": 3240,
- "Pop2005": 3390,
- "Pop2010": 3450,
- "Pop2015": 3540,
- "Pop2020": 3680,
- "Pop2025": 3800,
- "Pop2050": 3898,
- "Location": [
- 37.79,
- -122.38
- ]
- },
- {
- "City": "San Jose",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 180,
- "Pop1955": 340,
- "Pop1960": 610,
- "Pop1965": 790,
- "Pop1970": 1010,
- "Pop1975": 1100,
- "Pop1980": 1200,
- "Pop1985": 1290,
- "Pop1990": 1380,
- "Pop1995": 1460,
- "Pop2000": 1540,
- "Pop2005": 1630,
- "Pop2010": 1670,
- "Pop2015": 1720,
- "Pop2020": 1800,
- "Pop2025": 1860,
- "Pop2050": 1921,
- "Location": [
- 37.3,
- -121.84
- ]
- },
- {
- "City": "Seattle",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 800,
- "Pop1955": 930,
- "Pop1960": 1090,
- "Pop1965": 1300,
- "Pop1970": 1560,
- "Pop1975": 1660,
- "Pop1980": 1780,
- "Pop1985": 1980,
- "Pop1990": 2210,
- "Pop1995": 2450,
- "Pop2000": 2730,
- "Pop2005": 2990,
- "Pop2010": 3070,
- "Pop2015": 3170,
- "Pop2020": 3300,
- "Pop2025": 3420,
- "Pop2050": 3503,
- "Location": [
- 47.58,
- -122.31
- ]
- },
- {
- "City": "St. Louis",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 1410,
- "Pop1955": 1540,
- "Pop1960": 1670,
- "Pop1965": 1780,
- "Pop1970": 1880,
- "Pop1975": 1860,
- "Pop1980": 1850,
- "Pop1985": 1900,
- "Pop1990": 1950,
- "Pop1995": 2010,
- "Pop2000": 2080,
- "Pop2005": 2160,
- "Pop2010": 2200,
- "Pop2015": 2260,
- "Pop2020": 2360,
- "Pop2025": 2440,
- "Pop2050": 2510,
- "Location": [
- 38.63,
- -90.34
- ]
- },
- {
- "City": "Tampa-St. Petersburg",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 300,
- "Pop1955": 440,
- "Pop1960": 630,
- "Pop1965": 740,
- "Pop1970": 870,
- "Pop1975": 1090,
- "Pop1980": 1360,
- "Pop1985": 1530,
- "Pop1990": 1720,
- "Pop1995": 1890,
- "Pop2000": 2070,
- "Pop2005": 2250,
- "Pop2010": 2310,
- "Pop2015": 2390,
- "Pop2020": 2490,
- "Pop2025": 2580,
- "Pop2050": 2652,
- "Location": [
- 27.99,
- -82.59
- ]
- },
- {
- "City": "Tucson",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 80,
- "Pop1955": 130,
- "Pop1960": 230,
- "Pop1965": 260,
- "Pop1970": 300,
- "Pop1975": 370,
- "Pop1980": 450,
- "Pop1985": 510,
- "Pop1990": 580,
- "Pop1995": 650,
- "Pop2000": 720,
- "Pop2005": 800,
- "Pop2010": 820,
- "Pop2015": 850,
- "Pop2020": 900,
- "Pop2025": 940,
- "Pop2050": 969,
- "Location": [
- 32.22,
- -110.92
- ]
- },
- {
- "City": "Virginia Beach",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 390,
- "Pop1955": 530,
- "Pop1960": 720,
- "Pop1965": 820,
- "Pop1970": 930,
- "Pop1975": 1000,
- "Pop1980": 1070,
- "Pop1985": 1170,
- "Pop1990": 1290,
- "Pop1995": 1340,
- "Pop2000": 1400,
- "Pop2005": 1460,
- "Pop2010": 1490,
- "Pop2015": 1540,
- "Pop2020": 1610,
- "Pop2025": 1670,
- "Pop2050": 1719,
- "Location": [
- 36.83,
- -76.08
- ]
- },
- {
- "City": "Washington, D.C.",
- "Country": "United States of America",
- "Country_ISO3": "USA",
- "Pop1950": 1300,
- "Pop1955": 1540,
- "Pop1960": 1820,
- "Pop1965": 2140,
- "Pop1970": 2490,
- "Pop1975": 2630,
- "Pop1980": 2780,
- "Pop1985": 3060,
- "Pop1990": 3380,
- "Pop1995": 3650,
- "Pop2000": 3950,
- "Pop2005": 4240,
- "Pop2010": 4340,
- "Pop2015": 4460,
- "Pop2020": 4640,
- "Pop2025": 4780,
- "Pop2050": 4889,
- "Location": [
- 38.89,
- -76.95
- ]
- },
- {
- "City": "Ouagadougou",
- "Country": "Burkina Faso",
- "Country_ISO3": "BFA",
- "Pop1950": 30,
- "Pop1955": 50,
- "Pop1960": 60,
- "Pop1965": 80,
- "Pop1970": 110,
- "Pop1975": 150,
- "Pop1980": 260,
- "Pop1985": 420,
- "Pop1990": 540,
- "Pop1995": 670,
- "Pop2000": 830,
- "Pop2005": 1040,
- "Pop2010": 1150,
- "Pop2015": 1320,
- "Pop2020": 1680,
- "Pop2025": 2110,
- "Pop2050": 2632,
- "Location": [
- 12.48,
- -1.67
- ]
- },
- {
- "City": "Montevideo",
- "Country": "Uruguay",
- "Country_ISO3": "URY",
- "Pop1950": 1210,
- "Pop1955": 1250,
- "Pop1960": 1280,
- "Pop1965": 1320,
- "Pop1970": 1360,
- "Pop1975": 1400,
- "Pop1980": 1450,
- "Pop1985": 1510,
- "Pop1990": 1550,
- "Pop1995": 1580,
- "Pop2000": 1560,
- "Pop2005": 1520,
- "Pop2010": 1510,
- "Pop2015": 1500,
- "Pop2020": 1510,
- "Pop2025": 1520,
- "Pop2050": 1520,
- "Location": [
- -34.92,
- -56.16
- ]
- },
- {
- "City": "Tashkent",
- "Country": "Uzbekistan",
- "Country_ISO3": "UZB",
- "Pop1950": 760,
- "Pop1955": 840,
- "Pop1960": 960,
- "Pop1965": 1160,
- "Pop1970": 1400,
- "Pop1975": 1610,
- "Pop1980": 1820,
- "Pop1985": 1960,
- "Pop1990": 2100,
- "Pop1995": 2120,
- "Pop2000": 2140,
- "Pop2005": 2160,
- "Pop2010": 2180,
- "Pop2015": 2250,
- "Pop2020": 2420,
- "Pop2025": 2640,
- "Pop2050": 2892,
- "Location": [
- 41.24,
- 69.34
- ]
- },
- {
- "City": "Barquisimeto",
- "Country": "Venezuela (Bolivarian Republic of)",
- "Country_ISO3": "VEN",
- "Pop1950": 130,
- "Pop1955": 170,
- "Pop1960": 240,
- "Pop1965": 300,
- "Pop1970": 380,
- "Pop1975": 480,
- "Pop1980": 580,
- "Pop1985": 670,
- "Pop1990": 740,
- "Pop1995": 840,
- "Pop2000": 950,
- "Pop2005": 1070,
- "Pop2010": 1120,
- "Pop2015": 1180,
- "Pop2020": 1280,
- "Pop2025": 1360,
- "Pop2050": 1420,
- "Location": [
- 10.06,
- -69.33
- ]
- },
- {
- "City": "Caracas",
- "Country": "Venezuela (Bolivarian Republic of)",
- "Country_ISO3": "VEN",
- "Pop1950": 690,
- "Pop1955": 960,
- "Pop1960": 1320,
- "Pop1965": 1660,
- "Pop1970": 2060,
- "Pop1975": 2340,
- "Pop1980": 2580,
- "Pop1985": 2690,
- "Pop1990": 2770,
- "Pop1995": 2820,
- "Pop2000": 2860,
- "Pop2005": 2930,
- "Pop2010": 2980,
- "Pop2015": 3100,
- "Pop2020": 3310,
- "Pop2025": 3480,
- "Pop2050": 3619,
- "Location": [
- 10.49,
- -66.89
- ]
- },
- {
- "City": "Maracaibo",
- "Country": "Venezuela (Bolivarian Republic of)",
- "Country_ISO3": "VEN",
- "Pop1950": 280,
- "Pop1955": 370,
- "Pop1960": 480,
- "Pop1965": 570,
- "Pop1970": 670,
- "Pop1975": 790,
- "Pop1980": 920,
- "Pop1985": 1100,
- "Pop1990": 1300,
- "Pop1995": 1500,
- "Pop2000": 1720,
- "Pop2005": 1980,
- "Pop2010": 2070,
- "Pop2015": 2200,
- "Pop2020": 2370,
- "Pop2025": 2500,
- "Pop2050": 2606,
- "Location": [
- 10.64,
- -71.63
- ]
- },
- {
- "City": "Maracay",
- "Country": "Venezuela (Bolivarian Republic of)",
- "Country_ISO3": "VEN",
- "Pop1950": 60,
- "Pop1955": 80,
- "Pop1960": 110,
- "Pop1965": 160,
- "Pop1970": 250,
- "Pop1975": 340,
- "Pop1980": 460,
- "Pop1985": 590,
- "Pop1990": 760,
- "Pop1995": 830,
- "Pop2000": 900,
- "Pop2005": 970,
- "Pop2010": 1010,
- "Pop2015": 1060,
- "Pop2020": 1140,
- "Pop2025": 1210,
- "Pop2050": 1271,
- "Location": [
- 10.24,
- -67.59
- ]
- },
- {
- "City": "Valencia",
- "Country": "Venezuela (Bolivarian Republic of)",
- "Country_ISO3": "VEN",
- "Pop1950": 130,
- "Pop1955": 160,
- "Pop1960": 210,
- "Pop1965": 300,
- "Pop1970": 410,
- "Pop1975": 550,
- "Pop1980": 710,
- "Pop1985": 870,
- "Pop1990": 1050,
- "Pop1995": 1180,
- "Pop2000": 1370,
- "Pop2005": 1660,
- "Pop2010": 1770,
- "Pop2015": 1900,
- "Pop2020": 2060,
- "Pop2025": 2170,
- "Pop2050": 2266,
- "Location": [
- 10.17,
- -68
- ]
- },
- {
- "City": "Al-Hudaydah",
- "Country": "Yemen",
- "Country_ISO3": "YEM",
- "Pop1950": 30,
- "Pop1955": 30,
- "Pop1960": 40,
- "Pop1965": 60,
- "Pop1970": 70,
- "Pop1975": 90,
- "Pop1980": 120,
- "Pop1985": 150,
- "Pop1990": 210,
- "Pop1995": 310,
- "Pop2000": 460,
- "Pop2005": 670,
- "Pop2010": 780,
- "Pop2015": 950,
- "Pop2020": 1230,
- "Pop2025": 1530,
- "Pop2050": 1854,
- "Location": [
- 14.79,
- 42.94
- ]
- },
- {
- "City": "Sana'a'",
- "Country": "Yemen",
- "Country_ISO3": "YEM",
- "Pop1950": 50,
- "Pop1955": 60,
- "Pop1960": 70,
- "Pop1965": 90,
- "Pop1970": 110,
- "Pop1975": 140,
- "Pop1980": 240,
- "Pop1985": 400,
- "Pop1990": 650,
- "Pop1995": 1030,
- "Pop2000": 1360,
- "Pop2005": 1800,
- "Pop2010": 2010,
- "Pop2015": 2340,
- "Pop2020": 2960,
- "Pop2025": 3640,
- "Pop2050": 4382,
- "Location": [
- 15.36,
- 44.2
- ]
- },
- {
- "City": "Ta'izz",
- "Country": "Yemen",
- "Country_ISO3": "YEM",
- "Pop1950": 20,
- "Pop1955": 30,
- "Pop1960": 40,
- "Pop1965": 50,
- "Pop1970": 60,
- "Pop1975": 90,
- "Pop1980": 120,
- "Pop1985": 170,
- "Pop1990": 230,
- "Pop1995": 330,
- "Pop2000": 460,
- "Pop2005": 660,
- "Pop2010": 750,
- "Pop2015": 900,
- "Pop2020": 1160,
- "Pop2025": 1440,
- "Pop2050": 1743,
- "Location": [
- 13.57,
- 44.01
- ]
- },
- {
- "City": "Lusaka",
- "Country": "Zambia",
- "Country_ISO3": "ZMB",
- "Pop1950": 30,
- "Pop1955": 50,
- "Pop1960": 90,
- "Pop1965": 160,
- "Pop1970": 280,
- "Pop1975": 380,
- "Pop1980": 530,
- "Pop1985": 640,
- "Pop1990": 760,
- "Pop1995": 900,
- "Pop2000": 1070,
- "Pop2005": 1260,
- "Pop2010": 1330,
- "Pop2015": 1420,
- "Pop2020": 1590,
- "Pop2025": 1800,
- "Pop2050": 2047,
- "Location": [
- -15.42,
- 28.17
- ]
- }
- ]
-
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/map/link-markers/app.tsx b/docs/knowledge-base/examples/map/link-markers/app.tsx
deleted file mode 100644
index 175f519a..00000000
--- a/docs/knowledge-base/examples/map/link-markers/app.tsx
+++ /dev/null
@@ -1,80 +0,0 @@
-import * as React from 'react';
-import { Path } from '@progress/kendo-drawing';
-import {
- Map,
- MapLayers,
- MapShapeLayer,
- MapTileLayer,
- MapMarker,
- MapMarkerLayer,
- ResetEvent,
- TileUrlTemplateArgs
-} from '@progress/kendo-react-map';
-
-const center = [20.69, -70.96];
-const zoom = 7;
-
-const tileSubdomains = ['a', 'b', 'c'];
-const tileUrl = (e: TileUrlTemplateArgs) => `https://${e.subdomain}.tile.openstreetmap.org/${e.zoom}/${e.x}/${e.y}.png`;
-const attribution = '© OpenStreetMap contributors ';
-
-const markers = [{
- location: [20.69, -70.96],
- title: "Foo",
- pointTo: [18.89, -72.19]
-}];
-
-const linkMarker = (map: Map, marker: MapMarker) => {
- const data = marker.dataItem;
- if (data.pointTo) {
- // Convert the latitude and longitude locations to coordinates on the screen.
- const from = map.locationToView(marker.location());
- const to = map.locationToView(data.pointTo);
-
- // Draw a path on the shape layer.
- const layer = map.layers[1];
- const line = new Path({
- stroke: {
- color: "#fcc",
- width: 6,
- lineCap: 'round'
- }
- });
- line.moveTo(from).lineTo(to);
-
- layer.surface.draw(line);
- }
-}
-
-const reset = (args: ResetEvent) => {
- const map = args.target;
- const layer = map.layers[2];
-
- for (let marker of layer.items) {
- linkMarker(map, marker);
- }
-};
-
-const App = () => (
-
-
-
-
-
-
-
-);
-
-export default App;
diff --git a/docs/knowledge-base/examples/map/link-markers/main.tsx b/docs/knowledge-base/examples/map/link-markers/main.tsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/map/link-markers/main.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-color-tags/app.jsx b/docs/knowledge-base/examples/multiselect/multiselect-color-tags/app.jsx
deleted file mode 100644
index d99967e3..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-color-tags/app.jsx
+++ /dev/null
@@ -1,70 +0,0 @@
-import * as React from 'react';
-import { MultiSelect } from '@progress/kendo-react-dropdowns';
-
-const sizes = [
- 'X-Small - Event',
- 'Small - Visit',
- 'Medium - Visit',
- 'Large - Event',
- 'X-Large - Visit',
- '2X-Large - Event',
-];
-
-const App = () => {
- const [value, setValue] = React.useState([]);
-
- const handleChange = (event) => {
- setValue(event.target.value);
- };
-
- const tagRender = (tagData, li) => {
- const tagText = tagData.data[0];
- let backgroundColor = '';
-
- if (tagText.includes('Event')) {
- backgroundColor = 'red';
- } else if (tagText.includes('Visit')) {
- backgroundColor = '#599e0e';
- }
-
- const tagStyle = {
- backgroundColor: backgroundColor,
- display: 'inline-block',
- padding: '2px 8px',
- borderRadius: '4px',
- color: '#fff',
- };
-
- return React.cloneElement(
- li,
- {
- ...li.props,
- style: {
- ...li.props.style,
- backgroundColor: backgroundColor,
- },
- },
- [
-
- {tagText}
- ,
- li.props.children,
- ]
- );
- };
- return (
-
- );
-};
-
-export default App;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-color-tags/main.jsx b/docs/knowledge-base/examples/multiselect/multiselect-color-tags/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-color-tags/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-disable-items/app.jsx b/docs/knowledge-base/examples/multiselect/multiselect-disable-items/app.jsx
deleted file mode 100644
index 1147830e..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-disable-items/app.jsx
+++ /dev/null
@@ -1,65 +0,0 @@
-import * as React from 'react';
-
-import { MultiSelect } from '@progress/kendo-react-dropdowns';
-import countries from './shared-countries';
-const App = () => {
- const [open, setOpen] = React.useState(true);
- const itemRender = (li, itemProps) => {
- const index = itemProps.index;
- const itemChildren = {li.props.children} ;
- return (
-
- {itemChildren}
-
- );
- };
- const handleClose = (event) => {
- console.log(event.syntheticEvent.target.classList);
- if (!(event.syntheticEvent.target.classList[0] === 'k-list-ul')) {
- setOpen(false);
- }
- };
- const handleBlur = () => {
- console.log('blur');
- setOpen(false);
- };
-
- const handleOpen = () => {
- setOpen(true);
- };
-
- return (
-
-
Select European countries:
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-disable-items/main.jsx b/docs/knowledge-base/examples/multiselect/multiselect-disable-items/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-disable-items/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-limit-input/app.jsx b/docs/knowledge-base/examples/multiselect/multiselect-limit-input/app.jsx
deleted file mode 100644
index 154bde9e..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-limit-input/app.jsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import React, { useState, useEffect } from "react";
-import { MultiSelect } from "@progress/kendo-react-dropdowns";
-import { filterBy } from "@progress/kendo-data-query";
-import countries from "./shared-countries";
-
-const App = () => {
- const [data, setData] = useState(countries.slice());
- const [value, setValue] = useState("");
-
- const onFilterChange = (event) => {
- setData(filterBy(countries.slice(), event.filter));
- setValue(event.filter.value);
- };
-
- useEffect(() => {
- const input = document.getElementsByClassName("k-input-inner");
- input[0].setAttribute("maxlength", 2);
- }, []);
-
- return (
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-limit-input/main.jsx b/docs/knowledge-base/examples/multiselect/multiselect-limit-input/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-limit-input/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-reorder-tags/app.jsx b/docs/knowledge-base/examples/multiselect/multiselect-reorder-tags/app.jsx
deleted file mode 100644
index cc3b13ba..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-reorder-tags/app.jsx
+++ /dev/null
@@ -1,71 +0,0 @@
-import * as React from 'react';
-import { MultiSelect } from '@progress/kendo-react-dropdowns';
-import { Sortable } from '@progress/kendo-react-sortable';
-import './styles.css';
-const sizes = [
- { text: 'X-Small', id: 1 },
- { text: 'Small', id: 2 },
- { text: 'Medium', id: 3 },
- { text: 'Large', id: 4 },
-];
-
-//Custom tags that will be displayed over the MultiSelect input
-const SortableItemUI = (props) => {
- const { isDisabled, isActive, style, attributes, dataItem, forwardRef } =
- props;
-
- return (
-
- {dataItem.text}
-
- );
-};
-
-const App = () => {
- const [value, setValue] = React.useState([
- { text: 'X-Small', id: 1 },
- { text: 'Small', id: 2 },
- { text: 'Medium', id: 3 },
- ]);
-
- const handleChange = (event) => {
- setValue(event.target.value);
- };
-
- const onDragOver = (event) => {
- setValue(event.newState);
- };
-
- const onNavigate = (event) => {
- setValue(event.newState);
- };
-
- return (
-
-
Selected values: {value.map(i=>i.text).join(",")}
-
-
} //removeing original tags
- />
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-reorder-tags/main.jsx b/docs/knowledge-base/examples/multiselect/multiselect-reorder-tags/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-reorder-tags/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-reorder-tags/styles.css b/docs/knowledge-base/examples/multiselect/multiselect-reorder-tags/styles.css
deleted file mode 100644
index 9f7810d2..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-reorder-tags/styles.css
+++ /dev/null
@@ -1,13 +0,0 @@
-.sortableDiv {
- padding-left: 3px;
- position: relative;
- top: 25px;
- z-index: 10;
- display: inline-block;
- }
-
- .sortableDiv .k-button {
- height: 21px;
- padding: 0 20px;
- }
-
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-select-all-checkbox/class/app.jsx b/docs/knowledge-base/examples/multiselect/multiselect-select-all-checkbox/class/app.jsx
deleted file mode 100644
index c8f22a02..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-select-all-checkbox/class/app.jsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import React from 'react';
-import { MultiSelect } from '@progress/kendo-react-dropdowns';
-import countries from './shared-countries';
-class AppComponent extends React.Component {
- state = { value: [], allSelected: true };
-
- handleChange = (event) => {
- const currentSelectAll = this.state.value.some((i) => i === 'Select All');
- const nextSelectAll = event.value.some((i) => i === 'Select All');
- let value = event.value;
- const currentCount = this.state.value.length;
- const nextCount = value.length;
-
- if (
- nextCount > currentCount &&
- !currentSelectAll &&
- !nextSelectAll &&
- countries.length - 1 === nextCount
- ) {
- value = countries;
- } else if (
- nextCount < currentCount &&
- currentCount === countries.length &&
- currentSelectAll &&
- nextSelectAll
- ) {
- value = value.filter((v) => v !== 'Select All');
- } else if (!currentSelectAll && nextSelectAll) {
- value = countries;
- } else if (currentSelectAll && !nextSelectAll) {
- value = [];
- }
-
- this.setState({ value });
- };
-
- itemRender = (li, itemProps) => {
- const itemChildren = (
-
- itemProps.onClick(itemProps.index, e)}
- />
- {li.props.children}
-
- );
- return React.cloneElement(li, li.props, itemChildren);
- };
-
- render() {
- const value = this.state.value;
- const selected = value.length;
- return (
-
-
Select European countries:
-
0
- ? [{ text: `${selected} items selected`, data: [...value] }]
- : []
- }
- />
-
- );
- }
-}
-
-export default AppComponent;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-select-all-checkbox/class/main.jsx b/docs/knowledge-base/examples/multiselect/multiselect-select-all-checkbox/class/main.jsx
deleted file mode 100644
index 80a0d7bf..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-select-all-checkbox/class/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import AppComponent from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-select-all-checkbox/func/app.jsx b/docs/knowledge-base/examples/multiselect/multiselect-select-all-checkbox/func/app.jsx
deleted file mode 100644
index 819b2570..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-select-all-checkbox/func/app.jsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import React from 'react';
-import { MultiSelect } from '@progress/kendo-react-dropdowns';
-import countries from './shared-countries';
-
-const App = () => {
- const [state, setState] = React.useState({ value: [], allSelected: true });
-
- const handleChange = (event) => {
- const currentSelectAll = state.value.some((i) => i === 'Select All');
- const nextSelectAll = event.value.some((i) => i === 'Select All');
- let value = event.value;
- const currentCount = state.value.length;
- const nextCount = value.length;
-
- if (
- nextCount > currentCount &&
- !currentSelectAll &&
- !nextSelectAll &&
- countries.length - 1 === nextCount
- ) {
- value = countries;
- } else if (
- nextCount < currentCount &&
- currentCount === countries.length &&
- currentSelectAll &&
- nextSelectAll
- ) {
- value = value.filter((v) => v !== 'Select All');
- } else if (!currentSelectAll && nextSelectAll) {
- value = countries;
- } else if (currentSelectAll && !nextSelectAll) {
- value = [];
- }
-
- setState({ value });
- };
-
- const itemRender = (li, itemProps) => {
- const itemChildren = (
-
- itemProps.onClick(itemProps.index, e)}
- />
- {li.props.children}
-
- );
- return React.cloneElement(li, li.props, itemChildren);
- };
- const value = state.value;
- const selected = value.length;
- return (
-
-
Select European countries:
-
0
- ? [{ text: `${selected} items selected`, data: [...value] }]
- : []
- }
- />
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-select-all-checkbox/func/main.jsx b/docs/knowledge-base/examples/multiselect/multiselect-select-all-checkbox/func/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-select-all-checkbox/func/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-set-maximum-selection/app.jsx b/docs/knowledge-base/examples/multiselect/multiselect-set-maximum-selection/app.jsx
deleted file mode 100644
index 3f8200e3..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-set-maximum-selection/app.jsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import React, { useState, useEffect } from 'react';
-
-import { MultiSelect } from '@progress/kendo-react-dropdowns';
-
-const sizes = ['X-Small', 'Small', 'Medium', 'Large', 'X-Large', '2X-Large'];
-
-const App = () => {
- const [value, setValue] = useState([]);
-
- const handleChange = (event) => {
- setValue(event.target.value.slice(0, 2));
- };
-
- return (
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-set-maximum-selection/main.jsx b/docs/knowledge-base/examples/multiselect/multiselect-set-maximum-selection/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-set-maximum-selection/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-tags-and-tagrender/app.jsx b/docs/knowledge-base/examples/multiselect/multiselect-tags-and-tagrender/app.jsx
deleted file mode 100644
index 411f1459..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-tags-and-tagrender/app.jsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import * as React from 'react';
-
-import { MultiSelect } from '@progress/kendo-react-dropdowns';
-const sizes = ['X-Small', 'Small', 'Medium'];
-const App = () => {
- const [value, setValue] = React.useState([]);
- const selected = value.length;
- const [tags, setTags] = React.useState([
- {
- text: `${selected} tasks`,
- data: [...value],
- },
- ]);
-
- const tagRender = (tagData, li) => {
- let icon;
- if (tagData.text === 'X-Small') {
- icon = ;
- } else if (tagData.text === 'Small') {
- icon = ;
- } else if (tagData.text === 'Medium') {
- icon = ;
- } else {
- icon = null;
- }
- return React.cloneElement(li, li.props, [
-
- {icon ? icon : tagData.text}
- ,
- li.props.children,
- ]);
- };
-
- const handleChange = React.useCallback(
- (event) => {
- const close = event.syntheticEvent.target.classList[0] === 'k-icon';
- if (!(event.value.length < value.length) && !close) {
- tags[0].text = `${event.value.length} task`;
- setTags((tags) => [
- ...tags,
- {
- text: `${event.value[event.value.length - 1]}`,
- data: [...value],
- },
- ]);
- } else {
- const deletedEl = event.nativeEvent.target.outerText;
- setTags((tags) => tags.filter((tag) => tag.text !== deletedEl));
- }
-
- setValue(event.value);
- },
- [tags]
- );
-
- return (
-
- );
-};
-export default App;
diff --git a/docs/knowledge-base/examples/multiselect/multiselect-tags-and-tagrender/main.jsx b/docs/knowledge-base/examples/multiselect/multiselect-tags-and-tagrender/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/multiselect/multiselect-tags-and-tagrender/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/app.jsx b/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/app.jsx
deleted file mode 100644
index a3498787..00000000
--- a/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/app.jsx
+++ /dev/null
@@ -1,96 +0,0 @@
-import * as React from 'react';
-import * as ReactDOM from 'react-dom';
-import {
- MultiSelectTree,
- getMultiSelectTreeValue,
-} from '@progress/kendo-react-dropdowns';
-import {
- processMultiSelectTreeData,
- expandedState,
-} from './multiselecttree-data-operations';
-import { data } from './tree-data';
-const dataItemKey = 'id';
-const checkField = 'checkField';
-const checkIndeterminateField = 'checkIndeterminateField';
-const subItemsField = 'items';
-const expandField = 'expanded';
-const textField = 'text';
-const fields = {
- dataItemKey,
- checkField,
- checkIndeterminateField,
- expandField,
- subItemsField,
-};
-import './style.css';
-const LoadingPanel = () => {
- const loadingPanel = (
-
- );
- const multiselecttree =
- document && document.querySelector('.k-multiselecttree');
- return multiselecttree
- ? ReactDOM.createPortal(loadingPanel, multiselecttree)
- : loadingPanel;
-};
-const App = () => {
- const [value, setValue] = React.useState([]);
- const [loading, setLoading] = React.useState(false);
- const [expanded, setExpanded] = React.useState([data[0][dataItemKey]]);
- const onChange = (event) =>
- setValue(
- getMultiSelectTreeValue(data, {
- ...fields,
- ...event,
- value,
- })
- );
- const onExpandChange = React.useCallback(
- (event) => {
- setLoading(true);
- // simulate a server call
- setTimeout(() => {
- setExpanded(expandedState(event.item, dataItemKey, expanded));
- setLoading(false);
- }, 1000);
- },
- [expanded]
- );
- const treeData = React.useMemo(
- () =>
- processMultiSelectTreeData(data, {
- expanded,
- value,
- ...fields,
- }),
- [expanded, value]
- );
- return (
- <>
-
- {loading && }
- >
- );
-};
-
-export default App;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/main.jsx b/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/multiselecttree-data-operations.js b/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/multiselecttree-data-operations.js
deleted file mode 100644
index 263f32cf..00000000
--- a/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/multiselecttree-data-operations.js
+++ /dev/null
@@ -1,85 +0,0 @@
-import { filterBy } from '@progress/kendo-react-data-tools';
-import { getter, setter } from '@progress/kendo-react-common';
-export const getValueMap = (value, idGetter) => {
- const map = {};
- if (value && value.length) {
- value.forEach(item => {
- map[idGetter(item)] = true;
- });
- }
- return map;
-};
-export const expandedState = (item, dataItemKey, expanded) => {
- const nextExpanded = expanded.slice();
- const keyGetter = getter(dataItemKey);
- const itemKey = keyGetter(item);
- const index = expanded.findIndex(currentKey => {
- return currentKey === itemKey;
- });
- index === -1 ? nextExpanded.push(itemKey) : nextExpanded.splice(index, 1);
- return nextExpanded;
-};
-const mapMultiSelectTreeData = (data, options) => {
- const {
- keyGetter,
- subItemGetter,
- subItemSetter,
- checkSetter,
- expandedSetter,
- checkIndeterminateSetter,
- valueMap,
- expandedMap
- } = options;
- if (!data || !data.length) {
- return [data, false];
- }
- let hasChecked = false;
- const newData = [...data].map(dataItem => {
- const [children, hasCheckedChildren] = mapMultiSelectTreeData(subItemGetter(dataItem), options);
- const isChecked = valueMap[keyGetter(dataItem)];
- if (isChecked || hasCheckedChildren) {
- hasChecked = true;
- }
- const newItem = {
- ...dataItem
- };
- expandedSetter(newItem, expandedMap[keyGetter(newItem)]);
- subItemSetter(newItem, children);
- checkSetter(newItem, isChecked);
- checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);
- return newItem;
- });
- return [newData, hasChecked];
-};
-
-/**
- * Creates a new array with the results of calling the provided callback function
- * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set.
- */
-export const processMultiSelectTreeData = (tree, options) => {
- const {
- subItemsField = 'items',
- checkField = 'checkField',
- checkIndeterminateField = 'checkIndeterminateField',
- expandField = 'expanded',
- dataItemKey,
- value,
- filter,
- expanded
- } = options;
- const keyGetter = getter(dataItemKey);
- const filtering = Boolean(filter && filter.value);
- const expandedMap = {};
- expanded.forEach(id => expandedMap[id] = true);
- const [result] = mapMultiSelectTreeData(tree, {
- valueMap: getValueMap(value, keyGetter),
- expandedMap: expandedMap,
- keyGetter,
- expandedSetter: setter(expandField),
- subItemGetter: getter(subItemsField),
- subItemSetter: setter(subItemsField),
- checkSetter: setter(checkField),
- checkIndeterminateSetter: setter(checkIndeterminateField)
- });
- return filtering ? filterBy(result, [filter], subItemsField) : result;
-};
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/style.css b/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/style.css
deleted file mode 100644
index 5b260a25..00000000
--- a/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/style.css
+++ /dev/null
@@ -1,95 +0,0 @@
-.orders-demo.card-container {
- margin-top: 20px;
- display: flex;
- justify-content: center;
-}
-
-.orders-demo .custom-card-header {
- min-width: 48px;
-}
-
-.orders-demo .custom-card-header .k-skeleton {
- opacity: 1;
-}
-
-.orders-demo .custom-card-header-action {
- width: 20px;
- height: 20px;
-}
-
-.orders-demo .custom-card {
- width: 712px;
- height: 350px;
- border-radius: 4px 4px 0 0;
- box-shadow: 0 0 12px 4px rgba(0, 0, 0, 0.08);
-}
-
-.orders-demo .k-skeleton {
- opacity: 0.4;
-}
-
-.orders-demo .k-h4,
-.orders-demo .k-i-chart-pie {
- opacity: 0.2;
-}
-
-.orders-demo .k-i-chart-pie {
- font-size: 52px;
-}
-
-.orders-demo .skeleton-text-small {
- width: 124px;
- height: 15px;
-}
-
-.orders-demo .skeleton-text-medium {
- height: 30px;
-}
-
-.orders-demo .skeleton-text-large {
- height: 88px;
-}
-
-.orders-demo .padding-top-5 {
- padding-top: 5px;
-}
-
-.contact-image {
- width: 20px;
- height: 20px;
- margin-right: 8px;
- border-radius: 50%;
-}
-
-@media only screen and (max-width: 559px) {
- .orders-demo .card-image-column {
- display: none !important;
- }
-}
-
-@media only screen and (max-width: 359px) {
- .orders-demo .custom-card {
- flex-direction: column !important;
- height: 358px;
- width: 359px;
- }
-
- .orders-demo .card-content {
- padding: 16px;
- box-sizing: border-box;
- }
-
- .orders-demo .custom-card-header {
- width: 100%;
- height: 40px;
- }
-
- .orders-demo .card-actions-container {
- flex-direction: row;
- padding: 10px 16px;
- }
-
- .orders-demo .skeleton-text-large {
- height: 64px;
- }
-}
diff --git a/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/tree-data.js b/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/tree-data.js
deleted file mode 100644
index 4860716a..00000000
--- a/docs/knowledge-base/examples/multiselecttree/multiselecttree-lazy-loading/tree-data.js
+++ /dev/null
@@ -1,27 +0,0 @@
-export const data = [{
- text: 'Furniture',
- id: 1,
- items: [{
- text: 'Tables & Chairs',
- id: 2
- }, {
- text: 'Sofas',
- id: 3
- }, {
- text: 'Occasional Furniture',
- id: 4
- }]
- }, {
- text: 'Decor',
- id: 5,
- items: [{
- text: 'Bed Linen',
- id: 6
- }, {
- text: 'Curtains & Blinds',
- id: 7
- }, {
- text: 'Carpets',
- id: 8
- }]
- }];
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/notification/hide-after/app.jsx b/docs/knowledge-base/examples/notification/hide-after/app.jsx
deleted file mode 100644
index ca60abd7..00000000
--- a/docs/knowledge-base/examples/notification/hide-after/app.jsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import * as React from 'react';
-import { Notification, NotificationGroup } from '@progress/kendo-react-notification'
-import { Fade } from '@progress/kendo-react-animation'
-
-class App extends React.Component {
- state = { success: false };
- onToggle = flag => {
- this.setState({ success: !this.state.success });
- if(!this.state.success){
- setTimeout(()=>{
- this.setState({ success: false });
- },3000)
- }
- }
-
- render() {
- const { success } = this.state;
-
- return (
-
- this.onToggle('success')}
- >
- {(success ? 'hide ' : 'show ') + 'Success'}
-
-
-
-
- {success && this.setState({ success: false })}
- >
- Your data has been saved.
- }
-
-
-
- );
- }
-}
-
-export default App;
-
diff --git a/docs/knowledge-base/examples/notification/hide-after/main.jsx b/docs/knowledge-base/examples/notification/hide-after/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/notification/hide-after/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/notification/stack-and-hide-after/app.jsx b/docs/knowledge-base/examples/notification/stack-and-hide-after/app.jsx
deleted file mode 100644
index 4e79a9f9..00000000
--- a/docs/knowledge-base/examples/notification/stack-and-hide-after/app.jsx
+++ /dev/null
@@ -1,103 +0,0 @@
-import * as React from "react";
-import { Grid, GridColumn as Column } from "@progress/kendo-react-grid";
-import {
- Notification,
- NotificationGroup
-} from "@progress/kendo-react-notification";
-import { Fade } from "@progress/kendo-react-animation";
-
-import products from "./shared-products.json";
-
-class App extends React.Component {
- state = {
- notifications: [],
- data: products,
- selectedID: null
- };
-
- hideNotification = dataItem => {
- const notificationIndex = this.state.notifications.findIndex(
- notification => notification.row == dataItem && notification.show == true
- );
- if (notificationIndex !== -1) {
- const notUpdated = this.state.notifications[notificationIndex];
- notUpdated.show = false;
- const newNotifications = [...this.state.notifications];
- newNotifications[notificationIndex] = notUpdated;
- this.setState({ notifications: newNotifications });
- }
- };
-
- closeNotification = i => {
- const notUpdated = this.state.notifications[i];
- notUpdated.show = false;
- const newNotifications = [...this.state.notifications];
- newNotifications[i] = notUpdated;
- this.setState({ notifications: newNotifications });
- };
-
- render() {
- const { notifications, selectedID } = this.state;
-
- return (
-
- ({
- ...item,
- selected: item.ProductID === selectedID
- }))}
- selectedField="selected"
- onRowClick={e => {
- this.setState({
- selectedID: e.dataItem.ProductID,
- notifications: [
- ...notifications,
- { row: e.dataItem.ProductID, show: true }
- ]
- }),
- setTimeout(() => {
- this.hideNotification(e.dataItem.ProductID);
- }, 4000);
- }}
- >
-
-
-
-
-
-
-
-
- {notifications.map((notification, i) => {
- return (
- notification.show && (
- this.closeNotification(i)}
- >
- Product Clicked: {this.state.data.map(item => {
- if (notification.row == item.ProductID) {
- return item.ProductName
- }
- })}
-
- )
- );
- })}
- {" "}
-
-
- );
- }
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/notification/stack-and-hide-after/main.jsx b/docs/knowledge-base/examples/notification/stack-and-hide-after/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/notification/stack-and-hide-after/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/notification/stack-notifications/app.jsx b/docs/knowledge-base/examples/notification/stack-notifications/app.jsx
deleted file mode 100644
index 662b080f..00000000
--- a/docs/knowledge-base/examples/notification/stack-notifications/app.jsx
+++ /dev/null
@@ -1,64 +0,0 @@
-import * as React from 'react';
-
-import {
- Notification,
- NotificationGroup,
-} from '@progress/kendo-react-notification';
-import { Fade } from '@progress/kendo-react-animation';
-import './styles.css';
-
-const App = () => {
- const [state, setState] = React.useState({
- messages: [],
- });
-
- const addNotification = (message) => {
- let newMessages = state.messages.map((item) => item);
- newMessages.push(message);
- setState({ messages: newMessages });
- };
- return (
-
-
- addNotification('new message' + new Date().toTimeString())
- }
- >
- Add message
-
-
- {state.messages &&
- state.messages.map((message, index) => {
- return (
-
- {
- let newMessages = state.messages.map((item) => item);
- newMessages.splice(index, 1);
- setState({ messages: newMessages });
- }}
- >
- {message}
-
-
- );
- })}
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/notification/stack-notifications/main.jsx b/docs/knowledge-base/examples/notification/stack-notifications/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/notification/stack-notifications/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/notification/stack-notifications/styles.css b/docs/knowledge-base/examples/notification/stack-notifications/styles.css
deleted file mode 100644
index 8bb7204a..00000000
--- a/docs/knowledge-base/examples/notification/stack-notifications/styles.css
+++ /dev/null
@@ -1,3 +0,0 @@
-.k-notification-container {
- margin: 6px;
-}
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/popup/close-on-blur/app.jsx b/docs/knowledge-base/examples/popup/close-on-blur/app.jsx
deleted file mode 100644
index a7e0b56e..00000000
--- a/docs/knowledge-base/examples/popup/close-on-blur/app.jsx
+++ /dev/null
@@ -1,70 +0,0 @@
-import * as React from "react";
-import { Popup } from "@progress/kendo-react-popup";
-
-
-class AppComponent extends React.Component {
- anchor = null;
- constructor(props) {
- super(props);
- this.state = { show: false };
- this.contentRef = React.createRef();
- this.blurTimeoutRef = React.createRef();
- }
-
- onOpen = e => {
- this.contentRef.current.focus()
- };
-
- onFocus = () => {
- // the user is still inside the content
- clearTimeout(this.blurTimeoutRef.current);
- };
-
- onBlurTimeout = () => {
- // the user is now outside the popup
- this.setState({ show: false });
- };
-
- onBlur = () => {
- clearTimeout(this.blurTimeoutRef.current);
-
- this.blurTimeoutRef.current = setTimeout(this.onBlurTimeout,200);
- };
-
- render() {
- return (
-
-
{
- this.anchor = button;
- }}
- >
- {this.state.show ? "Hide" : "Show"}
-
-
-
- some content
-
-
-
- );
- }
-
- onClick = () => {
- this.setState({ show: !this.state.show });
- };
-}
-
-export default AppComponent;
diff --git a/docs/knowledge-base/examples/popup/close-on-blur/main.jsx b/docs/knowledge-base/examples/popup/close-on-blur/main.jsx
deleted file mode 100644
index 80a0d7bf..00000000
--- a/docs/knowledge-base/examples/popup/close-on-blur/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import AppComponent from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/popup/close-on-click-outside/app.jsx b/docs/knowledge-base/examples/popup/close-on-click-outside/app.jsx
deleted file mode 100644
index f99a24b0..00000000
--- a/docs/knowledge-base/examples/popup/close-on-click-outside/app.jsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import React from 'react';
-import { Popup } from '@progress/kendo-react-popup';
-import { process } from '@progress/kendo-data-query';
-
-class AppComponent extends React.Component {
- anchor = null;
- constructor(props) {
- super(props);
- this.state = { show: false };
- }
-
- componentDidMount() {
- document.body.addEventListener('click', this.handleBodyClick);
- }
-
- componentWillUnmount() {
- document.body.removeEventListener('click', this.handleBodyClick);
- }
-
- handleBodyClick = () => {
- if (this.state.show) {
- this.setState({
- show: false,
- });
- }
- };
-
- render() {
- return (
-
-
{
- this.anchor = button;
- }}
- >
- {this.state.show ? 'Hide' : 'Show'}
-
-
- Popup content.
-
-
- );
- }
-
- onClick = (e) => {
- e.stopPropagation();
- this.setState({ show: !this.state.show });
- };
-}
-
-export default AppComponent;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/popup/close-on-click-outside/main.jsx b/docs/knowledge-base/examples/popup/close-on-click-outside/main.jsx
deleted file mode 100644
index 80a0d7bf..00000000
--- a/docs/knowledge-base/examples/popup/close-on-click-outside/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import AppComponent from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/radialgauge/app.tsx b/docs/knowledge-base/examples/radialgauge/app.tsx
deleted file mode 100644
index 21826245..00000000
--- a/docs/knowledge-base/examples/radialgauge/app.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-import * as React from 'react';
-
-import { RadialGauge } from '@progress/kendo-react-gauges';
-
-const App = () => {
- const [value, setValue] = React.useState(0);
-
- React.useEffect(() => {
- setInterval(() => {
- setValue(Math.ceil(Math.random() * 100));
- }, 1000);
- }, []);
-
- const radialOptions: any = {
- value: value,
- shape: 'arrow',
- scale: {
- minorUnit: 5,
- majorUnit: 20,
- max: 180,
- ranges: [
- { from: 80, to: 120, color: '#ffc700' },
- { from: 120, to: 150, color: '#ff7a00' },
- { from: 150, to: 180, color: '#c20000' },
- ],
- },
- };
-
- const styles = `
-.gaugeVal {
- font-family: Arial, Verdana, Helvetica, sans-serif;
- font-size: 18px;
- position: relative;
- left: 0;
- right: 0;
- top: -40px;
- text-align: center;
- color: #f00;
-}
-`;
-
- return (
- <>
-
-
-
- {value}{' '}
-
- >
- );
-};
-
-export default App;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/radialgauge/main.tsx b/docs/knowledge-base/examples/radialgauge/main.tsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/radialgauge/main.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/app.jsx b/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/app.jsx
deleted file mode 100644
index 21f2620f..00000000
--- a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/app.jsx
+++ /dev/null
@@ -1,110 +0,0 @@
-import * as React from 'react';
-import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
-import {
- DragAndDrop,
- useDroppable,
- Droppable,
-} from '@progress/kendo-react-common';
-import { DraggableRow } from './draggable-row';
-import { DragHandleCell } from './drag-handle-cell';
-import {
- Scheduler,
- WeekView,
- MonthView,
-} from '@progress/kendo-react-scheduler';
-import { guid } from '@progress/kendo-react-common';
-
-export const ReorderContext = React.createContext({
- dragStart: () => {},
-});
-const App = () => {
- const s = [
- {
- taskID: 1,
- ownerId: 1,
- title: 'Fast and furious 6',
- },
- {
- taskID: 2,
- ownerId: 3,
- title: 'The Internship',
- },
- {
- taskID: 3,
- ownerId: 2,
- title: 'The Perks of Being a Wallflower',
- },
- {
- taskID: 4,
- ownerId: 1,
- title: 'The Help',
- },
- {
- taskID: 5,
- ownerId: 2,
- title: 'Now You See Me',
- },
- ];
-
- const [activeItem, setActiveItem] = React.useState(null);
- const MyScheduler = React.createRef();
- const [data, setData] = React.useState([]);
- const handleDropItem = (e) => {
- if (!activeItem) {
- return;
- }
- const target = document.elementFromPoint(e.event.clientX, e.event.clientY);
-
- const start = target.getAttribute('data-slot-start');
- const end = target.getAttribute('data-slot-end');
- const startDate = new Date(parseInt(start));
- const endDate = new Date(parseInt(end));
- const newEvent = {
- id: guid(),
- title: activeItem.title,
- StartTimezone: null,
- start: startDate,
- end: endDate,
- };
- setData([newEvent, ...data]);
- setActiveItem(null);
- };
-
- const dragStart = (dataItem) => {
- setActiveItem(dataItem);
- };
-
- return (
-
-
-
-
-
-
-
-
-
- (
-
- )}
- >
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/drag-handle-cell.jsx b/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/drag-handle-cell.jsx
deleted file mode 100644
index c9b26f98..00000000
--- a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/drag-handle-cell.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-export const DragHandleCell = (props) => {
- return (
-
-
-
- );
-};
diff --git a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/draggable-row.jsx b/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/draggable-row.jsx
deleted file mode 100644
index b49470ee..00000000
--- a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/draggable-row.jsx
+++ /dev/null
@@ -1,87 +0,0 @@
-import * as React from 'react';
-import { createPortal } from 'react-dom';
-import { ReorderContext } from './app';
-import { useDraggable } from '@progress/kendo-react-common';
-
-export const DraggableRow = (props) => {
- const [position, setPosition] = React.useState({ x: 50, y: 50 });
- const [dragged, setDragged] = React.useState(false);
- const { dragStart } = React.useContext(ReorderContext);
- const element = React.useRef(null);
- const hint = React.useRef(null);
-
- const handlePress = React.useCallback(() => {}, []);
-
- const handleDragStart = React.useCallback(
- (event) => {
- setDragged(true);
- dragStart(props.dataItem);
- },
- [position.x, position.y]
- );
-
- const handleDrag = React.useCallback((event) => {
- setPosition({
- x: event.clientX + 50,
- y: event.clientY - 50,
- });
- }, []);
-
- const handleDragEnd = React.useCallback(() => {
- setDragged(false);
- }, []);
-
- const handleRelease = React.useCallback(() => {
- setPosition({ x: 50, y: 50 });
- }, []);
-
- useDraggable(
- element,
- {
- onPress: handlePress,
- onDragStart: handleDragStart,
- onDrag: handleDrag,
- onDragEnd: handleDragEnd,
- onRelease: handleRelease,
- },
- { hint: hint }
- );
-
- return (
-
- {createPortal(
- dragged ? (
-
- ) : null,
- document.body
- )}
-
-
- );
-};
diff --git a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/main.jsx b/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/products.json b/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/products.json
deleted file mode 100644
index 4df1c408..00000000
--- a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/draggable/products.json
+++ /dev/null
@@ -1,1233 +0,0 @@
-[{
- "ProductID" : 1,
- "ProductName" : "Chai",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "10 boxes x 20 bags",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 2,
- "ProductName" : "Chang",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 3,
- "ProductName" : "Aniseed Syrup",
- "SupplierID" : 1,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 550 ml bottles",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 13,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 4,
- "ProductName" : "Chef Anton's Cajun Seasoning",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "48 - 6 oz jars",
- "UnitPrice" : 22.0000,
- "UnitsInStock" : 53,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 5,
- "ProductName" : "Chef Anton's Gumbo Mix",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "36 boxes",
- "UnitPrice" : 21.3500,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 6,
- "ProductName" : "Grandma's Boysenberry Spread",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 8 oz jars",
- "UnitPrice" : 25.0000,
- "UnitsInStock" : 120,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 7,
- "ProductName" : "Uncle Bob's Organic Dried Pears",
- "SupplierID" : 3,
- "CategoryID" : 7,
- "QuantityPerUnit" : "12 - 1 lb pkgs.",
- "UnitPrice" : 30.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 8,
- "ProductName" : "Northwoods Cranberry Sauce",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 12 oz jars",
- "UnitPrice" : 40.0000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 9,
- "ProductName" : "Mishi Kobe Niku",
- "SupplierID" : 4,
- "CategoryID" : 6,
- "QuantityPerUnit" : "18 - 500 g pkgs.",
- "UnitPrice" : 97.0000,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 10,
- "ProductName" : "Ikura",
- "SupplierID" : 4,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 200 ml jars",
- "UnitPrice" : 31.0000,
- "UnitsInStock" : 31,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 11,
- "ProductName" : "Queso Cabrales",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "1 kg pkg.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 30,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 12,
- "ProductName" : "Queso Manchego La Pastora",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 86,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 13,
- "ProductName" : "Konbu",
- "SupplierID" : 6,
- "CategoryID" : 8,
- "QuantityPerUnit" : "2 kg box",
- "UnitPrice" : 6.0000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 14,
- "ProductName" : "Tofu",
- "SupplierID" : 6,
- "CategoryID" : 7,
- "QuantityPerUnit" : "40 - 100 g pkgs.",
- "UnitPrice" : 23.2500,
- "UnitsInStock" : 35,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 15,
- "ProductName" : "Genen Shouyu",
- "SupplierID" : 6,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 250 ml bottles",
- "UnitPrice" : 15.5000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 16,
- "ProductName" : "Pavlova",
- "SupplierID" : 7,
- "CategoryID" : 3,
- "QuantityPerUnit" : "32 - 500 g boxes",
- "UnitPrice" : 17.4500,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 17,
- "ProductName" : "Alice Mutton",
- "SupplierID" : 7,
- "CategoryID" : 6,
- "QuantityPerUnit" : "20 - 1 kg tins",
- "UnitPrice" : 39.0000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 18,
- "ProductName" : "Carnarvon Tigers",
- "SupplierID" : 7,
- "CategoryID" : 8,
- "QuantityPerUnit" : "16 kg pkg.",
- "UnitPrice" : 62.5000,
- "UnitsInStock" : 42,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 19,
- "ProductName" : "Teatime Chocolate Biscuits",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 12 pieces",
- "UnitPrice" : 9.2000,
- "UnitsInStock" : 25,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 20,
- "ProductName" : "Sir Rodney's Marmalade",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "30 gift boxes",
- "UnitPrice" : 81.0000,
- "UnitsInStock" : 40,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 21,
- "ProductName" : "Sir Rodney's Scones",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 pkgs. x 4 pieces",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 3,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 22,
- "ProductName" : "Gustaf's Knäckebröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 500 g pkgs.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 104,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 23,
- "ProductName" : "Tunnbröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "12 - 250 g pkgs.",
- "UnitPrice" : 9.0000,
- "UnitsInStock" : 61,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 24,
- "ProductName" : "Guaraná Fantástica",
- "SupplierID" : 10,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 355 ml cans",
- "UnitPrice" : 4.5000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 25,
- "ProductName" : "NuNuCa Nuß-Nougat-Creme",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "20 - 450 g glasses",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 26,
- "ProductName" : "Gumbär Gummibärchen",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 250 g bags",
- "UnitPrice" : 31.2300,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 27,
- "ProductName" : "Schoggi Schokolade",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 100 g pieces",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 49,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 28,
- "ProductName" : "Rössle Sauerkraut",
- "SupplierID" : 12,
- "CategoryID" : 7,
- "QuantityPerUnit" : "25 - 825 g cans",
- "UnitPrice" : 45.6000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 29,
- "ProductName" : "Thüringer Rostbratwurst",
- "SupplierID" : 12,
- "CategoryID" : 6,
- "QuantityPerUnit" : "50 bags x 30 sausgs.",
- "UnitPrice" : 123.7900,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 30,
- "ProductName" : "Nord-Ost Matjeshering",
- "SupplierID" : 13,
- "CategoryID" : 8,
- "QuantityPerUnit" : "10 - 200 g glasses",
- "UnitPrice" : 25.8900,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 31,
- "ProductName" : "Gorgonzola Telino",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "12 - 100 g pkgs",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 32,
- "ProductName" : "Mascarpone Fabioli",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 32.0000,
- "UnitsInStock" : 9,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 33,
- "ProductName" : "Geitost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "500 g",
- "UnitPrice" : 2.5000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 34,
- "ProductName" : "Sasquatch Ale",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 111,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 35,
- "ProductName" : "Steeleye Stout",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 36,
- "ProductName" : "Inlagd Sill",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 250 g jars",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 37,
- "ProductName" : "Gravad lax",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 500 g pkgs.",
- "UnitPrice" : 26.0000,
- "UnitsInStock" : 11,
- "UnitsOnOrder" : 50,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 38,
- "ProductName" : "Côte de Blaye",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 75 cl bottles",
- "UnitPrice" : 263.5000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 39,
- "ProductName" : "Chartreuse verte",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "750 cc per bottle",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 69,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 40,
- "ProductName" : "Boston Crab Meat",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 4 oz tins",
- "UnitPrice" : 18.4000,
- "UnitsInStock" : 123,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 41,
- "ProductName" : "Jack's New England Clam Chowder",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 12 oz cans",
- "UnitPrice" : 9.6500,
- "UnitsInStock" : 85,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 42,
- "ProductName" : "Singaporean Hokkien Fried Mee",
- "SupplierID" : 20,
- "CategoryID" : 5,
- "QuantityPerUnit" : "32 - 1 kg pkgs.",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 43,
- "ProductName" : "Ipoh Coffee",
- "SupplierID" : 20,
- "CategoryID" : 1,
- "QuantityPerUnit" : "16 - 500 g tins",
- "UnitPrice" : 46.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 44,
- "ProductName" : "Gula Malacca",
- "SupplierID" : 20,
- "CategoryID" : 2,
- "QuantityPerUnit" : "20 - 2 kg bags",
- "UnitPrice" : 19.4500,
- "UnitsInStock" : 27,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 45,
- "ProductName" : "Rogede sild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "1k pkg.",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 5,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 46,
- "ProductName" : "Spegesild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "4 - 450 g glasses",
- "UnitPrice" : 12.0000,
- "UnitsInStock" : 95,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 47,
- "ProductName" : "Zaanse koeken",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 - 4 oz boxes",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 48,
- "ProductName" : "Chocolade",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 pkgs.",
- "UnitPrice" : 12.7500,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 49,
- "ProductName" : "Maxilaku",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 - 50 g pkgs.",
- "UnitPrice" : 20.0000,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 60,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 50,
- "ProductName" : "Valkoinen suklaa",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "12 - 100 g bars",
- "UnitPrice" : 16.2500,
- "UnitsInStock" : 65,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 51,
- "ProductName" : "Manjimup Dried Apples",
- "SupplierID" : 24,
- "CategoryID" : 7,
- "QuantityPerUnit" : "50 - 300 g pkgs.",
- "UnitPrice" : 53.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 52,
- "ProductName" : "Filo Mix",
- "SupplierID" : 24,
- "CategoryID" : 5,
- "QuantityPerUnit" : "16 - 2 kg boxes",
- "UnitPrice" : 7.0000,
- "UnitsInStock" : 38,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 53,
- "ProductName" : "Perth Pasties",
- "SupplierID" : 24,
- "CategoryID" : 6,
- "QuantityPerUnit" : "48 pieces",
- "UnitPrice" : 32.8000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 54,
- "ProductName" : "Tourtière",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "16 pies",
- "UnitPrice" : 7.4500,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 55,
- "ProductName" : "Pâté chinois",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "24 boxes x 2 pies",
- "UnitPrice" : 24.0000,
- "UnitsInStock" : 115,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 56,
- "ProductName" : "Gnocchi di nonna Alice",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 57,
- "ProductName" : "Ravioli Angelo",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 19.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 58,
- "ProductName" : "Escargots de Bourgogne",
- "SupplierID" : 27,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 pieces",
- "UnitPrice" : 13.2500,
- "UnitsInStock" : 62,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 59,
- "ProductName" : "Raclette Courdavault",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 55.0000,
- "UnitsInStock" : 79,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 60,
- "ProductName" : "Camembert Pierrot",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "15 - 300 g rounds",
- "UnitPrice" : 34.0000,
- "UnitsInStock" : 19,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 61,
- "ProductName" : "Sirop d'érable",
- "SupplierID" : 29,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 500 ml bottles",
- "UnitPrice" : 28.5000,
- "UnitsInStock" : 113,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 62,
- "ProductName" : "Tarte au sucre",
- "SupplierID" : 29,
- "CategoryID" : 3,
- "QuantityPerUnit" : "48 pies",
- "UnitPrice" : 49.3000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 63,
- "ProductName" : "Vegie-spread",
- "SupplierID" : 7,
- "CategoryID" : 2,
- "QuantityPerUnit" : "15 - 625 g jars",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 64,
- "ProductName" : "Wimmers gute Semmelknödel",
- "SupplierID" : 12,
- "CategoryID" : 5,
- "QuantityPerUnit" : "20 bags x 4 pieces",
- "UnitPrice" : 33.2500,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 80,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 65,
- "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "32 - 8 oz bottles",
- "UnitPrice" : 21.0500,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 66,
- "ProductName" : "Louisiana Hot Spiced Okra",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 8 oz jars",
- "UnitPrice" : 17.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 100,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 67,
- "ProductName" : "Laughing Lumberjack Lager",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 52,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 68,
- "ProductName" : "Scottish Longbreads",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 8 pieces",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 69,
- "ProductName" : "Gudbrandsdalsost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 kg pkg.",
- "UnitPrice" : 36.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 70,
- "ProductName" : "Outback Lager",
- "SupplierID" : 7,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 355 ml bottles",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 71,
- "ProductName" : "Flotemysost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 21.5000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 72,
- "ProductName" : "Mozzarella di Giovanni",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 34.8000,
- "UnitsInStock" : 14,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 73,
- "ProductName" : "Röd Kaviar",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 150 g jars",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 101,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 74,
- "ProductName" : "Longlife Tofu",
- "SupplierID" : 4,
- "CategoryID" : 7,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 20,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 75,
- "ProductName" : "Rhönbräu Klosterbier",
- "SupplierID" : 12,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 0.5 l bottles",
- "UnitPrice" : 7.7500,
- "UnitsInStock" : 125,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 76,
- "ProductName" : "Lakkalikööri",
- "SupplierID" : 23,
- "CategoryID" : 1,
- "QuantityPerUnit" : "500 ml",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 57,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 77,
- "ProductName" : "Original Frankfurter grüne Soße",
- "SupplierID" : 12,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 boxes",
- "UnitPrice" : 13.0000,
- "UnitsInStock" : 32,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}]
diff --git a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/polyfill/app.jsx b/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/polyfill/app.jsx
deleted file mode 100644
index fc72276c..00000000
--- a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/polyfill/app.jsx
+++ /dev/null
@@ -1,90 +0,0 @@
-import * as React from 'react';
-import {
- Scheduler,
- WeekView,
- MonthView,
-} from '@progress/kendo-react-scheduler';
-
-import { Grid, GridColumn } from '@progress/kendo-react-grid';
-import { guid } from '@progress/kendo-react-common';
-
-import gridData from './shared-data';
-
-const App = () => {
- const MyScheduler = React.createRef();
- const [data, setData] = React.useState([]);
- const [dragItem, setDragItem] = React.useState('');
- const [width, setWidth] = React.useState(window.innerWidth);
- const [scriptLoadingState, setScriptLoadingState] = React.useState('IDLE');
-
- const createScript = () => {
- var script = document.createElement('script');
- script.type = 'text/javascript';
- script.src =
- 'https://bernardo-castilho.github.io/DragDropTouch/DragDropTouch.js';
- script.onload = function () {
- setScriptLoadingState('LOADED');
- };
-
- script.onerror = function () {
- setScriptLoadingState('FAILED');
- };
- document.body.appendChild(script);
- };
-
- const handleWindowSizeChange = () => {
- setWidth(window.innerWidth);
- createScript();
- };
-
- const handleDropItem = (e) => {
- let start = e.target.getAttribute('data-slot-start');
- let end = e.target.getAttribute('data-slot-end');
- let startDate = new Date(parseInt(start));
- let endDate = new Date(parseInt(end));
- let newEvent = {
- id: guid(),
- title: dragItem.title,
- StartTimezone: null,
- start: startDate,
- end: endDate,
- };
- setData([newEvent, ...data]);
- };
-
- React.useEffect(() => {
- window.addEventListener('resize', handleWindowSizeChange);
- let schedulerElement = MyScheduler.current.element;
- schedulerElement.addEventListener('drop', handleDropItem);
- schedulerElement.addEventListener('dragover', (e) => e.preventDefault());
- });
-
- const GridRowRender = (tr, props) => {
- const trProps = {
- draggable: true,
- onDragStart: (e) => {
- setDragItem(props.dataItem);
- },
- };
- return React.cloneElement(tr, { ...trProps }, tr.props.children);
- };
- return (
-
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/polyfill/main.jsx b/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/polyfill/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/scheduler/dnd-from-grid-mobile/polyfill/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/dnd-from-grid/app.jsx b/docs/knowledge-base/examples/scheduler/dnd-from-grid/app.jsx
deleted file mode 100644
index 1a8e202b..00000000
--- a/docs/knowledge-base/examples/scheduler/dnd-from-grid/app.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import * as React from 'react';
-import {
- Scheduler,
- WeekView,
- MonthView,
-} from '@progress/kendo-react-scheduler';
-
-import { Grid, GridColumn } from '@progress/kendo-react-grid';
-
-import gridData from './shared-data';
-
-const handleDragOver = (e) => {
- e.preventDefault();
-};
-
-const App = () => {
- const MyScheduler = React.useRef();
- const refData = React.useRef();
- const refDragItem = React.useRef();
- const [data, setData] = React.useState([]);
-
- refData.current = data;
- refDragItem.current = null;
-
- const handleDropItem = React.useCallback((e) => {
- let start = e.target.getAttribute('data-slot-start');
- let end = e.target.getAttribute('data-slot-end');
- let startDate = new Date(parseInt(start));
- let endDate = new Date(parseInt(end));
-
- let newEvent = {
- id: refDragItem.current.taskID,
- title: refDragItem.current.title,
- StartTimezone: null,
- start: startDate,
- end: endDate,
- };
- const newData = [newEvent, ...refData.current];
- refData.current = newData;
- setData(newData);
- }, []);
-
- React.useEffect(() => {
- let schedulerElement = MyScheduler.current.element;
- schedulerElement.addEventListener('drop', handleDropItem);
- schedulerElement.addEventListener('dragover', handleDragOver);
- return () => {
- schedulerElement.removeEventListener('drop', handleDropItem);
- schedulerElement.removeEventListener('dragover', handleDragOver);
- };
- }, []);
-
- const GridRowRender = (tr, props) => {
- const trProps = {
- draggable: true,
- onDragStart: () => {
- refDragItem.current = props.dataItem;
- },
- };
- return React.cloneElement(tr, { ...trProps }, tr.props.children);
- };
- return (
- <>
-
-
-
-
-
-
-
-
-
- >
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/scheduler/dnd-from-grid/main.jsx b/docs/knowledge-base/examples/scheduler/dnd-from-grid/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/scheduler/dnd-from-grid/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/dnd-from-listview/app.jsx b/docs/knowledge-base/examples/scheduler/dnd-from-listview/app.jsx
deleted file mode 100644
index 73aae571..00000000
--- a/docs/knowledge-base/examples/scheduler/dnd-from-listview/app.jsx
+++ /dev/null
@@ -1,87 +0,0 @@
-import * as React from 'react';
-import {
- Scheduler,
- WeekView,
- MonthView,
-} from '@progress/kendo-react-scheduler';
-import { ListView } from '@progress/kendo-react-listview';
-
-import gridData from './shared-data';
-
-const handleDragOver = (e) => {
- e.preventDefault();
-};
-
-const App = () => {
- const MyScheduler = React.useRef();
- const refData = React.useRef();
- const refDragItem = React.useRef();
- const [data, setData] = React.useState([]);
-
- refData.current = data;
- refDragItem.current = null;
-
- const handleDropItem = React.useCallback((e) => {
- let start = e.target.getAttribute('data-slot-start');
- let end = e.target.getAttribute('data-slot-end');
- let startDate = new Date(parseInt(start));
- let endDate = new Date(parseInt(end));
-
- let newEvent = {
- id: refDragItem.current.taskID,
- title: refDragItem.current.title,
- StartTimezone: null,
- start: startDate,
- end: endDate,
- };
- const newData = [newEvent, ...refData.current];
- refData.current = newData;
- setData(newData);
- }, []);
-
- React.useEffect(() => {
- let schedulerElement = MyScheduler.current.element;
- schedulerElement.addEventListener('drop', handleDropItem);
- schedulerElement.addEventListener('dragover', handleDragOver);
- return () => {
- schedulerElement.removeEventListener('drop', handleDropItem);
- schedulerElement.removeEventListener('dragover', handleDragOver);
- };
- }, []);
-
- const MyItemRender = (props) => {
- let item = props.dataItem;
- return (
- {
- refDragItem.current = props.dataItem;
- }}
- style={{ padding: 10, borderBottom: '1px solid lightgrey' }}
- >
- {item.title}
-
- );
- };
- return (
- <>
-
-
-
-
-
-
- >
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/scheduler/dnd-from-listview/main.jsx b/docs/knowledge-base/examples/scheduler/dnd-from-listview/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/scheduler/dnd-from-listview/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/export-to-ical/app.jsx b/docs/knowledge-base/examples/scheduler/export-to-ical/app.jsx
deleted file mode 100644
index 84f9bf57..00000000
--- a/docs/knowledge-base/examples/scheduler/export-to-ical/app.jsx
+++ /dev/null
@@ -1,108 +0,0 @@
-import * as React from "react";
-import {
- Scheduler,
- WeekView,
- SchedulerHeader,
-} from "@progress/kendo-react-scheduler";
-import { sampleData, displayDate } from "./shared-events-utc";
-
-
-import ICAL from "ical.js";
-
-import { ZonedDate } from "@progress/kendo-date-math";
-import "@progress/kendo-date-math/tz/America/New_York";
-import "@progress/kendo-date-math/tz/America/Los_Angeles";
-
-import { formatDate } from "@progress/kendo-intl";
-
-import { saveAs } from "@progress/kendo-file-saver";
-
-const getISOString = (date, toUTC) => {
- if (toUTC) {
- const tzDate = ZonedDate.fromLocalDate(date, "America/New_York");
- date = tzDate.toTimezone("Etc/UTC");
- }
- return formatDate(date, "yyyy-MM-ddTHH:mm:ssZ");
-};
-
-const App = () => {
- const [data, setData] = React.useState(sampleData);
-
- const customHeader = props => {
- return (
-
- Export to iCal
- {props.children}
-
- );
- };
-
- const exportToIcal = () => {
- var component = new ICAL.Component(["vcalendar", [], []]);
- component.updatePropertyWithValue("prodid", "iCal.js Example");
- component.updatePropertyWithValue("version", "2.0");
-
- var schedulerEvents = data;
-
- for (var i = 0; i < schedulerEvents.length; i++) {
- var schedulerEvent = schedulerEvents[i];
- var vevent = new ICAL.Component("vevent");
- var event = new ICAL.Event(vevent);
-
- event.uid = schedulerEvent.recurrenceId
- ? schedulerEvent.recurrenceId.toString()
- : schedulerEvent.id.toString();
- event.summary = schedulerEvent.title;
- event.description = schedulerEvent.description;
- event.startDate = ICAL.Time.fromDateTimeString(
- getISOString(schedulerEvent.start, true)
- );
- event.endDate = ICAL.Time.fromDateTimeString(
- getISOString(schedulerEvent.end, true)
- );
-
- if (schedulerEvent.recurrenceRule) {
- event.component.addProperty(
- new ICAL.Property(
- ICAL.parse.property("RRULE:" + schedulerEvent.recurrenceRule)
- )
- );
- }
-
- if (schedulerEvent.recurrenceException) {
- event.component.addProperty(
- new ICAL.Property(
- ICAL.parse.property("EXDATE:" + schedulerEvent.recurrenceException)
- )
- );
- }
-
- if (schedulerEvent.recurrenceId) {
- event.recurrenceId = ICAL.Time.fromDateTimeString(
- getISOString(schedulerEvent.start, true)
- );
- }
-
- event.component.addPropertyWithValue(
- "dtstamp",
- ICAL.Time.fromDateTimeString(getISOString(new Date(), true))
- );
- component.addSubcomponent(vevent);
- }
- saveAs(
- "data:text/calendar," + component.toString(),
- "KendoSchedulerCal.ics"
- );
- };
- return (
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/scheduler/export-to-ical/main.jsx b/docs/knowledge-base/examples/scheduler/export-to-ical/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/scheduler/export-to-ical/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/icon-in-group-header/app.jsx b/docs/knowledge-base/examples/scheduler/icon-in-group-header/app.jsx
deleted file mode 100644
index 2caa601d..00000000
--- a/docs/knowledge-base/examples/scheduler/icon-in-group-header/app.jsx
+++ /dev/null
@@ -1,77 +0,0 @@
-import * as React from 'react';
-import { Scheduler, DayView } from '@progress/kendo-react-scheduler';
-import { data, defaultDate } from './data';
-const group = {
- resources: ['Rooms', 'Person'],
- orientation: 'horizontal',
-};
-const resources = [
- {
- name: 'Rooms',
- data: [
- {
- text: (
-
- Meeting room 101{' '}
-
-
- ),
- value: 1,
- color: '#5392E4',
- },
- {
- text: 'Meeting Room 201',
- value: 2,
- color: '#FF7272',
- },
- ],
- field: 'roomId',
- valueField: 'value',
- textField: 'text',
- colorField: 'color',
- },
- {
- name: 'Person',
- data: [
- {
- text: (
-
- Peter{' '}
-
-
- ),
- value: 1,
- },
- {
- text: 'Alex',
- value: 2,
- },
- ],
- field: 'personId',
- valueField: 'value',
- textField: 'text',
- colorField: 'color',
- },
-];
-
-const App = () => {
- return (
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/scheduler/icon-in-group-header/data.js b/docs/knowledge-base/examples/scheduler/icon-in-group-header/data.js
deleted file mode 100644
index 30a1c7a3..00000000
--- a/docs/knowledge-base/examples/scheduler/icon-in-group-header/data.js
+++ /dev/null
@@ -1,30 +0,0 @@
-export const defaultDate = new Date("2011-06-09T00:00:00.000Z");
-export const data = [{
- id: 0,
- title: 'Room 1, Person 1',
- start: new Date("2011-06-09T09:00:00.000Z"),
- end: new Date("2011-06-09T11:00:00.000Z"),
- roomId: 1,
- personId: 1
-}, {
- id: 1,
- title: 'Room 1, Person 2',
- start: new Date("2011-06-09T09:00:00.000Z"),
- end: new Date("2011-06-09T11:00:00.000Z"),
- roomId: 1,
- personId: 2
-}, {
- id: 2,
- title: 'Room 2, Person 1',
- start: new Date("2011-06-09T09:00:00.000Z"),
- end: new Date("2011-06-09T11:00:00.000Z"),
- roomId: 2,
- personId: 1
-}, {
- id: 3,
- title: 'Room 2, Person 2',
- start: new Date("2011-06-09T09:00:00.000Z"),
- end: new Date("2011-06-09T11:00:00.000Z"),
- roomId: 2,
- personId: 2
-}];
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/icon-in-group-header/main.jsx b/docs/knowledge-base/examples/scheduler/icon-in-group-header/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/scheduler/icon-in-group-header/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/app.jsx b/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/app.jsx
deleted file mode 100644
index eb89460f..00000000
--- a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/app.jsx
+++ /dev/null
@@ -1,82 +0,0 @@
-import * as React from 'react';
-import {
- Scheduler,
- DayView,
- WeekView,
- WorkWeekView,
-} from '@progress/kendo-react-scheduler';
-import { guid } from '@progress/kendo-react-common';
-import { FormWithCustomEditor } from './custom-form';
-import { EditItemWithDynamicTitle } from './custom-item';
-import {
- customModelFields,
- displayDate,
- rooms,
- sampleDataWithCustomSchema,
- therapists,
-} from './data';
-const App = () => {
- const [data, setData] = React.useState(sampleDataWithCustomSchema);
- const handleDataChange = ({ created, updated, deleted }) => {
- setData((old) =>
- old
- .filter(
- (item) =>
- deleted.find(
- (current) => current.AppointmentID === item.AppointmentID
- ) === undefined
- )
- .map(
- (item) =>
- updated.find(
- (current) => current.AppointmentID === item.AppointmentID
- ) || item
- )
- .concat(
- created.map((item) =>
- Object.assign({}, item, {
- AppointmentID: guid(),
- })
- )
- )
- );
- };
- return (
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/custom-dialog.jsx b/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/custom-dialog.jsx
deleted file mode 100644
index c8701a37..00000000
--- a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/custom-dialog.jsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import * as React from 'react';
-import { Dialog } from '@progress/kendo-react-dialogs';
-export const CustomDialog = props => {
- return ;
-};
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/custom-form-editor.jsx b/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/custom-form-editor.jsx
deleted file mode 100644
index d47dddbd..00000000
--- a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/custom-form-editor.jsx
+++ /dev/null
@@ -1,92 +0,0 @@
-import * as React from 'react';
-import { FormElement, Field } from '@progress/kendo-react-form';
-import { Label, Error } from '@progress/kendo-react-labels';
-import { TextArea } from '@progress/kendo-react-inputs';
-import { DatePicker, DateTimePicker } from '@progress/kendo-react-dateinputs';
-import {
- TitleEditor,
- TreatmentEditor,
- RoomEditor,
- TherapistEditor,
-} from './editors';
-import { SchedulerFormEditor } from '@progress/kendo-react-scheduler';
-export const CustomFormEditor = (props) => {
- const fields = 'Start';
- const start = props.valueGetter(fields.start) || new Date();
- return (
-
-
-
Patient Name
-
-
- {props.errors.Patient && {props.errors.Patient} }
-
-
-
-
-
Treatment
-
-
- {props.errors.Treatment && {props.errors.Treatment} }
-
-
-
-
-
-
- );
-};
diff --git a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/custom-form.jsx b/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/custom-form.jsx
deleted file mode 100644
index eae374e5..00000000
--- a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/custom-form.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-import { SchedulerForm } from '@progress/kendo-react-scheduler';
-import { CustomFormEditor } from './custom-form-editor';
-import { CustomDialog } from './custom-dialog';
-export const FormWithCustomEditor = props => {
- const requiredValidator = React.useCallback(value => value === undefined || value === null || value === '' ? 'Field is required.' : undefined, []);
- const formValidator = (_dataItem, formValueGetter) => {
- let result = {};
- result.Patient = [requiredValidator(formValueGetter('Patient'))].filter(Boolean).reduce((current, acc) => current || acc, '');
- result.Treatment = [requiredValidator(formValueGetter('Treatment'))].filter(Boolean).reduce((current, acc) => current || acc, '');
- return result;
- };
- return ;
-};
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/custom-item.jsx b/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/custom-item.jsx
deleted file mode 100644
index 2b751431..00000000
--- a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/custom-item.jsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import * as React from 'react';
-import { SchedulerEditItem } from '@progress/kendo-react-scheduler';
-import { treatments, patients } from './data';
-export const EditItemWithDynamicTitle = props => {
- return ;
-};
-const generateTitle = dataItem => {
- const patient = patients.find(p => p.id === dataItem.Patient);
- const treatment = treatments.find(t => t.value === dataItem.Treatment);
- return `${patient && patient.name} - ${treatment && treatment.text}`;
-};
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/data.js b/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/data.js
deleted file mode 100644
index 75bc7297..00000000
--- a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/data.js
+++ /dev/null
@@ -1,180 +0,0 @@
-import { guid } from "@progress/kendo-react-common";
-export const therapists = [{
- value: 'andr',
- name: "Dr. Anderson",
- color: "#7F96FF"
-}, {
- value: 'bail',
- name: "Dr. Bailey",
- color: "#E56399"
-}, {
- value: 'burg',
- name: "Dr. Burgess",
- color: '#A6CFD5'
-}, {
- value: 'quin',
- name: "Dr. Quinn",
- color: '#320E3B'
-}];
-export const rooms = [{
- id: 1,
- title: 'Bedford'
-}, {
- id: 2,
- title: 'Sofia'
-}];
-export const treatments = [{
- value: 138,
- text: 'Vital sign'
-}, {
- value: 189,
- text: 'Blood test'
-}, {
- value: 392,
- text: 'Electrooculography(EOG)'
-}, {
- value: 491,
- text: 'Holter monitor(ECG)'
-}];
-export const patients = [{
- id: 0,
- name: 'Liam'
-}, {
- id: 1,
- name: 'Olivia'
-}, {
- id: 2,
- name: 'Finn'
-}, {
- id: 3,
- name: 'Michael'
-}, {
- id: 4,
- name: 'Michael'
-}, {
- id: 5,
- name: 'Nora'
-}];
-const baseData = [{
- "Start": "2020-06-24T08:00:00.000Z",
- "End": "2020-06-24T08:30:00.000Z",
- "isAllDay": false,
- "Room": 1,
- "Therapist": "andr",
- "Patient": 0,
- "Treatment": 138,
- "AppointmentID": "6aa39025-019a-43b6-9270-3de34b7028ef"
-}, {
- "Start": "2020-06-24T09:00:00.000Z",
- "End": "2020-06-24T09:30:00.000Z",
- "isAllDay": false,
- "Room": 2,
- "Therapist": "andr",
- "Patient": 1,
- "Treatment": 189,
- "AppointmentID": "b85d65b4-8580-49fd-bf95-7d4074d20948"
-}, {
- "Start": "2020-06-24T09:30:00.000Z",
- "End": "2020-06-24T11:45:00.000Z",
- "isAllDay": false,
- "Room": 1,
- "Therapist": "bail",
- "Patient": 3,
- "Treatment": 491,
- "AppointmentID": "bb7c5576-e6dd-49fa-ba32-bd2a8f2b81eb"
-}, {
- "Start": "2020-06-24T10:00:00.000Z",
- "End": "2020-06-24T10:45:00.000Z",
- "isAllDay": false,
- "Room": 1,
- "Therapist": "andr",
- "Patient": 5,
- "Treatment": 189,
- "AppointmentID": "e34e2cf7-b6ff-4efa-a6f0-853d642e2707"
-}, {
- "Start": "2020-06-24T08:30:00.000Z",
- "End": "2020-06-24T11:00:00.000Z",
- "isAllDay": false,
- "Room": 1,
- "Therapist": "burg",
- "Patient": 2,
- "Treatment": 392,
- "AppointmentID": "fcc66c0d-c3a3-421a-84c6-12e2f12a60e6"
-}, {
- "Start": "2020-06-24T08:00:00.000Z",
- "End": "2020-06-24T09:00:00.000Z",
- "isAllDay": false,
- "Room": 2,
- "Therapist": "bail",
- "Patient": 3,
- "Treatment": 189,
- "AppointmentID": "4c5a291e-2d7a-4c6c-8ea8-fd962f07c207"
-}, {
- "Start": "2020-06-24T11:30:00.000Z",
- "End": "2020-06-24T14:00:00.000Z",
- "isAllDay": false,
- "Room": 2,
- "Therapist": "burg",
- "Patient": 1,
- "Treatment": 392,
- "AppointmentID": "cc5902d3-47bd-4002-aca8-40022a2c5f8a"
-}, {
- "Start": "2020-06-24T12:00:00.000Z",
- "End": "2020-06-24T13:30:00.000Z",
- "isAllDay": false,
- "Room": 1,
- "Therapist": "quin",
- "Treatment": 392,
- "Patient": 5,
- "AppointmentID": "74022c9d-8f7e-435e-b24e-59db007eaf5d"
-}, {
- "Start": "2020-06-24T08:00:00.000Z",
- "End": "2020-06-24T09:40:00.000Z",
- "isAllDay": false,
- "Room": 2,
- "Therapist": "quin",
- "Patient": 5,
- "Treatment": 189,
- "AppointmentID": "053415e1-88ca-4564-90d2-8fdaaba2449d"
-}, {
- "Start": "2020-06-24T12:30:00.000Z",
- "End": "2020-06-24T13:00:00.000Z",
- "isAllDay": false,
- "Room": 2,
- "Therapist": "bail",
- "Treatment": 491,
- "Patient": 2,
- "AppointmentID": "e31b1cf3-cc2c-490d-8c5a-5106afeecbd9"
-}, {
- "Start": "2020-06-24T11:30:00.000Z",
- "End": "2020-06-24T12:00:00.000Z",
- "isAllDay": false,
- "Room": 2,
- "Therapist": "andr",
- "Treatment": 491,
- "Patient": 5,
- "AppointmentID": "501cf356-3af0-400a-9ff9-76ea7aa0d3b2"
-}];
-export const customModelFields = {
- id: 'AppointmentID',
- description: 'Note',
- start: 'Start',
- end: 'End',
- title: 'Title',
- recurrenceRule: 'RecurrenceRule',
- recurrenceId: 'RecurrenceID',
- recurrenceExceptions: 'RecurrenceException'
-};
-const currentYear = new Date().getFullYear();
-const parseAdjust = eventDate => {
- const date = new Date(eventDate);
- date.setFullYear(currentYear);
- return date;
-};
-export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
-export const sampleDataWithCustomSchema = baseData.map(dataItem => ({
- ...dataItem,
- AppointmentID: guid(),
- Start: parseAdjust(dataItem.Start),
- End: parseAdjust(dataItem.End)
-}));
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/editors.jsx b/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/editors.jsx
deleted file mode 100644
index 711dd1bc..00000000
--- a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/editors.jsx
+++ /dev/null
@@ -1,43 +0,0 @@
-import * as React from 'react';
-import { DropDownList } from '@progress/kendo-react-dropdowns';
-import { patients, treatments, rooms, therapists } from './data';
-export const TitleEditor = props => {
- const handleChange = event => {
- if (props.onChange) {
- props.onChange.call(undefined, {
- value: event.value.id
- });
- }
- };
- return p.id === props.value)} data={patients} dataItemKey={'id'} textField={'name'} />;
-};
-export const TreatmentEditor = props => {
- const handleChange = event => {
- if (props.onChange) {
- props.onChange.call(undefined, {
- value: event.value.value
- });
- }
- };
- return t.value === props.value)} data={treatments} dataItemKey={'value'} textField={'text'} />;
-};
-export const TherapistEditor = props => {
- const handleChange = event => {
- if (props.onChange) {
- props.onChange.call(undefined, {
- value: event.value.value
- });
- }
- };
- return t.value === props.value)} data={therapists} dataItemKey={'value'} textField={'name'} />;
-};
-export const RoomEditor = props => {
- const handleChange = event => {
- if (props.onChange) {
- props.onChange.call(undefined, {
- value: event.value.id
- });
- }
- };
- return r.id === props.value)} data={rooms} dataItemKey={'id'} textField={'title'} />;
-};
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/main.jsx b/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/scheduler/recurring-event-form-editor/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/scheduler/start-end-dates/app.jsx b/docs/knowledge-base/examples/scheduler/start-end-dates/app.jsx
deleted file mode 100644
index f5df0a36..00000000
--- a/docs/knowledge-base/examples/scheduler/start-end-dates/app.jsx
+++ /dev/null
@@ -1,63 +0,0 @@
-import * as React from 'react';
-import {
- Scheduler,
- AgendaView,
- TimelineView,
- DayView,
- WeekView,
- MonthView,
-} from '@progress/kendo-react-scheduler';
-import { sampleData, displayDate } from './shared-events-utc';
-
-const App = () => {
- const [start, setStart] = React.useState('');
- const [end, setEnd] = React.useState('');
- const [date, setDate] = React.useState(displayDate);
- const [view, setView] = React.useState('day');
-
- const handleDateChange = (event) => {
- setDate(event.value);
- };
-
- const handleViewChange = (event) => {
- setView(event.value);
- };
-
- React.useEffect(() => {
- if (document) {
- const allSlots = document.querySelectorAll(
- '.k-scheduler-body .k-scheduler-cell.k-slot-cell'
- );
- const firstSlot = allSlots[0];
- const lastSlot = allSlots[allSlots.length - 1];
-
- setStart(
- new Date(parseInt(firstSlot.getAttribute('data-slot-start'), 10))
- );
-
- setEnd(new Date(parseInt(lastSlot.getAttribute('data-slot-end'), 10)));
- }
- }, [date, view]);
-
- return (
-
-
start: {start.toString()}
-
end: {end.toString()}
-
-
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/scheduler/start-end-dates/main.jsx b/docs/knowledge-base/examples/scheduler/start-end-dates/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/scheduler/start-end-dates/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/shared/shared-countries.js b/docs/knowledge-base/examples/shared/shared-countries.js
deleted file mode 100644
index 4afec915..00000000
--- a/docs/knowledge-base/examples/shared/shared-countries.js
+++ /dev/null
@@ -1,56 +0,0 @@
-
-export default [
- "Select All",
- "Albania",
- "Andorra",
- "Armenia",
- "Austria",
- "Azerbaijan",
- "Belarus",
- "Belgium",
- "Bosnia & Herzegovina",
- "Bulgaria",
- "Croatia",
- "Cyprus",
- "Czech Republic",
- "Denmark",
- "Estonia",
- "Finland",
- "France",
- "Georgia",
- "Germany",
- "Greece",
- "Hungary",
- "Iceland",
- "Ireland",
- "Italy",
- "Kosovo",
- "Latvia",
- "Liechtenstein",
- "Lithuania",
- "Luxembourg",
- "Macedonia",
- "Malta",
- "Moldova",
- "Monaco",
- "Montenegro",
- "Netherlands",
- "Norway",
- "Poland",
- "Portugal",
- "Romania",
- "Russia",
- "San Marino",
- "Serbia",
- "Slovakia",
- "Slovenia",
- "Spain",
- "Sweden",
- "Switzerland",
- "Turkey",
- "Ukraine",
- "United Kingdom",
- "Vatican City"
- ];
-
-
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/shared/shared-data.js b/docs/knowledge-base/examples/shared/shared-data.js
deleted file mode 100644
index f20aa61f..00000000
--- a/docs/knowledge-base/examples/shared/shared-data.js
+++ /dev/null
@@ -1,29 +0,0 @@
-const data = [
- {
- taskID: 1,
- ownerId: 1,
- title: "Fast and furious 6"
- },
- {
- taskID: 2,
- ownerId: 3,
- title: "The Internship"
- },
- {
- taskID: 3,
- ownerId: 2,
- title: "The Perks of Being a Wallflower"
- },
- {
- taskID: 4,
- ownerId: 1,
- title: "The Help"
- },
- {
- taskID: 5,
- ownerId: 2,
- title: "Now You See Me"
- }
-];
-
-export default data;
diff --git a/docs/knowledge-base/examples/shared/shared-events-utc.js b/docs/knowledge-base/examples/shared/shared-events-utc.js
deleted file mode 100644
index 73deb2b8..00000000
--- a/docs/knowledge-base/examples/shared/shared-events-utc.js
+++ /dev/null
@@ -1,848 +0,0 @@
-
-const baseData = [
- {
- "TaskID": 4,
- "OwnerID": 2,
- "Title": "Bowling tournament",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-09T21:00:00.000Z",
- "End": "2013-06-10T00:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 5,
- "OwnerID": 2,
- "Title": "Take the dog to the vet",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-10T07:00:00.000Z",
- "End": "2013-06-10T08:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 6,
- "OwnerID": 2,
- "Title": "Call Charlie about the project",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-11T11:30:00.000Z",
- "End": "2013-06-11T13:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 7,
- "OwnerID": 3,
- "Title": "Meeting with Alex",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-12T11:00:00.000Z",
- "End": "2013-06-12T12:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 9,
- "OwnerID": 2,
- "Title": "Alex's Birthday",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-14T02:00:00.000Z",
- "End": "2013-06-14T02:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": true
- },
- {
- "TaskID": 12,
- "OwnerID": 2,
- "Title": "Car Service",
- "RoomID": 1,
- "Description": "Might come to work later!",
- "StartTimezone": null,
- "Start": "2013-06-24T08:30:00.000Z",
- "End": "2013-06-24T10:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 14,
- "OwnerID": 3,
- "RoomID": 2,
- "PersonID": 3,
- "Title": "Replace the printer on the 1st floor",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-24T10:00:00.000Z",
- "End": "2013-06-24T11:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": true
- },
- {
- "TaskID": 15,
- "OwnerID": 1,
- "Title": "Attending HR Conference",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-25T00:00:00.000Z",
- "End": "2013-06-26T00:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": true
- },
- {
- "TaskID": 16,
- "OwnerID": 1,
- "Title": "Business Lunch with Gregory Watkins",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-25T12:00:00.000Z",
- "End": "2013-06-25T13:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 17,
- "OwnerID": 1,
- "Title": "Breakfast with CFO and COO",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-27T08:30:00.000Z",
- "End": "2013-06-27T09:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 18,
- "OwnerID": 1,
- "Title": "Job Interview - Mathew Stevens",
- "Description": "Junior Researcher",
- "StartTimezone": null,
- "Start": "2013-06-27T10:00:00.000Z",
- "End": "2013-06-27T11:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 19,
- "OwnerID": 1,
- "Title": "Review CVs with Tim",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-27T11:00:00.000Z",
- "End": "2013-06-27T11:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 20,
- "OwnerID": 1,
- "Title": "Lunch with Monica",
- "Description": "Discuss the Employee handbook",
- "StartTimezone": null,
- "Start": "2013-06-27T12:00:00.000Z",
- "End": "2013-06-27T13:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 21,
- "OwnerID": 1,
- "Title": "Job Interview - John Stewart",
- "Description": "Accountant",
- "StartTimezone": null,
- "Start": "2013-06-27T14:00:00.000Z",
- "End": "2013-06-27T15:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 22,
- "OwnerID": 1,
- "Title": "Job Interview - Mary Smith",
- "Description": "Accountant",
- "StartTimezone": null,
- "Start": "2013-06-27T15:30:00.000Z",
- "End": "2013-06-27T16:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 24,
- "OwnerID": 3,
- "Title": "Register new Access Cards",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-24T12:00:00.000Z",
- "End": "2013-06-24T12:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": true
- },
- {
- "TaskID": 25,
- "OwnerID": 1,
- "Title": "HR Lecture",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-04T19:00:00.000Z",
- "End": "2013-06-04T21:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": "FREQ=WEEKLY;BYDAY=TU,TH",
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 26,
- "OwnerID": 1,
- "Title": "Dentist",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-28T08:00:00.000Z",
- "End": "2013-06-28T09:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 27,
- "OwnerID": 1,
- "Title": "Job Interview - Laura Bailey",
- "Description": "Helpdesk",
- "StartTimezone": null,
- "Start": "2013-06-28T09:30:00.000Z",
- "End": "2013-06-28T10:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 28,
- "OwnerID": 1,
- "Title": "Job Interview - Jenny Baxter",
- "Description": "Helpdesk",
- "StartTimezone": null,
- "Start": "2013-06-28T11:00:00.000Z",
- "End": "2013-06-28T12:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 31,
- "OwnerID": 1,
- "Title": "Team building prep tasks",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-28T14:00:00.000Z",
- "End": "2013-06-28T17:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 32,
- "OwnerID": 2,
- "RoomID": 2,
- "Title": "Job Interview - Bernard Atkins",
- "Description": "Helpdesk",
- "StartTimezone": null,
- "Start": "2013-06-24T13:30:00.000Z",
- "End": "2013-06-24T14:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 34,
- "OwnerID": 1,
- "Title": "Review Job Applications",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-24T15:00:00.000Z",
- "End": "2013-06-24T17:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 35,
- "OwnerID": 1,
- "Title": "Grand Canyon tour",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-23T00:00:00.000Z",
- "End": "2013-06-23T00:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": true
- },
- {
- "TaskID": 40,
- "OwnerID": 3,
- "Title": "Install new laptops in conference rooms",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-24T13:30:00.000Z",
- "End": "2013-06-24T15:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 66,
- "OwnerID": 3,
- "Title": "Bob's Birthday",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-29T08:00:00.000Z",
- "End": "2013-06-29T06:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": true
- },
- {
- "TaskID": 68,
- "OwnerID": 1,
- "RoomID": 2,
- "Title": "Breakfast with Tom",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-24T09:45:00.000Z",
- "End": "2013-06-24T11:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 69,
- "OwnerID": 2,
- "Title": "Team planning meeting",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-24T10:00:00.000Z",
- "End": "2013-06-24T12:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": true
- },
- {
- "TaskID": 70,
- "OwnerID": 2,
- "Title": "Support Phone Call",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-24T16:00:00.000Z",
- "End": "2013-06-24T16:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": true
- },
- {
- "TaskID": 71,
- "OwnerID": 2,
- "Title": "Business breakfast with Caroline",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-25T09:00:00.000Z",
- "End": "2013-06-25T10:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 72,
- "OwnerID": 2,
- "Title": "Discuss preojects' deadlines",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-25T11:00:00.000Z",
- "End": "2013-06-25T11:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 73,
- "OwnerID": 2,
- "Title": "Support Meeting",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-25T15:00:00.000Z",
- "End": "2013-06-25T16:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 74,
- "OwnerID": 2,
- "Title": "Dine with Mathew",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-25T18:30:00.000Z",
- "End": "2013-06-25T20:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 79,
- "OwnerID": 2,
- "Title": "Banking",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-26T09:00:00.000Z",
- "End": "2013-06-26T10:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 80,
- "OwnerID": 3,
- "Title": "Software updates",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-25T10:00:00.000Z",
- "End": "2013-06-25T12:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 81,
- "OwnerID": 3,
- "Title": "UPS maintenance",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-25T16:30:00.000Z",
- "End": "2013-06-25T18:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 82,
- "OwnerID": 2,
- "Title": "Support Call",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-26T11:30:00.000Z",
- "End": "2013-06-26T12:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 83,
- "OwnerID": 3,
- "Title": "Phone Sync with NY office ",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-26T13:30:00.000Z",
- "End": "2013-06-26T14:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 84,
- "OwnerID": 3,
- "Title": "Phone Sync with Boston Office",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-26T15:00:00.000Z",
- "End": "2013-06-26T16:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 85,
- "OwnerID": 3,
- "Title": "Server maintenance",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-26T18:30:00.000Z",
- "End": "2013-06-26T21:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": true
- },
- {
- "TaskID": 86,
- "OwnerID": 2,
- "Title": "Status meeting",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-28T13:30:00.000Z",
- "End": "2013-06-28T15:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 87,
- "OwnerID": 3,
- "Title": "Helpdesk status meeting",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-27T10:30:00.000Z",
- "End": "2013-06-27T11:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 88,
- "OwnerID": 2,
- "Title": "Business Lunch",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-27T12:00:00.000Z",
- "End": "2013-06-27T13:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 89,
- "OwnerID": 3,
- "Title": "Employee database update",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-27T14:00:00.000Z",
- "End": "2013-06-27T15:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 90,
- "OwnerID": 3,
- "Title": "Website upload",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-27T07:30:00.000Z",
- "End": "2013-06-27T08:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 91,
- "OwnerID": 2,
- "Title": "Meeting with marketing guys",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-27T17:00:00.000Z",
- "End": "2013-06-27T18:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 92,
- "OwnerID": 3,
- "Title": "Meeting with Internet provider",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-28T10:30:00.000Z",
- "End": "2013-06-28T11:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 93,
- "OwnerID": 3,
- "Title": "Bob's Birthday Party",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-29T20:00:00.000Z",
- "End": "2013-06-29T23:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": null,
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 95,
- "OwnerID": 2,
- "Title": "Dance Practice",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-03T18:30:00.000Z",
- "End": "2013-06-03T20:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": "FREQ=WEEKLY;BYDAY=MO,WE",
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 114,
- "OwnerID": 3,
- "Title": "Software updates",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-04T09:00:00.000Z",
- "End": "2013-06-04T12:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": "",
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 115,
- "OwnerID": 1,
- "Title": "Breakfast at Starbucks",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-04T08:00:00.000Z",
- "End": "2013-06-04T09:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": "",
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 116,
- "OwnerID": 2,
- "Title": "Performance review",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-04T14:00:00.000Z",
- "End": "2013-06-04T17:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": "",
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 118,
- "OwnerID": 1,
- "Title": "HR seminar preparation",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-05T10:00:00.000Z",
- "End": "2013-06-05T12:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": "",
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 119,
- "OwnerID": 3,
- "Title": "Helpdesk weekly meeting",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-05T15:00:00.000Z",
- "End": "2013-06-05T16:00:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": "FREQ=WEEKLY;BYDAY=WE",
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- },
- {
- "TaskID": 120,
- "OwnerID": 3,
- "Title": "Website upload",
- "Description": "",
- "StartTimezone": null,
- "Start": "2013-06-07T07:00:00.000Z",
- "End": "2013-06-07T08:30:00.000Z",
- "EndTimezone": null,
- "RecurrenceRule": "",
- "RecurrenceID": null,
- "RecurrenceException": null,
- "isAllDay": false
- }
-];
-
-export const customModelFields = {
- id: 'TaskID',
- title: 'Title',
- description: 'Description',
- start: 'Start',
- end: 'End',
- recurrenceRule: 'RecurrenceRule',
- recurrenceId: 'RecurrenceID',
- recurrenceExceptions: 'RecurrenceException',
-};
-
-const currentYear = new Date().getFullYear();
-const parseAdjust = (eventDate) => {
- const date = new Date(eventDate);
- date.setFullYear(currentYear);
- return date;
-};
-
-const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
-
-export const displayDate = new Date(Date.UTC(currentYear, 5, 24));
-
-export const sampleData = baseData.map(dataItem => (
- {
- id: dataItem.TaskID,
- start: parseAdjust(dataItem.Start),
- startTimezone: dataItem.startTimezone,
- end: parseAdjust(dataItem.End),
- endTimezone: dataItem.endTimezone,
- isAllDay: dataItem.isAllDay,
- title: dataItem.Title,
- description: dataItem.Description,
- recurrenceRule: dataItem.RecurrenceRule,
- recurrenceId: dataItem.RecurrenceID,
- recurrenceExceptions: dataItem.RecurrenceException,
-
- roomId: dataItem.RoomID,
- ownerID: dataItem.OwnerID,
- personId: dataItem.OwnerID
- }
-));
-
-export const sampleDataWithResources = baseData.map(dataItem => (
- {
- id: dataItem.TaskID,
- start: parseAdjust(dataItem.Start),
- startTimezone: dataItem.startTimezone,
- end: parseAdjust(dataItem.End),
- endTimezone: dataItem.endTimezone,
- isAllDay: dataItem.isAllDay,
- title: dataItem.Title,
- description: dataItem.Description,
- recurrenceRule: dataItem.RecurrenceRule,
- recurrenceId: dataItem.RecurrenceID,
- recurrenceExceptions: dataItem.RecurrenceException,
- roomId: randomInt(1, 2),
- personId: randomInt(1, 2),
- }
-));
-
-export const sampleDataWithCustomSchema = baseData.map(dataItem => (
- {
- ...dataItem,
- Start: parseAdjust(dataItem.Start),
- End: parseAdjust(dataItem.End),
- PersonIDs: randomInt(1, 2),
- RoomID: randomInt(1, 2),
- }
-));
diff --git a/docs/knowledge-base/examples/shared/shared-products-loader.jsx b/docs/knowledge-base/examples/shared/shared-products-loader.jsx
deleted file mode 100644
index 0b119e54..00000000
--- a/docs/knowledge-base/examples/shared/shared-products-loader.jsx
+++ /dev/null
@@ -1,54 +0,0 @@
-
-import * as React from 'react';
-
-import { toODataString } from '@progress/kendo-data-query';
-
-export class ProductsLoader extends React.Component {
- baseUrl = 'https://demos.telerik.com/kendo-ui/service-v4/odata/Products?$count=true&';
- init = { method: 'GET', accept: 'application/json', headers: {} };
-
- lastSuccess = '';
- pending = '';
-
- requestDataIfNeeded = () => {
- if (this.pending || toODataString(this.props.dataState) === this.lastSuccess) {
- return;
- }
- this.pending = toODataString(this.props.dataState);
- fetch(this.baseUrl + this.pending, this.init)
- .then(response => response.json())
- .then(json => {
- this.lastSuccess = this.pending;
- this.pending = '';
- if (toODataString(this.props.dataState) === this.lastSuccess) {
- this.props.onDataReceived.call(undefined, {
- data: json.value,
- total: json['@odata.count']
- });
- } else {
- this.requestDataIfNeeded();
- }
- });
- }
-
- render() {
- this.requestDataIfNeeded();
- return this.pending && ;
- }
-}
-
-
-class LoadingPanel extends React.Component {
- render() {
- const loadingPanel = (
-
- );
-
- const gridContent = document && document.querySelector('.k-grid-content');
- return gridContent ? ReactDOM.createPortal(loadingPanel, gridContent) : loadingPanel;
- }
-}
diff --git a/docs/knowledge-base/examples/shared/shared-products-with-sections.json b/docs/knowledge-base/examples/shared/shared-products-with-sections.json
deleted file mode 100644
index 5f78efd2..00000000
--- a/docs/knowledge-base/examples/shared/shared-products-with-sections.json
+++ /dev/null
@@ -1,1360 +0,0 @@
-[
- {
- "ProductName": "Beverages",
- "UnitPrice": 37.979166666666664,
- "UnitsInStock": 559,
- "locked": true
- },
- {
- "ProductID": 1,
- "ProductName": "Chai",
- "SupplierID": 1,
- "CategoryID": 1,
- "QuantityPerUnit": "10 boxes x 20 bags",
- "UnitPrice": 18,
- "UnitsInStock": 39,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 2,
- "ProductName": "Chang",
- "SupplierID": 1,
- "CategoryID": 1,
- "QuantityPerUnit": "24 - 12 oz bottles",
- "UnitPrice": 19,
- "UnitsInStock": 17,
- "UnitsOnOrder": 40,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 24,
- "ProductName": "Guaraná Fantástica",
- "SupplierID": 10,
- "CategoryID": 1,
- "QuantityPerUnit": "12 - 355 ml cans",
- "UnitPrice": 4.5,
- "UnitsInStock": 20,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 34,
- "ProductName": "Sasquatch Ale",
- "SupplierID": 16,
- "CategoryID": 1,
- "QuantityPerUnit": "24 - 12 oz bottles",
- "UnitPrice": 14,
- "UnitsInStock": 111,
- "UnitsOnOrder": 0,
- "ReorderLevel": 15,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 35,
- "ProductName": "Steeleye Stout",
- "SupplierID": 16,
- "CategoryID": 1,
- "QuantityPerUnit": "24 - 12 oz bottles",
- "UnitPrice": 18,
- "UnitsInStock": 20,
- "UnitsOnOrder": 0,
- "ReorderLevel": 15,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 38,
- "ProductName": "Côte de Blaye",
- "SupplierID": 18,
- "CategoryID": 1,
- "QuantityPerUnit": "12 - 75 cl bottles",
- "UnitPrice": 263.5,
- "UnitsInStock": 17,
- "UnitsOnOrder": 0,
- "ReorderLevel": 15,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 39,
- "ProductName": "Chartreuse verte",
- "SupplierID": 18,
- "CategoryID": 1,
- "QuantityPerUnit": "750 cc per bottle",
- "UnitPrice": 18,
- "UnitsInStock": 69,
- "UnitsOnOrder": 0,
- "ReorderLevel": 5,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 43,
- "ProductName": "Ipoh Coffee",
- "SupplierID": 20,
- "CategoryID": 1,
- "QuantityPerUnit": "16 - 500 g tins",
- "UnitPrice": 46,
- "UnitsInStock": 17,
- "UnitsOnOrder": 10,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 67,
- "ProductName": "Laughing Lumberjack Lager",
- "SupplierID": 16,
- "CategoryID": 1,
- "QuantityPerUnit": "24 - 12 oz bottles",
- "UnitPrice": 14,
- "UnitsInStock": 52,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 70,
- "ProductName": "Outback Lager",
- "SupplierID": 7,
- "CategoryID": 1,
- "QuantityPerUnit": "24 - 355 ml bottles",
- "UnitPrice": 15,
- "UnitsInStock": 15,
- "UnitsOnOrder": 10,
- "ReorderLevel": 30,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 75,
- "ProductName": "Rhönbräu Klosterbier",
- "SupplierID": 12,
- "CategoryID": 1,
- "QuantityPerUnit": "24 - 0.5 l bottles",
- "UnitPrice": 7.75,
- "UnitsInStock": 125,
- "UnitsOnOrder": 0,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductID": 76,
- "ProductName": "Lakkalikööri",
- "SupplierID": 23,
- "CategoryID": 1,
- "QuantityPerUnit": "500 ml",
- "UnitPrice": 18,
- "UnitsInStock": 57,
- "UnitsOnOrder": 0,
- "ReorderLevel": 20,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- }
- },
- {
- "ProductName": "Condiments",
- "UnitPrice": 23.0625,
- "UnitsInStock": 507,
- "locked": true
- },
- {
- "ProductID": 3,
- "ProductName": "Aniseed Syrup",
- "SupplierID": 1,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 550 ml bottles",
- "UnitPrice": 10,
- "UnitsInStock": 13,
- "UnitsOnOrder": 70,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 4,
- "ProductName": "Chef Anton's Cajun Seasoning",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "48 - 6 oz jars",
- "UnitPrice": 22,
- "UnitsInStock": 53,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 5,
- "ProductName": "Chef Anton's Gumbo Mix",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "36 boxes",
- "UnitPrice": 21.35,
- "UnitsInStock": 0,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 6,
- "ProductName": "Grandma's Boysenberry Spread",
- "SupplierID": 3,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 8 oz jars",
- "UnitPrice": 25,
- "UnitsInStock": 120,
- "UnitsOnOrder": 0,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 8,
- "ProductName": "Northwoods Cranberry Sauce",
- "SupplierID": 3,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 12 oz jars",
- "UnitPrice": 40,
- "UnitsInStock": 6,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 15,
- "ProductName": "Genen Shouyu",
- "SupplierID": 6,
- "CategoryID": 2,
- "QuantityPerUnit": "24 - 250 ml bottles",
- "UnitPrice": 15.5,
- "UnitsInStock": 39,
- "UnitsOnOrder": 0,
- "ReorderLevel": 5,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 44,
- "ProductName": "Gula Malacca",
- "SupplierID": 20,
- "CategoryID": 2,
- "QuantityPerUnit": "20 - 2 kg bags",
- "UnitPrice": 19.45,
- "UnitsInStock": 27,
- "UnitsOnOrder": 0,
- "ReorderLevel": 15,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 61,
- "ProductName": "Sirop d'érable",
- "SupplierID": 29,
- "CategoryID": 2,
- "QuantityPerUnit": "24 - 500 ml bottles",
- "UnitPrice": 28.5,
- "UnitsInStock": 113,
- "UnitsOnOrder": 0,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 63,
- "ProductName": "Vegie-spread",
- "SupplierID": 7,
- "CategoryID": 2,
- "QuantityPerUnit": "15 - 625 g jars",
- "UnitPrice": 43.9,
- "UnitsInStock": 24,
- "UnitsOnOrder": 0,
- "ReorderLevel": 5,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 65,
- "ProductName": "Louisiana Fiery Hot Pepper Sauce",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "32 - 8 oz bottles",
- "UnitPrice": 21.05,
- "UnitsInStock": 76,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 66,
- "ProductName": "Louisiana Hot Spiced Okra",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "24 - 8 oz jars",
- "UnitPrice": 17,
- "UnitsInStock": 4,
- "UnitsOnOrder": 100,
- "ReorderLevel": 20,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductID": 77,
- "ProductName": "Original Frankfurter grüne Soße",
- "SupplierID": 12,
- "CategoryID": 2,
- "QuantityPerUnit": "12 boxes",
- "UnitPrice": 13,
- "UnitsInStock": 32,
- "UnitsOnOrder": 0,
- "ReorderLevel": 15,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
- },
- {
- "ProductName": "Confections",
- "UnitPrice": 25.16,
- "UnitsInStock": 386,
- "locked": true
- },
- {
- "ProductID": 16,
- "ProductName": "Pavlova",
- "SupplierID": 7,
- "CategoryID": 3,
- "QuantityPerUnit": "32 - 500 g boxes",
- "UnitPrice": 17.45,
- "UnitsInStock": 29,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 3,
- "CategoryName": "Confections",
- "Description": "Desserts, candies, and sweet breads"
- }
- },
- {
- "ProductID": 19,
- "ProductName": "Teatime Chocolate Biscuits",
- "SupplierID": 8,
- "CategoryID": 3,
- "QuantityPerUnit": "10 boxes x 12 pieces",
- "UnitPrice": 9.2,
- "UnitsInStock": 25,
- "UnitsOnOrder": 0,
- "ReorderLevel": 5,
- "Discontinued": false,
- "Category": {
- "CategoryID": 3,
- "CategoryName": "Confections",
- "Description": "Desserts, candies, and sweet breads"
- }
- },
- {
- "ProductID": 20,
- "ProductName": "Sir Rodney's Marmalade",
- "SupplierID": 8,
- "CategoryID": 3,
- "QuantityPerUnit": "30 gift boxes",
- "UnitPrice": 81,
- "UnitsInStock": 40,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 3,
- "CategoryName": "Confections",
- "Description": "Desserts, candies, and sweet breads"
- }
- },
- {
- "ProductID": 21,
- "ProductName": "Sir Rodney's Scones",
- "SupplierID": 8,
- "CategoryID": 3,
- "QuantityPerUnit": "24 pkgs. x 4 pieces",
- "UnitPrice": 10,
- "UnitsInStock": 3,
- "UnitsOnOrder": 40,
- "ReorderLevel": 5,
- "Discontinued": false,
- "Category": {
- "CategoryID": 3,
- "CategoryName": "Confections",
- "Description": "Desserts, candies, and sweet breads"
- }
- },
- {
- "ProductID": 25,
- "ProductName": "NuNuCa Nuß-Nougat-Creme",
- "SupplierID": 11,
- "CategoryID": 3,
- "QuantityPerUnit": "20 - 450 g glasses",
- "UnitPrice": 14,
- "UnitsInStock": 76,
- "UnitsOnOrder": 0,
- "ReorderLevel": 30,
- "Discontinued": false,
- "Category": {
- "CategoryID": 3,
- "CategoryName": "Confections",
- "Description": "Desserts, candies, and sweet breads"
- }
- },
- {
- "ProductID": 26,
- "ProductName": "Gumbär Gummibärchen",
- "SupplierID": 11,
- "CategoryID": 3,
- "QuantityPerUnit": "100 - 250 g bags",
- "UnitPrice": 31.23,
- "UnitsInStock": 15,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 3,
- "CategoryName": "Confections",
- "Description": "Desserts, candies, and sweet breads"
- }
- },
- {
- "ProductID": 27,
- "ProductName": "Schoggi Schokolade",
- "SupplierID": 11,
- "CategoryID": 3,
- "QuantityPerUnit": "100 - 100 g pieces",
- "UnitPrice": 43.9,
- "UnitsInStock": 49,
- "UnitsOnOrder": 0,
- "ReorderLevel": 30,
- "Discontinued": false,
- "Category": {
- "CategoryID": 3,
- "CategoryName": "Confections",
- "Description": "Desserts, candies, and sweet breads"
- }
- },
- {
- "ProductID": 47,
- "ProductName": "Zaanse koeken",
- "SupplierID": 22,
- "CategoryID": 3,
- "QuantityPerUnit": "10 - 4 oz boxes",
- "UnitPrice": 9.5,
- "UnitsInStock": 36,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 3,
- "CategoryName": "Confections",
- "Description": "Desserts, candies, and sweet breads"
- }
- },
- {
- "ProductID": 48,
- "ProductName": "Chocolade",
- "SupplierID": 22,
- "CategoryID": 3,
- "QuantityPerUnit": "10 pkgs.",
- "UnitPrice": 12.75,
- "UnitsInStock": 15,
- "UnitsOnOrder": 70,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 3,
- "CategoryName": "Confections",
- "Description": "Desserts, candies, and sweet breads"
- }
- },
- {
- "ProductID": 49,
- "ProductName": "Maxilaku",
- "SupplierID": 23,
- "CategoryID": 3,
- "QuantityPerUnit": "24 - 50 g pkgs.",
- "UnitPrice": 20,
- "UnitsInStock": 10,
- "UnitsOnOrder": 60,
- "ReorderLevel": 15,
- "Discontinued": false,
- "Category": {
- "CategoryID": 3,
- "CategoryName": "Confections",
- "Description": "Desserts, candies, and sweet breads"
- }
- },
- {
- "ProductID": 50,
- "ProductName": "Valkoinen suklaa",
- "SupplierID": 23,
- "CategoryID": 3,
- "QuantityPerUnit": "12 - 100 g bars",
- "UnitPrice": 16.25,
- "UnitsInStock": 65,
- "UnitsOnOrder": 0,
- "ReorderLevel": 30,
- "Discontinued": false,
- "Category": {
- "CategoryID": 3,
- "CategoryName": "Confections",
- "Description": "Desserts, candies, and sweet breads"
- }
- },
- {
- "ProductID": 62,
- "ProductName": "Tarte au sucre",
- "SupplierID": 29,
- "CategoryID": 3,
- "QuantityPerUnit": "48 pies",
- "UnitPrice": 49.3,
- "UnitsInStock": 17,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 3,
- "CategoryName": "Confections",
- "Description": "Desserts, candies, and sweet breads"
- }
- },
- {
- "ProductID": 68,
- "ProductName": "Scottish Longbreads",
- "SupplierID": 8,
- "CategoryID": 3,
- "QuantityPerUnit": "10 boxes x 8 pieces",
- "UnitPrice": 12.5,
- "UnitsInStock": 6,
- "UnitsOnOrder": 10,
- "ReorderLevel": 15,
- "Discontinued": false,
- "Category": {
- "CategoryID": 3,
- "CategoryName": "Confections",
- "Description": "Desserts, candies, and sweet breads"
- }
- },
- {
- "ProductName": "Dairy Products",
- "UnitPrice": 28.73,
- "UnitsInStock": 393,
- "locked": true
- },
- {
- "ProductID": 11,
- "ProductName": "Queso Cabrales",
- "SupplierID": 5,
- "CategoryID": 4,
- "QuantityPerUnit": "1 kg pkg.",
- "UnitPrice": 21,
- "UnitsInStock": 22,
- "UnitsOnOrder": 30,
- "ReorderLevel": 30,
- "Discontinued": false,
- "Category": {
- "CategoryID": 4,
- "CategoryName": "Dairy Products",
- "Description": "Cheeses"
- }
- },
- {
- "ProductID": 12,
- "ProductName": "Queso Manchego La Pastora",
- "SupplierID": 5,
- "CategoryID": 4,
- "QuantityPerUnit": "10 - 500 g pkgs.",
- "UnitPrice": 38,
- "UnitsInStock": 86,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 4,
- "CategoryName": "Dairy Products",
- "Description": "Cheeses"
- }
- },
- {
- "ProductID": 31,
- "ProductName": "Gorgonzola Telino",
- "SupplierID": 14,
- "CategoryID": 4,
- "QuantityPerUnit": "12 - 100 g pkgs",
- "UnitPrice": 12.5,
- "UnitsInStock": 0,
- "UnitsOnOrder": 70,
- "ReorderLevel": 20,
- "Discontinued": false,
- "Category": {
- "CategoryID": 4,
- "CategoryName": "Dairy Products",
- "Description": "Cheeses"
- }
- },
- {
- "ProductID": 32,
- "ProductName": "Mascarpone Fabioli",
- "SupplierID": 14,
- "CategoryID": 4,
- "QuantityPerUnit": "24 - 200 g pkgs.",
- "UnitPrice": 32,
- "UnitsInStock": 9,
- "UnitsOnOrder": 40,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 4,
- "CategoryName": "Dairy Products",
- "Description": "Cheeses"
- }
- },
- {
- "ProductID": 33,
- "ProductName": "Geitost",
- "SupplierID": 15,
- "CategoryID": 4,
- "QuantityPerUnit": "500 g",
- "UnitPrice": 2.5,
- "UnitsInStock": 112,
- "UnitsOnOrder": 0,
- "ReorderLevel": 20,
- "Discontinued": false,
- "Category": {
- "CategoryID": 4,
- "CategoryName": "Dairy Products",
- "Description": "Cheeses"
- }
- },
- {
- "ProductID": 59,
- "ProductName": "Raclette Courdavault",
- "SupplierID": 28,
- "CategoryID": 4,
- "QuantityPerUnit": "5 kg pkg.",
- "UnitPrice": 55,
- "UnitsInStock": 79,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 4,
- "CategoryName": "Dairy Products",
- "Description": "Cheeses"
- }
- },
- {
- "ProductID": 60,
- "ProductName": "Camembert Pierrot",
- "SupplierID": 28,
- "CategoryID": 4,
- "QuantityPerUnit": "15 - 300 g rounds",
- "UnitPrice": 34,
- "UnitsInStock": 19,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 4,
- "CategoryName": "Dairy Products",
- "Description": "Cheeses"
- }
- },
- {
- "ProductID": 69,
- "ProductName": "Gudbrandsdalsost",
- "SupplierID": 15,
- "CategoryID": 4,
- "QuantityPerUnit": "10 kg pkg.",
- "UnitPrice": 36,
- "UnitsInStock": 26,
- "UnitsOnOrder": 0,
- "ReorderLevel": 15,
- "Discontinued": false,
- "Category": {
- "CategoryID": 4,
- "CategoryName": "Dairy Products",
- "Description": "Cheeses"
- }
- },
- {
- "ProductID": 71,
- "ProductName": "Flotemysost",
- "SupplierID": 15,
- "CategoryID": 4,
- "QuantityPerUnit": "10 - 500 g pkgs.",
- "UnitPrice": 21.5,
- "UnitsInStock": 26,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 4,
- "CategoryName": "Dairy Products",
- "Description": "Cheeses"
- }
- },
- {
- "ProductID": 72,
- "ProductName": "Mozzarella di Giovanni",
- "SupplierID": 14,
- "CategoryID": 4,
- "QuantityPerUnit": "24 - 200 g pkgs.",
- "UnitPrice": 34.8,
- "UnitsInStock": 14,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 4,
- "CategoryName": "Dairy Products",
- "Description": "Cheeses"
- }
- },
- {
- "ProductName": "Grains/Cereals",
- "UnitPrice": 20.25,
- "UnitsInStock": 308,
- "locked": true
- },
- {
- "ProductID": 22,
- "ProductName": "Gustaf's Knäckebröd",
- "SupplierID": 9,
- "CategoryID": 5,
- "QuantityPerUnit": "24 - 500 g pkgs.",
- "UnitPrice": 21,
- "UnitsInStock": 104,
- "UnitsOnOrder": 0,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 5,
- "CategoryName": "Grains/Cereals",
- "Description": "Breads, crackers, pasta, and cereal"
- }
- },
- {
- "ProductID": 23,
- "ProductName": "Tunnbröd",
- "SupplierID": 9,
- "CategoryID": 5,
- "QuantityPerUnit": "12 - 250 g pkgs.",
- "UnitPrice": 9,
- "UnitsInStock": 61,
- "UnitsOnOrder": 0,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 5,
- "CategoryName": "Grains/Cereals",
- "Description": "Breads, crackers, pasta, and cereal"
- }
- },
- {
- "ProductID": 42,
- "ProductName": "Singaporean Hokkien Fried Mee",
- "SupplierID": 20,
- "CategoryID": 5,
- "QuantityPerUnit": "32 - 1 kg pkgs.",
- "UnitPrice": 14,
- "UnitsInStock": 26,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 5,
- "CategoryName": "Grains/Cereals",
- "Description": "Breads, crackers, pasta, and cereal"
- }
- },
- {
- "ProductID": 52,
- "ProductName": "Filo Mix",
- "SupplierID": 24,
- "CategoryID": 5,
- "QuantityPerUnit": "16 - 2 kg boxes",
- "UnitPrice": 7,
- "UnitsInStock": 38,
- "UnitsOnOrder": 0,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 5,
- "CategoryName": "Grains/Cereals",
- "Description": "Breads, crackers, pasta, and cereal"
- }
- },
- {
- "ProductID": 56,
- "ProductName": "Gnocchi di nonna Alice",
- "SupplierID": 26,
- "CategoryID": 5,
- "QuantityPerUnit": "24 - 250 g pkgs.",
- "UnitPrice": 38,
- "UnitsInStock": 21,
- "UnitsOnOrder": 10,
- "ReorderLevel": 30,
- "Discontinued": false,
- "Category": {
- "CategoryID": 5,
- "CategoryName": "Grains/Cereals",
- "Description": "Breads, crackers, pasta, and cereal"
- }
- },
- {
- "ProductID": 57,
- "ProductName": "Ravioli Angelo",
- "SupplierID": 26,
- "CategoryID": 5,
- "QuantityPerUnit": "24 - 250 g pkgs.",
- "UnitPrice": 19.5,
- "UnitsInStock": 36,
- "UnitsOnOrder": 0,
- "ReorderLevel": 20,
- "Discontinued": false,
- "Category": {
- "CategoryID": 5,
- "CategoryName": "Grains/Cereals",
- "Description": "Breads, crackers, pasta, and cereal"
- }
- },
- {
- "ProductID": 64,
- "ProductName": "Wimmers gute Semmelknödel",
- "SupplierID": 12,
- "CategoryID": 5,
- "QuantityPerUnit": "20 bags x 4 pieces",
- "UnitPrice": 33.25,
- "UnitsInStock": 22,
- "UnitsOnOrder": 80,
- "ReorderLevel": 30,
- "Discontinued": false,
- "Category": {
- "CategoryID": 5,
- "CategoryName": "Grains/Cereals",
- "Description": "Breads, crackers, pasta, and cereal"
- }
- },
- {
- "ProductName": "Meat/Poultry",
- "UnitPrice": 54.00666666666667,
- "UnitsInStock": 165,
- "locked": true
- },
- {
- "ProductID": 9,
- "ProductName": "Mishi Kobe Niku",
- "SupplierID": 4,
- "CategoryID": 6,
- "QuantityPerUnit": "18 - 500 g pkgs.",
- "UnitPrice": 97,
- "UnitsInStock": 29,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 6,
- "CategoryName": "Meat/Poultry",
- "Description": "Prepared meats"
- }
- },
- {
- "ProductID": 17,
- "ProductName": "Alice Mutton",
- "SupplierID": 7,
- "CategoryID": 6,
- "QuantityPerUnit": "20 - 1 kg tins",
- "UnitPrice": 39,
- "UnitsInStock": 0,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 6,
- "CategoryName": "Meat/Poultry",
- "Description": "Prepared meats"
- }
- },
- {
- "ProductID": 29,
- "ProductName": "Thüringer Rostbratwurst",
- "SupplierID": 12,
- "CategoryID": 6,
- "QuantityPerUnit": "50 bags x 30 sausgs.",
- "UnitPrice": 123.79,
- "UnitsInStock": 0,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 6,
- "CategoryName": "Meat/Poultry",
- "Description": "Prepared meats"
- }
- },
- {
- "ProductID": 53,
- "ProductName": "Perth Pasties",
- "SupplierID": 24,
- "CategoryID": 6,
- "QuantityPerUnit": "48 pieces",
- "UnitPrice": 32.8,
- "UnitsInStock": 0,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 6,
- "CategoryName": "Meat/Poultry",
- "Description": "Prepared meats"
- }
- },
- {
- "ProductID": 54,
- "ProductName": "Tourtière",
- "SupplierID": 25,
- "CategoryID": 6,
- "QuantityPerUnit": "16 pies",
- "UnitPrice": 7.45,
- "UnitsInStock": 21,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 6,
- "CategoryName": "Meat/Poultry",
- "Description": "Prepared meats"
- }
- },
- {
- "ProductID": 55,
- "ProductName": "Pâté chinois",
- "SupplierID": 25,
- "CategoryID": 6,
- "QuantityPerUnit": "24 boxes x 2 pies",
- "UnitPrice": 24,
- "UnitsInStock": 115,
- "UnitsOnOrder": 0,
- "ReorderLevel": 20,
- "Discontinued": false,
- "Category": {
- "CategoryID": 6,
- "CategoryName": "Meat/Poultry",
- "Description": "Prepared meats"
- }
- },
- {
- "ProductName": "Produce",
- "UnitPrice": 32.37,
- "UnitsInStock": 100,
- "locked": true
- },
- {
- "ProductID": 7,
- "ProductName": "Uncle Bob's Organic Dried Pears",
- "SupplierID": 3,
- "CategoryID": 7,
- "QuantityPerUnit": "12 - 1 lb pkgs.",
- "UnitPrice": 30,
- "UnitsInStock": 15,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 7,
- "CategoryName": "Produce",
- "Description": "Dried fruit and bean curd"
- }
- },
- {
- "ProductID": 14,
- "ProductName": "Tofu",
- "SupplierID": 6,
- "CategoryID": 7,
- "QuantityPerUnit": "40 - 100 g pkgs.",
- "UnitPrice": 23.25,
- "UnitsInStock": 35,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 7,
- "CategoryName": "Produce",
- "Description": "Dried fruit and bean curd"
- }
- },
- {
- "ProductID": 28,
- "ProductName": "Rössle Sauerkraut",
- "SupplierID": 12,
- "CategoryID": 7,
- "QuantityPerUnit": "25 - 825 g cans",
- "UnitPrice": 45.6,
- "UnitsInStock": 26,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 7,
- "CategoryName": "Produce",
- "Description": "Dried fruit and bean curd"
- }
- },
- {
- "ProductID": 51,
- "ProductName": "Manjimup Dried Apples",
- "SupplierID": 24,
- "CategoryID": 7,
- "QuantityPerUnit": "50 - 300 g pkgs.",
- "UnitPrice": 53,
- "UnitsInStock": 20,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 7,
- "CategoryName": "Produce",
- "Description": "Dried fruit and bean curd"
- }
- },
- {
- "ProductID": 74,
- "ProductName": "Longlife Tofu",
- "SupplierID": 4,
- "CategoryID": 7,
- "QuantityPerUnit": "5 kg pkg.",
- "UnitPrice": 10,
- "UnitsInStock": 4,
- "UnitsOnOrder": 20,
- "ReorderLevel": 5,
- "Discontinued": false,
- "Category": {
- "CategoryID": 7,
- "CategoryName": "Produce",
- "Description": "Dried fruit and bean curd"
- }
- },
- {
- "ProductName": "Seafood",
- "UnitPrice": 20.6825,
- "UnitsInStock": 701,
- "locked": true
- },
- {
- "ProductID": 10,
- "ProductName": "Ikura",
- "SupplierID": 4,
- "CategoryID": 8,
- "QuantityPerUnit": "12 - 200 ml jars",
- "UnitPrice": 31,
- "UnitsInStock": 31,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- }
- },
- {
- "ProductID": 13,
- "ProductName": "Konbu",
- "SupplierID": 6,
- "CategoryID": 8,
- "QuantityPerUnit": "2 kg box",
- "UnitPrice": 6,
- "UnitsInStock": 24,
- "UnitsOnOrder": 0,
- "ReorderLevel": 5,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- }
- },
- {
- "ProductID": 18,
- "ProductName": "Carnarvon Tigers",
- "SupplierID": 7,
- "CategoryID": 8,
- "QuantityPerUnit": "16 kg pkg.",
- "UnitPrice": 62.5,
- "UnitsInStock": 42,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- }
- },
- {
- "ProductID": 30,
- "ProductName": "Nord-Ost Matjeshering",
- "SupplierID": 13,
- "CategoryID": 8,
- "QuantityPerUnit": "10 - 200 g glasses",
- "UnitPrice": 25.89,
- "UnitsInStock": 10,
- "UnitsOnOrder": 0,
- "ReorderLevel": 15,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- }
- },
- {
- "ProductID": 36,
- "ProductName": "Inlagd Sill",
- "SupplierID": 17,
- "CategoryID": 8,
- "QuantityPerUnit": "24 - 250 g jars",
- "UnitPrice": 19,
- "UnitsInStock": 112,
- "UnitsOnOrder": 0,
- "ReorderLevel": 20,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- }
- },
- {
- "ProductID": 37,
- "ProductName": "Gravad lax",
- "SupplierID": 17,
- "CategoryID": 8,
- "QuantityPerUnit": "12 - 500 g pkgs.",
- "UnitPrice": 26,
- "UnitsInStock": 11,
- "UnitsOnOrder": 50,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- }
- },
- {
- "ProductID": 40,
- "ProductName": "Boston Crab Meat",
- "SupplierID": 19,
- "CategoryID": 8,
- "QuantityPerUnit": "24 - 4 oz tins",
- "UnitPrice": 18.4,
- "UnitsInStock": 123,
- "UnitsOnOrder": 0,
- "ReorderLevel": 30,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- }
- },
- {
- "ProductID": 41,
- "ProductName": "Jack's New England Clam Chowder",
- "SupplierID": 19,
- "CategoryID": 8,
- "QuantityPerUnit": "12 - 12 oz cans",
- "UnitPrice": 9.65,
- "UnitsInStock": 85,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- }
- },
- {
- "ProductID": 45,
- "ProductName": "Rogede sild",
- "SupplierID": 21,
- "CategoryID": 8,
- "QuantityPerUnit": "1k pkg.",
- "UnitPrice": 9.5,
- "UnitsInStock": 5,
- "UnitsOnOrder": 70,
- "ReorderLevel": 15,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- }
- },
- {
- "ProductID": 46,
- "ProductName": "Spegesild",
- "SupplierID": 21,
- "CategoryID": 8,
- "QuantityPerUnit": "4 - 450 g glasses",
- "UnitPrice": 12,
- "UnitsInStock": 95,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- }
- },
- {
- "ProductID": 58,
- "ProductName": "Escargots de Bourgogne",
- "SupplierID": 27,
- "CategoryID": 8,
- "QuantityPerUnit": "24 pieces",
- "UnitPrice": 13.25,
- "UnitsInStock": 62,
- "UnitsOnOrder": 0,
- "ReorderLevel": 20,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- }
- },
- {
- "ProductID": 73,
- "ProductName": "Röd Kaviar",
- "SupplierID": 17,
- "CategoryID": 8,
- "QuantityPerUnit": "24 - 150 g jars",
- "UnitPrice": 15,
- "UnitsInStock": 101,
- "UnitsOnOrder": 0,
- "ReorderLevel": 5,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- }
- }
- ]
-
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/shared/shared-products.json b/docs/knowledge-base/examples/shared/shared-products.json
deleted file mode 100644
index ba7e76eb..00000000
--- a/docs/knowledge-base/examples/shared/shared-products.json
+++ /dev/null
@@ -1,1235 +0,0 @@
-
-[{
- "ProductID" : 1,
- "ProductName" : "Chai",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "10 boxes x 20 bags",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 2,
- "ProductName" : "Chang",
- "SupplierID" : 1,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 3,
- "ProductName" : "Aniseed Syrup",
- "SupplierID" : 1,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 550 ml bottles",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 13,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 4,
- "ProductName" : "Chef Anton's Cajun Seasoning",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "48 - 6 oz jars",
- "UnitPrice" : 22.0000,
- "UnitsInStock" : 53,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 5,
- "ProductName" : "Chef Anton's Gumbo Mix",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "36 boxes",
- "UnitPrice" : 21.3500,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 6,
- "ProductName" : "Grandma's Boysenberry Spread",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 8 oz jars",
- "UnitPrice" : 25.0000,
- "UnitsInStock" : 120,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 7,
- "ProductName" : "Uncle Bob's Organic Dried Pears",
- "SupplierID" : 3,
- "CategoryID" : 7,
- "QuantityPerUnit" : "12 - 1 lb pkgs.",
- "UnitPrice" : 30.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 8,
- "ProductName" : "Northwoods Cranberry Sauce",
- "SupplierID" : 3,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 - 12 oz jars",
- "UnitPrice" : 40.0000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 9,
- "ProductName" : "Mishi Kobe Niku",
- "SupplierID" : 4,
- "CategoryID" : 6,
- "QuantityPerUnit" : "18 - 500 g pkgs.",
- "UnitPrice" : 97.0000,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 10,
- "ProductName" : "Ikura",
- "SupplierID" : 4,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 200 ml jars",
- "UnitPrice" : 31.0000,
- "UnitsInStock" : 31,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 11,
- "ProductName" : "Queso Cabrales",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "1 kg pkg.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 30,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 12,
- "ProductName" : "Queso Manchego La Pastora",
- "SupplierID" : 5,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 86,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 13,
- "ProductName" : "Konbu",
- "SupplierID" : 6,
- "CategoryID" : 8,
- "QuantityPerUnit" : "2 kg box",
- "UnitPrice" : 6.0000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 14,
- "ProductName" : "Tofu",
- "SupplierID" : 6,
- "CategoryID" : 7,
- "QuantityPerUnit" : "40 - 100 g pkgs.",
- "UnitPrice" : 23.2500,
- "UnitsInStock" : 35,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 15,
- "ProductName" : "Genen Shouyu",
- "SupplierID" : 6,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 250 ml bottles",
- "UnitPrice" : 15.5000,
- "UnitsInStock" : 39,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 16,
- "ProductName" : "Pavlova",
- "SupplierID" : 7,
- "CategoryID" : 3,
- "QuantityPerUnit" : "32 - 500 g boxes",
- "UnitPrice" : 17.4500,
- "UnitsInStock" : 29,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 17,
- "ProductName" : "Alice Mutton",
- "SupplierID" : 7,
- "CategoryID" : 6,
- "QuantityPerUnit" : "20 - 1 kg tins",
- "UnitPrice" : 39.0000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 18,
- "ProductName" : "Carnarvon Tigers",
- "SupplierID" : 7,
- "CategoryID" : 8,
- "QuantityPerUnit" : "16 kg pkg.",
- "UnitPrice" : 62.5000,
- "UnitsInStock" : 42,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 19,
- "ProductName" : "Teatime Chocolate Biscuits",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 12 pieces",
- "UnitPrice" : 9.2000,
- "UnitsInStock" : 25,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 20,
- "ProductName" : "Sir Rodney's Marmalade",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "30 gift boxes",
- "UnitPrice" : 81.0000,
- "UnitsInStock" : 40,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 21,
- "ProductName" : "Sir Rodney's Scones",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 pkgs. x 4 pieces",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 3,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 22,
- "ProductName" : "Gustaf's Knäckebröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 500 g pkgs.",
- "UnitPrice" : 21.0000,
- "UnitsInStock" : 104,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 23,
- "ProductName" : "Tunnbröd",
- "SupplierID" : 9,
- "CategoryID" : 5,
- "QuantityPerUnit" : "12 - 250 g pkgs.",
- "UnitPrice" : 9.0000,
- "UnitsInStock" : 61,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 24,
- "ProductName" : "Guaraná Fantástica",
- "SupplierID" : 10,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 355 ml cans",
- "UnitPrice" : 4.5000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 25,
- "ProductName" : "NuNuCa Nuß-Nougat-Creme",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "20 - 450 g glasses",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 26,
- "ProductName" : "Gumbär Gummibärchen",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 250 g bags",
- "UnitPrice" : 31.2300,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 27,
- "ProductName" : "Schoggi Schokolade",
- "SupplierID" : 11,
- "CategoryID" : 3,
- "QuantityPerUnit" : "100 - 100 g pieces",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 49,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 28,
- "ProductName" : "Rössle Sauerkraut",
- "SupplierID" : 12,
- "CategoryID" : 7,
- "QuantityPerUnit" : "25 - 825 g cans",
- "UnitPrice" : 45.6000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 29,
- "ProductName" : "Thüringer Rostbratwurst",
- "SupplierID" : 12,
- "CategoryID" : 6,
- "QuantityPerUnit" : "50 bags x 30 sausgs.",
- "UnitPrice" : 123.7900,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 30,
- "ProductName" : "Nord-Ost Matjeshering",
- "SupplierID" : 13,
- "CategoryID" : 8,
- "QuantityPerUnit" : "10 - 200 g glasses",
- "UnitPrice" : 25.8900,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 31,
- "ProductName" : "Gorgonzola Telino",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "12 - 100 g pkgs",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 32,
- "ProductName" : "Mascarpone Fabioli",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 32.0000,
- "UnitsInStock" : 9,
- "UnitsOnOrder" : 40,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 33,
- "ProductName" : "Geitost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "500 g",
- "UnitPrice" : 2.5000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 34,
- "ProductName" : "Sasquatch Ale",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 111,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 35,
- "ProductName" : "Steeleye Stout",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 36,
- "ProductName" : "Inlagd Sill",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 250 g jars",
- "UnitPrice" : 19.0000,
- "UnitsInStock" : 112,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 37,
- "ProductName" : "Gravad lax",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 500 g pkgs.",
- "UnitPrice" : 26.0000,
- "UnitsInStock" : 11,
- "UnitsOnOrder" : 50,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 38,
- "ProductName" : "Côte de Blaye",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "12 - 75 cl bottles",
- "UnitPrice" : 263.5000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 39,
- "ProductName" : "Chartreuse verte",
- "SupplierID" : 18,
- "CategoryID" : 1,
- "QuantityPerUnit" : "750 cc per bottle",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 69,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 40,
- "ProductName" : "Boston Crab Meat",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 4 oz tins",
- "UnitPrice" : 18.4000,
- "UnitsInStock" : 123,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 41,
- "ProductName" : "Jack's New England Clam Chowder",
- "SupplierID" : 19,
- "CategoryID" : 8,
- "QuantityPerUnit" : "12 - 12 oz cans",
- "UnitPrice" : 9.6500,
- "UnitsInStock" : 85,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 42,
- "ProductName" : "Singaporean Hokkien Fried Mee",
- "SupplierID" : 20,
- "CategoryID" : 5,
- "QuantityPerUnit" : "32 - 1 kg pkgs.",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 43,
- "ProductName" : "Ipoh Coffee",
- "SupplierID" : 20,
- "CategoryID" : 1,
- "QuantityPerUnit" : "16 - 500 g tins",
- "UnitPrice" : 46.0000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 44,
- "ProductName" : "Gula Malacca",
- "SupplierID" : 20,
- "CategoryID" : 2,
- "QuantityPerUnit" : "20 - 2 kg bags",
- "UnitPrice" : 19.4500,
- "UnitsInStock" : 27,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 45,
- "ProductName" : "Rogede sild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "1k pkg.",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 5,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 46,
- "ProductName" : "Spegesild",
- "SupplierID" : 21,
- "CategoryID" : 8,
- "QuantityPerUnit" : "4 - 450 g glasses",
- "UnitPrice" : 12.0000,
- "UnitsInStock" : 95,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 47,
- "ProductName" : "Zaanse koeken",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 - 4 oz boxes",
- "UnitPrice" : 9.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 48,
- "ProductName" : "Chocolade",
- "SupplierID" : 22,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 pkgs.",
- "UnitPrice" : 12.7500,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 70,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 49,
- "ProductName" : "Maxilaku",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "24 - 50 g pkgs.",
- "UnitPrice" : 20.0000,
- "UnitsInStock" : 10,
- "UnitsOnOrder" : 60,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 50,
- "ProductName" : "Valkoinen suklaa",
- "SupplierID" : 23,
- "CategoryID" : 3,
- "QuantityPerUnit" : "12 - 100 g bars",
- "UnitPrice" : 16.2500,
- "UnitsInStock" : 65,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 51,
- "ProductName" : "Manjimup Dried Apples",
- "SupplierID" : 24,
- "CategoryID" : 7,
- "QuantityPerUnit" : "50 - 300 g pkgs.",
- "UnitPrice" : 53.0000,
- "UnitsInStock" : 20,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 52,
- "ProductName" : "Filo Mix",
- "SupplierID" : 24,
- "CategoryID" : 5,
- "QuantityPerUnit" : "16 - 2 kg boxes",
- "UnitPrice" : 7.0000,
- "UnitsInStock" : 38,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 53,
- "ProductName" : "Perth Pasties",
- "SupplierID" : 24,
- "CategoryID" : 6,
- "QuantityPerUnit" : "48 pieces",
- "UnitPrice" : 32.8000,
- "UnitsInStock" : 0,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : true,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 54,
- "ProductName" : "Tourtière",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "16 pies",
- "UnitPrice" : 7.4500,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 55,
- "ProductName" : "Pâté chinois",
- "SupplierID" : 25,
- "CategoryID" : 6,
- "QuantityPerUnit" : "24 boxes x 2 pies",
- "UnitPrice" : 24.0000,
- "UnitsInStock" : 115,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 6,
- "CategoryName" : "Meat/Poultry",
- "Description" : "Prepared meats"
- }
-}, {
- "ProductID" : 56,
- "ProductName" : "Gnocchi di nonna Alice",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 38.0000,
- "UnitsInStock" : 21,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 57,
- "ProductName" : "Ravioli Angelo",
- "SupplierID" : 26,
- "CategoryID" : 5,
- "QuantityPerUnit" : "24 - 250 g pkgs.",
- "UnitPrice" : 19.5000,
- "UnitsInStock" : 36,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 58,
- "ProductName" : "Escargots de Bourgogne",
- "SupplierID" : 27,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 pieces",
- "UnitPrice" : 13.2500,
- "UnitsInStock" : 62,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 59,
- "ProductName" : "Raclette Courdavault",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 55.0000,
- "UnitsInStock" : 79,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 60,
- "ProductName" : "Camembert Pierrot",
- "SupplierID" : 28,
- "CategoryID" : 4,
- "QuantityPerUnit" : "15 - 300 g rounds",
- "UnitPrice" : 34.0000,
- "UnitsInStock" : 19,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 61,
- "ProductName" : "Sirop d'érable",
- "SupplierID" : 29,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 500 ml bottles",
- "UnitPrice" : 28.5000,
- "UnitsInStock" : 113,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 62,
- "ProductName" : "Tarte au sucre",
- "SupplierID" : 29,
- "CategoryID" : 3,
- "QuantityPerUnit" : "48 pies",
- "UnitPrice" : 49.3000,
- "UnitsInStock" : 17,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 63,
- "ProductName" : "Vegie-spread",
- "SupplierID" : 7,
- "CategoryID" : 2,
- "QuantityPerUnit" : "15 - 625 g jars",
- "UnitPrice" : 43.9000,
- "UnitsInStock" : 24,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 64,
- "ProductName" : "Wimmers gute Semmelknödel",
- "SupplierID" : 12,
- "CategoryID" : 5,
- "QuantityPerUnit" : "20 bags x 4 pieces",
- "UnitPrice" : 33.2500,
- "UnitsInStock" : 22,
- "UnitsOnOrder" : 80,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 5,
- "CategoryName" : "Grains/Cereals",
- "Description" : "Breads, crackers, pasta, and cereal"
- }
-}, {
- "ProductID" : 65,
- "ProductName" : "Louisiana Fiery Hot Pepper Sauce",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "32 - 8 oz bottles",
- "UnitPrice" : 21.0500,
- "UnitsInStock" : 76,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 66,
- "ProductName" : "Louisiana Hot Spiced Okra",
- "SupplierID" : 2,
- "CategoryID" : 2,
- "QuantityPerUnit" : "24 - 8 oz jars",
- "UnitPrice" : 17.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 100,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}, {
- "ProductID" : 67,
- "ProductName" : "Laughing Lumberjack Lager",
- "SupplierID" : 16,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 12 oz bottles",
- "UnitPrice" : 14.0000,
- "UnitsInStock" : 52,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 10,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 68,
- "ProductName" : "Scottish Longbreads",
- "SupplierID" : 8,
- "CategoryID" : 3,
- "QuantityPerUnit" : "10 boxes x 8 pieces",
- "UnitPrice" : 12.5000,
- "UnitsInStock" : 6,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 3,
- "CategoryName" : "Confections",
- "Description" : "Desserts, candies, and sweet breads"
- }
-}, {
- "ProductID" : 69,
- "ProductName" : "Gudbrandsdalsost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 kg pkg.",
- "UnitPrice" : 36.0000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 70,
- "ProductName" : "Outback Lager",
- "SupplierID" : 7,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 355 ml bottles",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 15,
- "UnitsOnOrder" : 10,
- "ReorderLevel" : 30,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 71,
- "ProductName" : "Flotemysost",
- "SupplierID" : 15,
- "CategoryID" : 4,
- "QuantityPerUnit" : "10 - 500 g pkgs.",
- "UnitPrice" : 21.5000,
- "UnitsInStock" : 26,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 72,
- "ProductName" : "Mozzarella di Giovanni",
- "SupplierID" : 14,
- "CategoryID" : 4,
- "QuantityPerUnit" : "24 - 200 g pkgs.",
- "UnitPrice" : 34.8000,
- "UnitsInStock" : 14,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 0,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 4,
- "CategoryName" : "Dairy Products",
- "Description" : "Cheeses"
- }
-}, {
- "ProductID" : 73,
- "ProductName" : "Röd Kaviar",
- "SupplierID" : 17,
- "CategoryID" : 8,
- "QuantityPerUnit" : "24 - 150 g jars",
- "UnitPrice" : 15.0000,
- "UnitsInStock" : 101,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 8,
- "CategoryName" : "Seafood",
- "Description" : "Seaweed and fish"
- }
-}, {
- "ProductID" : 74,
- "ProductName" : "Longlife Tofu",
- "SupplierID" : 4,
- "CategoryID" : 7,
- "QuantityPerUnit" : "5 kg pkg.",
- "UnitPrice" : 10.0000,
- "UnitsInStock" : 4,
- "UnitsOnOrder" : 20,
- "ReorderLevel" : 5,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 7,
- "CategoryName" : "Produce",
- "Description" : "Dried fruit and bean curd"
- }
-}, {
- "ProductID" : 75,
- "ProductName" : "Rhönbräu Klosterbier",
- "SupplierID" : 12,
- "CategoryID" : 1,
- "QuantityPerUnit" : "24 - 0.5 l bottles",
- "UnitPrice" : 7.7500,
- "UnitsInStock" : 125,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 25,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 76,
- "ProductName" : "Lakkalikööri",
- "SupplierID" : 23,
- "CategoryID" : 1,
- "QuantityPerUnit" : "500 ml",
- "UnitPrice" : 18.0000,
- "UnitsInStock" : 57,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 20,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 1,
- "CategoryName" : "Beverages",
- "Description" : "Soft drinks, coffees, teas, beers, and ales"
- }
-}, {
- "ProductID" : 77,
- "ProductName" : "Original Frankfurter grüne Soße",
- "SupplierID" : 12,
- "CategoryID" : 2,
- "QuantityPerUnit" : "12 boxes",
- "UnitPrice" : 13.0000,
- "UnitsInStock" : 32,
- "UnitsOnOrder" : 0,
- "ReorderLevel" : 15,
- "Discontinued" : false,
- "Category" : {
- "CategoryID" : 2,
- "CategoryName" : "Condiments",
- "Description" : "Sweet and savory sauces, relishes, spreads, and seasonings"
- }
-}]
-
diff --git a/docs/knowledge-base/examples/shared/shared-sample-products.js b/docs/knowledge-base/examples/shared/shared-sample-products.js
deleted file mode 100644
index 87efd10d..00000000
--- a/docs/knowledge-base/examples/shared/shared-sample-products.js
+++ /dev/null
@@ -1,182 +0,0 @@
-export const sampleProducts = [
- {
- "ProductID": 1,
- "ProductName": "Chai",
- "SupplierID": 1,
- "CategoryID": 1,
- "QuantityPerUnit": "10 boxes x 20 bags",
- "UnitPrice": 18,
- "UnitsInStock": 39,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- },
- "FirstOrderedOn": new Date(1996, 8, 20)
- },
- {
- "ProductID": 2,
- "ProductName": "Chang",
- "SupplierID": 1,
- "CategoryID": 1,
- "QuantityPerUnit": "24 - 12 oz bottles",
- "UnitPrice": 19,
- "UnitsInStock": 17,
- "UnitsOnOrder": 40,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 1,
- "CategoryName": "Beverages",
- "Description": "Soft drinks, coffees, teas, beers, and ales"
- },
- "FirstOrderedOn": new Date(1996, 7, 12)
- },
- {
- "ProductID": 3,
- "ProductName": "Aniseed Syrup",
- "SupplierID": 1,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 550 ml bottles",
- "UnitPrice": 10,
- "UnitsInStock": 13,
- "UnitsOnOrder": 70,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- },
- "FirstOrderedOn": new Date(1996, 8, 26)
- },
- {
- "ProductID": 4,
- "ProductName": "Chef Anton's Cajun Seasoning",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "48 - 6 oz jars",
- "UnitPrice": 22,
- "UnitsInStock": 53,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- },
- "FirstOrderedOn": new Date(1996, 9, 19)
- },
- {
- "ProductID": 5,
- "ProductName": "Chef Anton's Gumbo Mix",
- "SupplierID": 2,
- "CategoryID": 2,
- "QuantityPerUnit": "36 boxes",
- "UnitPrice": 21.35,
- "UnitsInStock": 0,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- },
- "FirstOrderedOn": new Date(1996, 7, 17)
- },
- {
- "ProductID": 6,
- "ProductName": "Grandma's Boysenberry Spread",
- "SupplierID": 3,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 8 oz jars",
- "UnitPrice": 25,
- "UnitsInStock": 120,
- "UnitsOnOrder": 0,
- "ReorderLevel": 25,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- },
- "FirstOrderedOn": new Date(1996, 9, 19)
- },
- {
- "ProductID": 7,
- "ProductName": "Uncle Bob's Organic Dried Pears",
- "SupplierID": 3,
- "CategoryID": 7,
- "QuantityPerUnit": "12 - 1 lb pkgs.",
- "UnitPrice": 30,
- "UnitsInStock": 15,
- "UnitsOnOrder": 0,
- "ReorderLevel": 10,
- "Discontinued": false,
- "Category": {
- "CategoryID": 7,
- "CategoryName": "Produce",
- "Description": "Dried fruit and bean curd"
- },
- "FirstOrderedOn": new Date(1996, 7, 22)
- },
- {
- "ProductID": 8,
- "ProductName": "Northwoods Cranberry Sauce",
- "SupplierID": 3,
- "CategoryID": 2,
- "QuantityPerUnit": "12 - 12 oz jars",
- "UnitPrice": 40,
- "UnitsInStock": 6,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 2,
- "CategoryName": "Condiments",
- "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
- },
- "FirstOrderedOn": new Date(1996, 11, 1)
- },
- {
- "ProductID": 9,
- "ProductName": "Mishi Kobe Niku",
- "SupplierID": 4,
- "CategoryID": 6,
- "QuantityPerUnit": "18 - 500 g pkgs.",
- "UnitPrice": 97,
- "UnitsInStock": 29,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": true,
- "Category": {
- "CategoryID": 6,
- "CategoryName": "Meat/Poultry",
- "Description": "Prepared meats"
- },
- "FirstOrderedOn": new Date(1997, 1, 21)
- },
- {
- "ProductID": 10,
- "ProductName": "Ikura",
- "SupplierID": 4,
- "CategoryID": 8,
- "QuantityPerUnit": "12 - 200 ml jars",
- "UnitPrice": 31,
- "UnitsInStock": 31,
- "UnitsOnOrder": 0,
- "ReorderLevel": 0,
- "Discontinued": false,
- "Category": {
- "CategoryID": 8,
- "CategoryName": "Seafood",
- "Description": "Seaweed and fish"
- },
- "FirstOrderedOn": new Date(1996, 8, 5)
- }
-];
diff --git a/docs/knowledge-base/examples/shared/shared-treeListData.js b/docs/knowledge-base/examples/shared/shared-treeListData.js
deleted file mode 100644
index dc7cb276..00000000
--- a/docs/knowledge-base/examples/shared/shared-treeListData.js
+++ /dev/null
@@ -1,1150 +0,0 @@
-const employees = [
- {
- id: 1,
- name: "Daryl Sweeney",
- reportsTo: null,
- phone: "(555) 924-9726",
- extension: 8253,
- hireDate: new Date(2012, 2, 7),
- fullTime: true,
- position: "CEO",
- timeInPosition: 2,
- employees: [
- {
- id: 2,
- name: "Guy Wooten",
- reportsTo: 1,
- phone: "(438) 738-4935",
- extension: 1155,
- hireDate: new Date(2010, 3, 3),
- fullTime: true,
- position: "Chief Technical Officer",
- timeInPosition: 1,
- employees: [
- {
- id: 32,
- name: "Buffy Weber",
- reportsTo: 2,
- phone: "(699) 838-6121",
- extension: 8933,
- hireDate: new Date(2011, 7, 11),
- fullTime: true,
- position: "VP, Engineering",
- timeInPosition: 2,
- employees: [
- {
- id: 11,
- name: "Hyacinth Hood",
- reportsTo: 32,
- phone: "(889) 345-2438",
- extension: 8564,
- hireDate: new Date(2014, 2, 3),
- fullTime: true,
- position: "Team Lead",
- timeInPosition: 1,
- employees: [
- {
- id: 60,
- name: "Akeem Carr",
- reportsTo: 11,
- phone: "(738) 136-2814",
- extension: 9353,
- hireDate: new Date(2011, 4, 21),
- fullTime: true,
- position: "Junior Software Developer",
- timeInPosition: 2
- },
- {
- id: 78,
- name: "Rinah Simon",
- reportsTo: 11,
- phone: "(285) 912-5271",
- extension: 7795,
- hireDate: new Date(2012, 10, 11),
- fullTime: true,
- position: "Software Developer",
- timeInPosition: 4
- }
- ]
- },
- {
- id: 42,
- name: "Gage Daniels",
- reportsTo: 32,
- phone: "(107) 290-6260",
- extension: 896,
- hireDate: new Date(2013, 5, 16),
- fullTime: true,
- position: "Software Architect",
- timeInPosition: 5
- },
- {
- id: 43,
- name: "Constance Vazquez",
- reportsTo: 32,
- phone: "(800) 301-1978",
- extension: 5141,
- hireDate: new Date(2011, 6, 7),
- fullTime: true,
- position: "Director, Engineering",
- timeInPosition: 1,
- employees: [
- {
- id: 46,
- name: "Darrel Solis",
- reportsTo: 43,
- phone: "(327) 977-0216",
- extension: 7779,
- hireDate: new Date(2015, 4, 25),
- fullTime: true,
- position: "Team Lead",
- timeInPosition: 4,
- employees: [
- {
- id: 47,
- name: "Brian Yang",
- reportsTo: 46,
- phone: "(565) 146-5435",
- extension: 3885,
- hireDate: new Date(2012, 9, 27),
- fullTime: true,
- position: "Senior Software Developer",
- timeInPosition: 3
- },
- {
- id: 50,
- name: "Lillian Bradshaw",
- reportsTo: 46,
- phone: "(323) 509-3479",
- extension: 5426,
- hireDate: new Date(2014, 5, 10),
- fullTime: true,
- position: "Software Developer",
- timeInPosition: 2
- },
- {
- id: 51,
- name: "Christian Palmer",
- reportsTo: 46,
- phone: "(490) 421-8718",
- extension: 3706,
- hireDate: new Date(2012, 12, 27),
- fullTime: false,
- position: "Technical Lead",
- timeInPosition: 1
- },
- {
- id: 55,
- name: "Summer Mosley",
- reportsTo: 46,
- phone: "(784) 962-2301",
- extension: 5492,
- hireDate: new Date(2010, 3, 2),
- fullTime: true,
- position: "QA Engineer",
- timeInPosition: 5
- },
- {
- id: 56,
- name: "Barry Ayers",
- reportsTo: 46,
- phone: "(452) 373-9227",
- extension: 1308,
- hireDate: new Date(2011, 10, 11),
- fullTime: true,
- position: "Software Developer",
- timeInPosition: 4
- },
- {
- id: 59,
- name: "Keiko Espinoza",
- reportsTo: 46,
- phone: "(226) 600-5305",
- extension: 9363,
- hireDate: new Date(2011, 9, 18),
- fullTime: true,
- position: "Junior QA Engineer",
- timeInPosition: 4
- },
- {
- id: 61,
- name: "Candace Pickett",
- reportsTo: 46,
- phone: "(120) 117-7475",
- extension: 5178,
- hireDate: new Date(2010, 5, 6),
- fullTime: true,
- position: "Support Officer",
- timeInPosition: 0
- }
- ]
- },
- {
- id: 63,
- name: "Mia Caldwell",
- reportsTo: 43,
- phone: "(848) 636-6470",
- extension: 6368,
- hireDate: new Date(2012, 10, 7),
- fullTime: true,
- position: "Team Lead",
- timeInPosition: 4,
- employees: [
- {
- id: 65,
- name: "Thomas Terry",
- reportsTo: 63,
- phone: "(764) 831-4248",
- extension: 3574,
- hireDate: new Date(2015, 6, 15),
- fullTime: false,
- position: "Senior Enterprise Support Officer",
- timeInPosition: 2
- },
- {
- id: 67,
- name: "Ruth Downs",
- reportsTo: 63,
- phone: "(138) 991-1440",
- extension: 8067,
- hireDate: new Date(2013, 7, 13),
- fullTime: true,
- position: "Senior Software Developer",
- timeInPosition: 5
- },
- {
- id: 70,
- name: "Yasir Wilder",
- reportsTo: 63,
- phone: "(759) 701-8665",
- extension: 8350,
- hireDate: new Date(2010, 11, 8),
- fullTime: true,
- position: "Senior QA Enginner",
- timeInPosition: 3
- },
- {
- id: 71,
- name: "Flavia Short",
- reportsTo: 63,
- phone: "(370) 133-9238",
- extension: 6390,
- hireDate: new Date(2013, 2, 21),
- fullTime: true,
- position: "Support Officer",
- timeInPosition: 0
- },
- {
- id: 74,
- name: "Aaron Roach",
- reportsTo: 63,
- phone: "(958) 717-9230",
- extension: 4899,
- hireDate: new Date(2011, 7, 30),
- fullTime: true,
- position: "Junior Software Developer",
- timeInPosition: 6
- },
- {
- id: 75,
- name: "Eric Russell",
- reportsTo: 63,
- phone: "(516) 575-8505",
- extension: 2224,
- hireDate: new Date(2012, 10, 28),
- fullTime: true,
- position: "Software Developer",
- timeInPosition: 3
- },
- {
- id: 76,
- name: "Cheyenne Olson",
- reportsTo: 63,
- phone: "(241) 645-0257",
- extension: 9181,
- hireDate: new Date(2015, 5, 19),
- fullTime: true,
- position: "Software Developer",
- timeInPosition: 5
- },
- {
- id: 77,
- name: "Shaine Avila",
- reportsTo: 63,
- phone: "(844) 435-1360",
- extension: 3374,
- hireDate: new Date(2010, 1, 31),
- fullTime: true,
- position: "UI Designer",
- timeInPosition: 5
- },
- {
- id: 81,
- name: "Chantale Long",
- reportsTo: 63,
- phone: "(252) 419-6891",
- extension: 7868,
- hireDate: new Date(2010, 6, 17),
- fullTime: true,
- position: "Senior QA Enginner",
- timeInPosition: 1
- },
- {
- id: 83,
- name: "Dane Cruz",
- reportsTo: 63,
- phone: "(946) 701-6165",
- extension: 3828,
- hireDate: new Date(2014, 10, 8),
- fullTime: true,
- position: "Junior Software Developer",
- timeInPosition: 2
- },
- {
- id: 84,
- name: "Regan Patterson",
- reportsTo: 63,
- phone: "(265) 946-1765",
- extension: 6955,
- hireDate: new Date(2012, 3, 1),
- fullTime: true,
- position: "Technical Writer",
- timeInPosition: 6
- },
- {
- id: 85,
- name: "Drew Mckay",
- reportsTo: 63,
- phone: "(327) 293-0162",
- extension: 6904,
- hireDate: new Date(2011, 3, 25),
- fullTime: true,
- position: "Senior Software Developer",
- timeInPosition: 3
- },
- {
- id: 88,
- name: "Bevis Miller",
- reportsTo: 63,
- phone: "(525) 557-0169",
- extension: 6978,
- hireDate: new Date(2011, 4, 19),
- fullTime: true,
- position: "Senior Software Developer",
- timeInPosition: 5
- },
- {
- id: 89,
- name: "Bruce Mccarty",
- reportsTo: 63,
- phone: "(936) 777-8730",
- extension: 6552,
- hireDate: new Date(2014, 3, 28),
- fullTime: true,
- position: "Support Officer",
- timeInPosition: 5
- }
- ]
- },
- {
- id: 90,
- name: "Ocean Blair",
- reportsTo: 43,
- phone: "(343) 586-6614",
- extension: 1424,
- hireDate: new Date(2011, 4, 27),
- fullTime: true,
- position: "Team Lead",
- timeInPosition: 2,
- employees: [
- {
- id: 91,
- name: "Guinevere Osborn",
- reportsTo: 90,
- phone: "(424) 741-0006",
- extension: 3166,
- hireDate: new Date(2014, 11, 19),
- fullTime: true,
- position: "Software Developer",
- timeInPosition: 3
- },
- {
- id: 92,
- name: "Olga Strong",
- reportsTo: 90,
- phone: "(949) 417-1168",
- extension: 4568,
- hireDate: new Date(2015, 5, 28),
- fullTime: true,
- position: "Graphic Designer",
- timeInPosition: 4
- },
- {
- id: 93,
- name: "Robert Orr",
- reportsTo: 90,
- phone: "(977) 341-3721",
- extension: 9241,
- hireDate: new Date(2012, 8, 20),
- fullTime: false,
- position: "Support Officer",
- timeInPosition: 6
- },
- {
- id: 95,
- name: "Odette Sears",
- reportsTo: 90,
- phone: "(264) 818-6576",
- extension: 1914,
- hireDate: new Date(2013, 7, 5),
- fullTime: true,
- position: "Senior Software Developer",
- timeInPosition: 3
- }
- ]
- }
- ]
- },
- {
- id: 45,
- name: "Zelda Medina",
- reportsTo: 32,
- phone: "(563) 359-6023",
- extension: 2600,
- hireDate: new Date(2012, 11, 6),
- fullTime: true,
- position: "QA Architect",
- timeInPosition: 2
- }
- ]
- },
- {
- id: 52,
- name: "Skyler Cleveland",
- reportsTo: 2,
- phone: "(217) 280-5300",
- extension: 9655,
- hireDate: new Date(2014, 11, 10),
- fullTime: true,
- position: "VP, Engineering",
- timeInPosition: 2,
- employees: [
- {
- id: 40,
- name: "Karleigh Garza",
- reportsTo: 52,
- phone: "(370) 983-8796",
- extension: 4044,
- hireDate: new Date(2014, 3, 10),
- fullTime: true,
- position: "Team Lead",
- timeInPosition: 1,
- employees: [
- {
- id: 49,
- name: "Elmo Tyson",
- reportsTo: 40,
- phone: "(344) 496-9555",
- extension: 6950,
- hireDate: new Date(2014, 9, 18),
- fullTime: true,
- position: "Software Developer",
- timeInPosition: 4
- },
- {
- id: 72,
- name: "Stacey Lynn",
- reportsTo: 40,
- phone: "(140) 772-7509",
- extension: 8396,
- hireDate: new Date(2014, 7, 31),
- fullTime: false,
- position: "QA Engineer",
- timeInPosition: 1,
- employees: [
- {
- id: 80,
- name: "Meredith Parrish",
- reportsTo: 72,
- phone: "(714) 284-2408",
- extension: 7675,
- hireDate: new Date(2012, 11, 13),
- fullTime: true,
- position: "Junior QA Engineer",
- timeInPosition: 6
- }
- ]
- },
- {
- id: 96,
- name: "Cassady Whitley",
- reportsTo: 40,
- phone: "(996) 587-8405",
- extension: 780,
- hireDate: new Date(2013, 5, 7),
- fullTime: true,
- position: "Software Developer",
- timeInPosition: 5
- },
- {
- id: 97,
- name: "Haviva Campbell",
- reportsTo: 40,
- phone: "(263) 887-4689",
- extension: 2808,
- hireDate: new Date(2013, 3, 5),
- fullTime: true,
- position: "Support Officer",
- timeInPosition: 2
- },
- {
- id: 98,
- name: "Cameron Ayers",
- reportsTo: 40,
- phone: "(470) 709-8030",
- extension: 2893,
- hireDate: new Date(2013, 8, 28),
- fullTime: true,
- position: "Support Officer",
- timeInPosition: 3
- },
- {
- id: 99,
- name: "Martha Sargent",
- reportsTo: 40,
- phone: "(587) 812-4418",
- extension: 5099,
- hireDate: new Date(2014, 2, 27),
- fullTime: true,
- position: "Senior Software Developer",
- timeInPosition: 3
- },
- {
- id: 100,
- name: "Darrel Kinney",
- reportsTo: 40,
- phone: "(888) 483-9606",
- extension: 4779,
- hireDate: new Date(2014, 3, 24),
- fullTime: false,
- position: "Graphic Designer",
- timeInPosition: 1
- }
- ]
- },
- {
- id: 54,
- name: "Kuame Frye",
- reportsTo: 52,
- phone: "(360) 721-5886",
- extension: 2730,
- hireDate: new Date(2010, 11, 17),
- fullTime: true,
- position: "Software Architect",
- timeInPosition: 1,
- employees: [
- {
- id: 64,
- name: "Ori Wynn",
- reportsTo: 54,
- phone: "(366) 342-0166",
- extension: 7252,
- hireDate: new Date(2015, 6, 21),
- fullTime: true,
- position: "Team Lead",
- timeInPosition: 0,
- employees: [
- {
- id: 6,
- name: "Moses Duncan",
- reportsTo: 64,
- phone: "(421) 611-4814",
- extension: 669,
- hireDate: new Date(2010, 5, 24),
- fullTime: true,
- position: "Software Developer",
- timeInPosition: 6
- },
- {
- id: 12,
- name: "Jamalia Wallace",
- reportsTo: 64,
- phone: "(611) 391-8016",
- extension: 1952,
- hireDate: new Date(2011, 9, 8),
- fullTime: true,
- position: "Junior Designer",
- timeInPosition: 3
- },
- {
- id: 62,
- name: "Palmer Gregory",
- reportsTo: 64,
- phone: "(360) 430-2505",
- extension: 4337,
- hireDate: new Date(2014, 8, 30),
- fullTime: true,
- position: "Designer",
- timeInPosition: 4
- },
- {
- id: 68,
- name: "Mallory Gilliam",
- reportsTo: 64,
- phone: "(878) 423-2971",
- extension: 1341,
- hireDate: new Date(2014, 7, 24),
- fullTime: true,
- position: "Senior Software Developer",
- timeInPosition: 1
- },
- {
- id: 73,
- name: "Ima Hughes",
- reportsTo: 64,
- phone: "(905) 485-8001",
- extension: 1273,
- hireDate: new Date(2013, 6, 3),
- fullTime: true,
- position: "Software Developer",
- timeInPosition: 0
- },
- {
- id: 79,
- name: "Duncan Mathews",
- reportsTo: 64,
- phone: "(790) 971-9709",
- extension: 4573,
- hireDate: new Date(2011, 8, 21),
- fullTime: false,
- position: "Software Developer",
- timeInPosition: 3
- }
- ]
- }
- ]
- },
- {
- id: 69,
- name: "Sierra Beasley",
- reportsTo: 52,
- phone: "(271) 953-1968",
- extension: 3324,
- hireDate: new Date(2011, 4, 2),
- fullTime: true,
- position: "Team Lead",
- timeInPosition: 3,
- employees: [
- {
- id: 38,
- name: "Elton Tucker",
- reportsTo: 69,
- phone: "(988) 930-9331",
- extension: 9216,
- hireDate: new Date(2015, 6, 4),
- fullTime: true,
- position: "Support Officer",
- timeInPosition: 1
- },
- {
- id: 39,
- name: "Iona Brennan",
- reportsTo: 69,
- phone: "(356) 563-0600",
- extension: 5634,
- hireDate: new Date(2010, 9, 23),
- fullTime: true,
- position: "Junior Support Officer",
- timeInPosition: 4
- },
- {
- id: 53,
- name: "Paul Campos",
- reportsTo: 69,
- phone: "(899) 205-1689",
- extension: 8586,
- hireDate: new Date(2011, 3, 17),
- fullTime: true,
- position: "Interaction Designer",
- timeInPosition: 4,
- employees: [
- {
- id: 66,
- name: "Gloria Freeman",
- reportsTo: 53,
- phone: "(344) 950-9168",
- extension: 4738,
- hireDate: new Date(2013, 5, 6),
- fullTime: true,
- position: "Junior Interaction Designer",
- timeInPosition: 0
- }
- ]
- },
- {
- id: 57,
- name: "Alyssa Hansen",
- reportsTo: 69,
- phone: "(548) 925-4799",
- extension: 4716,
- hireDate: new Date(2011, 1, 19),
- fullTime: true,
- position: "Junior Software Developer",
- timeInPosition: 6
- },
- {
- id: 82,
- name: "Yael Walters",
- reportsTo: 69,
- phone: "(311) 489-8191",
- extension: 6520,
- hireDate: new Date(2013, 7, 4),
- fullTime: true,
- position: "Software Developer",
- timeInPosition: 6
- },
- {
- id: 87,
- name: "Dahlia Hunt",
- reportsTo: 69,
- phone: "(720) 339-5202",
- extension: 3690,
- hireDate: new Date(2011, 3, 26),
- fullTime: true,
- position: "Senior Software Developer",
- timeInPosition: 4
- },
- {
- id: 94,
- name: "Adria Stanley",
- reportsTo: 69,
- phone: "(536) 357-6391",
- extension: 3374,
- hireDate: new Date(2014, 7, 26),
- fullTime: true,
- position: "Software Developer",
- timeInPosition: 0
- }
- ]
- }
- ]
- }
- ]
- },
- {
- id: 3,
- name: "Priscilla Frank",
- reportsTo: 1,
- phone: "(278) 927-2684",
- extension: 4183,
- hireDate: new Date(2014, 11, 30),
- fullTime: true,
- position: "Chief Product Officer",
- timeInPosition: 2,
- employees: [
- {
- id: 4,
- name: "Ursula Holmes",
- reportsTo: 3,
- phone: "(302) 760-2034",
- extension: 2226,
- hireDate: new Date(2011, 6, 6),
- fullTime: true,
- position: "EVP, Product Strategy",
- timeInPosition: 4
- },
- {
- id: 24,
- name: "Melvin Carrillo",
- reportsTo: 3,
- phone: "(348) 933-5167",
- extension: 2482,
- hireDate: new Date(2014, 7, 21),
- fullTime: true,
- position: "Director, Developer Relations",
- timeInPosition: 6,
- employees: [
- {
- id: 29,
- name: "Martha Chavez",
- reportsTo: 24,
- phone: "(860) 754-3464",
- extension: 4531,
- hireDate: new Date(2013, 3, 12),
- fullTime: true,
- position: "Developer Advocate",
- timeInPosition: 0
- },
- {
- id: 30,
- name: "Oren Fox",
- reportsTo: 24,
- phone: "(572) 414-3299",
- extension: 4849,
- hireDate: new Date(2013, 5, 14),
- fullTime: false,
- position: "Developer Advocate",
- timeInPosition: 0
- },
- {
- id: 41,
- name: "Amos Barr",
- reportsTo: 24,
- phone: "(470) 381-3718",
- extension: 7643,
- hireDate: new Date(2010, 3, 9),
- fullTime: true,
- position: "Developer Advocate",
- timeInPosition: 2
- }
- ]
- }
- ]
- },
- {
- id: 5,
- name: "Anika Vega",
- reportsTo: 1,
- phone: "(910) 714-1802",
- extension: 6353,
- hireDate: new Date(2010, 2, 25),
- fullTime: true,
- position: "Chief Process Officer",
- timeInPosition: 5,
- employees: [
- {
- id: 10,
- name: "Vernon Ballard",
- reportsTo: 5,
- phone: "(702) 185-8890",
- extension: 9242,
- hireDate: new Date(2015, 6, 26),
- fullTime: true,
- position: "Director Facilities",
- timeInPosition: 2,
- employees: [
- {
- id: 16,
- name: "Ali Guy",
- reportsTo: 10,
- phone: "(429) 912-6578",
- extension: 2225,
- hireDate: new Date(2014, 6, 29),
- fullTime: true,
- position: "Operations Manager",
- timeInPosition: 4,
- employees: [
- {
- id: 23,
- name: "Bruce Reilly",
- reportsTo: 16,
- phone: "(995) 243-7302",
- extension: 4815,
- hireDate: new Date(2015, 4, 1),
- fullTime: true,
- position: "Head of Security",
- timeInPosition: 1,
- employees: [
- {
- id: 26,
- name: "Rowan Morin",
- reportsTo: 23,
- phone: "(792) 141-4374",
- extension: 1844,
- hireDate: new Date(2015, 7, 30),
- fullTime: true,
- position: "Building Security",
- timeInPosition: 5
- },
- {
- id: 44,
- name: "Benedict Soto",
- reportsTo: 23,
- phone: "(822) 282-5991",
- extension: 6422,
- hireDate: new Date(2012, 6, 1),
- fullTime: false,
- position: "Building Security",
- timeInPosition: 4
- }
- ]
- },
- {
- id: 48,
- name: "Maryam Rios",
- reportsTo: 16,
- phone: "(673) 764-6720",
- extension: 531,
- hireDate: new Date(2014, 3, 3),
- fullTime: true,
- position: "Team Lead, Personal Assistants",
- timeInPosition: 1,
- employees: [
- {
- id: 58,
- name: "Rose Mcintyre",
- reportsTo: 48,
- phone: "(771) 615-4590",
- extension: 7094,
- hireDate: new Date(2015, 6, 30),
- fullTime: false,
- position: "Personal Assistant",
- timeInPosition: 6
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- },
- {
- id: 7,
- name: "Nevada Hart",
- reportsTo: 1,
- phone: "(254) 220-1576",
- extension: 6649,
- hireDate: new Date(2015, 8, 17),
- fullTime: true,
- position: "Chief Financial Officer",
- timeInPosition: 6,
- employees: [
- {
- id: 14,
- name: "Zena Sanford",
- reportsTo: 7,
- phone: "(437) 568-8160",
- extension: 4452,
- hireDate: new Date(2010, 11, 30),
- fullTime: true,
- position: "VP, Finance",
- timeInPosition: 4
- },
- {
- id: 15,
- name: "Quinlan Howe",
- reportsTo: 7,
- phone: "(464) 334-9748",
- extension: 8722,
- hireDate: new Date(2011, 6, 9),
- fullTime: false,
- position: "Senior Director, Finance",
- timeInPosition: 0,
- employees: [
- {
- id: 17,
- name: "Indira Lopez",
- reportsTo: 15,
- phone: "(301) 368-0938",
- extension: 8027,
- hireDate: new Date(2013, 8, 18),
- fullTime: true,
- position: "ERP Team Lead",
- timeInPosition: 4,
- employees: [
- {
- id: 18,
- name: "Lareina Lara",
- reportsTo: 17,
- phone: "(233) 457-7482",
- extension: 1996,
- hireDate: new Date(2010, 4, 30),
- fullTime: true,
- position: "ERP Solutions Consultant",
- timeInPosition: 6
- },
- {
- id: 19,
- name: "Maxwell Wise",
- reportsTo: 17,
- phone: "(570) 494-2531",
- extension: 9865,
- hireDate: new Date(2012, 5, 19),
- fullTime: true,
- position: "Systems Engineer",
- timeInPosition: 0
- }
- ]
- },
- {
- id: 20,
- name: "Hunter Mcbride",
- reportsTo: 15,
- phone: "(409) 442-7016",
- extension: 4284,
- hireDate: new Date(2012, 10, 20),
- fullTime: true,
- position: "Senior Director, Tax",
- timeInPosition: 3
- },
- {
- id: 21,
- name: "Jana Serrano",
- reportsTo: 15,
- phone: "(910) 718-4620",
- extension: 6970,
- hireDate: new Date(2010, 4, 2),
- fullTime: true,
- position: "Financial Planning & Analysis Manager",
- timeInPosition: 2
- },
- {
- id: 22,
- name: "Zachery Shelton",
- reportsTo: 15,
- phone: "(310) 240-8675",
- extension: 4527,
- hireDate: new Date(2011, 11, 23),
- fullTime: false,
- position: "Corporate Finance Controller",
- timeInPosition: 6,
- employees: [
- {
- id: 28,
- name: "Cullen Freeman",
- reportsTo: 22,
- phone: "(136) 554-8814",
- extension: 9861,
- hireDate: new Date(2014, 3, 15),
- fullTime: true,
- position: "Treasurer Accountant",
- timeInPosition: 2
- },
- {
- id: 31,
- name: "Quinn Dean",
- reportsTo: 22,
- phone: "(152) 613-3507",
- extension: 6621,
- hireDate: new Date(2015, 1, 29),
- fullTime: true,
- position: "Accountant",
- timeInPosition: 6
- },
- {
- id: 34,
- name: "Samantha Brady",
- reportsTo: 22,
- phone: "(206) 398-4328",
- extension: 1157,
- hireDate: new Date(2011, 2, 13),
- fullTime: true,
- position: "Accountant",
- timeInPosition: 2,
- employees: [
- {
- id: 35,
- name: "Tamara Green",
- reportsTo: 34,
- phone: "(219) 248-2789",
- extension: 4880,
- hireDate: new Date(2014, 2, 4),
- fullTime: true,
- position: "Junior Accountant",
- timeInPosition: 6
- }
- ]
- },
- {
- id: 36,
- name: "Olympia Coleman",
- reportsTo: 22,
- phone: "(944) 853-6383",
- extension: 2136,
- hireDate: new Date(2013, 7, 31),
- fullTime: true,
- position: "Collections Manager",
- timeInPosition: 3
- },
- {
- id: 37,
- name: "Breanna Goodwin",
- reportsTo: 22,
- phone: "(379) 988-9630",
- extension: 5898,
- hireDate: new Date(2010, 5, 23),
- fullTime: false,
- position: "Payroll Specialist",
- timeInPosition: 4
- }
- ]
- },
- {
- id: 27,
- name: "Curran Travis",
- reportsTo: 15,
- phone: "(438) 135-8033",
- extension: 3841,
- hireDate: new Date(2011, 6, 13),
- fullTime: true,
- position: "Finance Controller",
- timeInPosition: 5
- }
- ]
- }
- ]
- },
- {
- id: 8,
- name: "Hunter Fry",
- reportsTo: 1,
- phone: "(766) 358-9858",
- extension: 3741,
- hireDate: new Date(2011, 2, 12),
- fullTime: false,
- position: "General Counsel",
- timeInPosition: 3,
- employees: [
- {
- id: 9,
- name: "Kuame Carrillo",
- reportsTo: 8,
- phone: "(192) 383-1305",
- extension: 9228,
- hireDate: new Date(2011, 2, 22),
- fullTime: true,
- position: "Associate General Councel",
- timeInPosition: 0
- },
- {
- id: 13,
- name: "Stacy Todd",
- reportsTo: 8,
- phone: "(925) 286-3327",
- extension: 8565,
- hireDate: new Date(2014, 7, 5),
- fullTime: true,
- position: "Councel",
- timeInPosition: 0
- },
- {
- id: 33,
- name: "Valentine Wyatt",
- reportsTo: 8,
- phone: "(165) 166-6205",
- extension: 3588,
- hireDate: new Date(2015, 5, 21),
- fullTime: true,
- position: "Councel",
- timeInPosition: 5
- },
- {
- id: 86,
- name: "Daniel Mccarthy",
- reportsTo: 8,
- phone: "(624) 483-6206",
- extension: 9112,
- hireDate: new Date(2013, 12, 3),
- fullTime: false,
- position: "Staff Attorney",
- timeInPosition: 0
- }
- ]
- }
- ]
- }
- ];
-
- export default employees;
-
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/shared/shared-treelist-data.js b/docs/knowledge-base/examples/shared/shared-treelist-data.js
deleted file mode 100644
index cac1e9ff..00000000
--- a/docs/knowledge-base/examples/shared/shared-treelist-data.js
+++ /dev/null
@@ -1,26 +0,0 @@
-export function generateData(numberOfColumns, columnWidth, numberOfRows, subItemsField) {
- const columns = [];
- for (let c = 1; c <= numberOfColumns; c++) {
- columns.push({ field: 'Field-' + c.toString(), width: columnWidth });
- }
- columns[0].expandable = true;
-
- const data = [];
- const reducer = (acc, cur) => {
- acc[cur[0]] = cur[0] !== 'id' ? 'Sub ' + cur[1] : cur[0];
- return acc;
- };
-
- for (let r = 1; r <= numberOfRows; r++) {
- const row = { id: r };
- for (let c = 1; c <= numberOfColumns; c++) {
- row['Field-' + c] = 'R' + r + ':C' + c;
- }
-
- const subItem = Object.entries(row).reduce(reducer, { });
- row[subItemsField] = [ subItem, { ...subItem }, { ...subItem } ];
- data.push(row);
- }
-
- return { columns, data };
-}
diff --git a/docs/knowledge-base/examples/splitbutton/disable-left-part/app.jsx b/docs/knowledge-base/examples/splitbutton/disable-left-part/app.jsx
deleted file mode 100644
index 38a00f2f..00000000
--- a/docs/knowledge-base/examples/splitbutton/disable-left-part/app.jsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import * as React from 'react';
-import { SplitButton } from '@progress/kendo-react-buttons';
-
-const App = () => {
- const items = ['Item1', 'Item2', 'Item3'];
- return (
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/splitbutton/disable-left-part/main.jsx b/docs/knowledge-base/examples/splitbutton/disable-left-part/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/splitbutton/disable-left-part/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/splitbutton/disable-left-part/styles.css b/docs/knowledge-base/examples/splitbutton/disable-left-part/styles.css
deleted file mode 100644
index 36556fd2..00000000
--- a/docs/knowledge-base/examples/splitbutton/disable-left-part/styles.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.k-button-group > .k-button:first-child:not(:only-child) {
- pointer-events: none;
- background-color: white;
- }
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/custom-columnmenu-checkboxes/app.jsx b/docs/knowledge-base/examples/treelist/custom-columnmenu-checkboxes/app.jsx
deleted file mode 100644
index 5c410d64..00000000
--- a/docs/knowledge-base/examples/treelist/custom-columnmenu-checkboxes/app.jsx
+++ /dev/null
@@ -1,103 +0,0 @@
-import React from 'react';
-import {
- TreeList,
- filterBy,
- orderBy,
- extendDataItem,
- mapTree,
-} from '@progress/kendo-react-treelist';
-
-import { ColumnMenuCustomCheckboxesColumn } from './checkboxFilterColumnMenu.jsx';
-
-import employees from './data';
-
-let names = [];
-mapTree(employees, 'employees', (item) => {
- names.push(item.name);
-});
-const ColumnMenuCustomCheckbox = (props) => {
- return ;
-};
-const subItemsField = 'employees';
-const expandField = 'expanded';
-
-const columns = [
- {
- field: 'name',
- title: 'Name',
- width: 320,
- expandable: true,
- columnMenu: ColumnMenuCustomCheckbox,
- },
- { field: 'hireDate', title: 'Hire Date', width: 280, format: '{0:d}' },
- { field: 'timeInPosition', title: 'Year(s) in Position', width: 280 },
- { field: 'fullTime', title: 'Full Time', width: 190 },
-];
-
-class App extends React.Component {
- state = {
- data: [...employees],
- filter: [],
- sort: [],
- expanded: [1, 2, 32],
- };
-
- onExpandChange = (e) => {
- this.setState({
- expanded: e.value
- ? this.state.expanded.filter((id) => id !== e.dataItem.id)
- : [...this.state.expanded, e.dataItem.id],
- });
- };
-
- onSortChange = (event) => {
- this.setState({
- sort: event.sort,
- });
- };
-
- handleFilterChange = (event) => {
- this.setState({
- filter: event.filter,
- });
- };
-
- addExpandField = (dataTree) => {
- const expanded = this.state.expanded;
- return mapTree(dataTree, subItemsField, (item) =>
- extendDataItem(item, subItemsField, {
- [expandField]: expanded.includes(item.id),
- })
- );
- };
-
- processData = () => {
- const { data, filter, sort } = this.state;
-
- const dataTree = orderBy(
- filterBy(data, filter, subItemsField),
- sort,
- subItemsField
- );
- return this.addExpandField(dataTree);
- };
-
- render() {
- return (
-
- );
- }
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/treelist/custom-columnmenu-checkboxes/checkboxFilterColumnMenu.jsx b/docs/knowledge-base/examples/treelist/custom-columnmenu-checkboxes/checkboxFilterColumnMenu.jsx
deleted file mode 100644
index e517a1c3..00000000
--- a/docs/knowledge-base/examples/treelist/custom-columnmenu-checkboxes/checkboxFilterColumnMenu.jsx
+++ /dev/null
@@ -1,66 +0,0 @@
-import React from 'react';
-import { ColumnMenuBooleanColumn } from '@progress/kendo-react-data-tools';
-import { Checkbox } from '@progress/kendo-react-inputs';
-
-const ColumnMenuCustomCheckboxesFilter = (props) => {
- const { filter, onFilterChange, data } = props;
- const inputChange = React.useCallback(
- (event) => {
- const newFilter = {
- ...filter,
- value: filter.value.includes(event.value)
- ? filter.value.filter((f) => f !== event.value)
- : [event.value, ...filter.value],
- };
-
- onFilterChange.call(undefined, event.syntheticEvent, newFilter, filter);
- },
- [filter, onFilterChange]
- );
-
- return (
-
- {data.map((i) => (
-
-
- inputChange({ syntheticEvent: event.syntheticEvent, value: i })
- }
- checked={filter.value.includes(i)}
- label={String(i)}
- labelPlacement="after"
- />
-
-
- ))}
-
- );
-};
-
-export const ColumnMenuCustomCheckboxesColumn = (props) => {
- const initialFilter = React.useCallback(
- (field) => ({
- logic: 'or',
- filters: [
- {
- operator: (current, values) => values.includes(current),
- field,
- value: [],
- },
- ],
- }),
- []
- );
-
- return (
- (
-
- ),
- ]}
- initialFilter={initialFilter}
- />
- );
-};
diff --git a/docs/knowledge-base/examples/treelist/custom-columnmenu-checkboxes/data.js b/docs/knowledge-base/examples/treelist/custom-columnmenu-checkboxes/data.js
deleted file mode 100644
index 4b9013dd..00000000
--- a/docs/knowledge-base/examples/treelist/custom-columnmenu-checkboxes/data.js
+++ /dev/null
@@ -1,1152 +0,0 @@
-
-
-const employees = [
- {
- "id": 1,
- "name": "Daryl Sweeney",
- "reportsTo": null,
- "phone": "(555) 924-9726",
- "extension": 8253,
- "hireDate": new Date(2012, 2, 7),
- "fullTime": true,
- "position": "CEO",
- "timeInPosition": 2,
- "employees": [
- {
- "id": 2,
- "name": "Guy Wooten",
- "reportsTo": 1,
- "phone": "(438) 738-4935",
- "extension": 1155,
- "hireDate": new Date(2010, 3, 3),
- "fullTime": true,
- "position": "Chief Technical Officer",
- "timeInPosition": 1,
- "employees": [
- {
- "id": 32,
- "name": "Buffy Weber",
- "reportsTo": 2,
- "phone": "(699) 838-6121",
- "extension": 8933,
- "hireDate": new Date(2011, 7, 11),
- "fullTime": true,
- "position": "VP, Engineering",
- "timeInPosition": 2,
- "employees": [
- {
- "id": 11,
- "name": "Hyacinth Hood",
- "reportsTo": 32,
- "phone": "(889) 345-2438",
- "extension": 8564,
- "hireDate": new Date(2014, 2, 3),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 1,
- "employees": [
- {
- "id": 60,
- "name": "Akeem Carr",
- "reportsTo": 11,
- "phone": "(738) 136-2814",
- "extension": 9353,
- "hireDate": new Date(2011, 4, 21),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 2
- },
- {
- "id": 78,
- "name": "Rinah Simon",
- "reportsTo": 11,
- "phone": "(285) 912-5271",
- "extension": 7795,
- "hireDate": new Date(2012, 10, 11),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }
- ]
- },
- {
- "id": 42,
- "name": "Gage Daniels",
- "reportsTo": 32,
- "phone": "(107) 290-6260",
- "extension": 896,
- "hireDate": new Date(2013, 5, 16),
- "fullTime": true,
- "position": "Software Architect",
- "timeInPosition": 5
- },
- {
- "id": 43,
- "name": "Constance Vazquez",
- "reportsTo": 32,
- "phone": "(800) 301-1978",
- "extension": 5141,
- "hireDate": new Date(2011, 6, 7),
- "fullTime": true,
- "position": "Director, Engineering",
- "timeInPosition": 1,
- "employees": [
- {
- "id": 46,
- "name": "Darrel Solis",
- "reportsTo": 43,
- "phone": "(327) 977-0216",
- "extension": 7779,
- "hireDate": new Date(2015, 4, 25),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 4,
- "employees": [
- {
- "id": 47,
- "name": "Brian Yang",
- "reportsTo": 46,
- "phone": "(565) 146-5435",
- "extension": 3885,
- "hireDate": new Date(2012, 9, 27),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- },
- {
- "id": 50,
- "name": "Lillian Bradshaw",
- "reportsTo": 46,
- "phone": "(323) 509-3479",
- "extension": 5426,
- "hireDate": new Date(2014, 5, 10),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 2
- },
- {
- "id": 51,
- "name": "Christian Palmer",
- "reportsTo": 46,
- "phone": "(490) 421-8718",
- "extension": 3706,
- "hireDate": new Date(2012, 12, 27),
- "fullTime": false,
- "position": "Technical Lead",
- "timeInPosition": 1
- },
- {
- "id": 55,
- "name": "Summer Mosley",
- "reportsTo": 46,
- "phone": "(784) 962-2301",
- "extension": 5492,
- "hireDate": new Date(2010, 3, 2),
- "fullTime": true,
- "position": "QA Engineer",
- "timeInPosition": 5
- },
- {
- "id": 56,
- "name": "Barry Ayers",
- "reportsTo": 46,
- "phone": "(452) 373-9227",
- "extension": 1308,
- "hireDate": new Date(2011, 10, 11),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- },
- {
- "id": 59,
- "name": "Keiko Espinoza",
- "reportsTo": 46,
- "phone": "(226) 600-5305",
- "extension": 9363,
- "hireDate": new Date(2011, 9, 18),
- "fullTime": true,
- "position": "Junior QA Engineer",
- "timeInPosition": 4
- },
- {
- "id": 61,
- "name": "Candace Pickett",
- "reportsTo": 46,
- "phone": "(120) 117-7475",
- "extension": 5178,
- "hireDate": new Date(2010, 5, 6),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 0
- }
- ]
- },
- {
- "id": 63,
- "name": "Mia Caldwell",
- "reportsTo": 43,
- "phone": "(848) 636-6470",
- "extension": 6368,
- "hireDate": new Date(2012, 10, 7),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 4,
- "employees": [
- {
- "id": 65,
- "name": "Thomas Terry",
- "reportsTo": 63,
- "phone": "(764) 831-4248",
- "extension": 3574,
- "hireDate": new Date(2015, 6, 15),
- "fullTime": false,
- "position": "Senior Enterprise Support Officer",
- "timeInPosition": 2
- },
- {
- "id": 67,
- "name": "Ruth Downs",
- "reportsTo": 63,
- "phone": "(138) 991-1440",
- "extension": 8067,
- "hireDate": new Date(2013, 7, 13),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 5
- },
- {
- "id": 70,
- "name": "Yasir Wilder",
- "reportsTo": 63,
- "phone": "(759) 701-8665",
- "extension": 8350,
- "hireDate": new Date(2010, 11, 8),
- "fullTime": true,
- "position": "Senior QA Enginner",
- "timeInPosition": 3
- },
- {
- "id": 71,
- "name": "Flavia Short",
- "reportsTo": 63,
- "phone": "(370) 133-9238",
- "extension": 6390,
- "hireDate": new Date(2013, 2, 21),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 0
- },
- {
- "id": 74,
- "name": "Aaron Roach",
- "reportsTo": 63,
- "phone": "(958) 717-9230",
- "extension": 4899,
- "hireDate": new Date(2011, 7, 30),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 6
- },
- {
- "id": 75,
- "name": "Eric Russell",
- "reportsTo": 63,
- "phone": "(516) 575-8505",
- "extension": 2224,
- "hireDate": new Date(2012, 10, 28),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 3
- },
- {
- "id": 76,
- "name": "Cheyenne Olson",
- "reportsTo": 63,
- "phone": "(241) 645-0257",
- "extension": 9181,
- "hireDate": new Date(2015, 5, 19),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 5
- },
- {
- "id": 77,
- "name": "Shaine Avila",
- "reportsTo": 63,
- "phone": "(844) 435-1360",
- "extension": 3374,
- "hireDate": new Date(2010, 1, 31),
- "fullTime": true,
- "position": "UI Designer",
- "timeInPosition": 5
- },
- {
- "id": 81,
- "name": "Chantale Long",
- "reportsTo": 63,
- "phone": "(252) 419-6891",
- "extension": 7868,
- "hireDate": new Date(2010, 6, 17),
- "fullTime": true,
- "position": "Senior QA Enginner",
- "timeInPosition": 1
- },
- {
- "id": 83,
- "name": "Dane Cruz",
- "reportsTo": 63,
- "phone": "(946) 701-6165",
- "extension": 3828,
- "hireDate": new Date(2014, 10, 8),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 2
- },
- {
- "id": 84,
- "name": "Regan Patterson",
- "reportsTo": 63,
- "phone": "(265) 946-1765",
- "extension": 6955,
- "hireDate": new Date(2012, 3, 1),
- "fullTime": true,
- "position": "Technical Writer",
- "timeInPosition": 6
- },
- {
- "id": 85,
- "name": "Drew Mckay",
- "reportsTo": 63,
- "phone": "(327) 293-0162",
- "extension": 6904,
- "hireDate": new Date(2011, 3, 25),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- },
- {
- "id": 88,
- "name": "Bevis Miller",
- "reportsTo": 63,
- "phone": "(525) 557-0169",
- "extension": 6978,
- "hireDate": new Date(2011, 4, 19),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 5
- },
- {
- "id": 89,
- "name": "Bruce Mccarty",
- "reportsTo": 63,
- "phone": "(936) 777-8730",
- "extension": 6552,
- "hireDate": new Date(2014, 3, 28),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 5
- }
- ]
- },
- {
- "id": 90,
- "name": "Ocean Blair",
- "reportsTo": 43,
- "phone": "(343) 586-6614",
- "extension": 1424,
- "hireDate": new Date(2011, 4, 27),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 2,
- "employees": [
- {
- "id": 91,
- "name": "Guinevere Osborn",
- "reportsTo": 90,
- "phone": "(424) 741-0006",
- "extension": 3166,
- "hireDate": new Date(2014, 11, 19),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 3
- },
- {
- "id": 92,
- "name": "Olga Strong",
- "reportsTo": 90,
- "phone": "(949) 417-1168",
- "extension": 4568,
- "hireDate": new Date(2015, 5, 28),
- "fullTime": true,
- "position": "Graphic Designer",
- "timeInPosition": 4
- },
- {
- "id": 93,
- "name": "Robert Orr",
- "reportsTo": 90,
- "phone": "(977) 341-3721",
- "extension": 9241,
- "hireDate": new Date(2012, 8, 20),
- "fullTime": false,
- "position": "Support Officer",
- "timeInPosition": 6
- },
- {
- "id": 95,
- "name": "Odette Sears",
- "reportsTo": 90,
- "phone": "(264) 818-6576",
- "extension": 1914,
- "hireDate": new Date(2013, 7, 5),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }
- ]
- }
- ]
- },
- {
- "id": 45,
- "name": "Zelda Medina",
- "reportsTo": 32,
- "phone": "(563) 359-6023",
- "extension": 2600,
- "hireDate": new Date(2012, 11, 6),
- "fullTime": true,
- "position": "QA Architect",
- "timeInPosition": 2
- }
- ]
- },
- {
- "id": 52,
- "name": "Skyler Cleveland",
- "reportsTo": 2,
- "phone": "(217) 280-5300",
- "extension": 9655,
- "hireDate": new Date(2014, 11, 10),
- "fullTime": true,
- "position": "VP, Engineering",
- "timeInPosition": 2,
- "employees": [
- {
- "id": 40,
- "name": "Karleigh Garza",
- "reportsTo": 52,
- "phone": "(370) 983-8796",
- "extension": 4044,
- "hireDate": new Date(2014, 3, 10),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 1,
- "employees": [
- {
- "id": 49,
- "name": "Elmo Tyson",
- "reportsTo": 40,
- "phone": "(344) 496-9555",
- "extension": 6950,
- "hireDate": new Date(2014, 9, 18),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- },
- {
- "id": 72,
- "name": "Stacey Lynn",
- "reportsTo": 40,
- "phone": "(140) 772-7509",
- "extension": 8396,
- "hireDate": new Date(2014, 7, 31),
- "fullTime": false,
- "position": "QA Engineer",
- "timeInPosition": 1,
- "employees": [
- {
- "id": 80,
- "name": "Meredith Parrish",
- "reportsTo": 72,
- "phone": "(714) 284-2408",
- "extension": 7675,
- "hireDate": new Date(2012, 11, 13),
- "fullTime": true,
- "position": "Junior QA Engineer",
- "timeInPosition": 6
- }
- ]
- },
- {
- "id": 96,
- "name": "Cassady Whitley",
- "reportsTo": 40,
- "phone": "(996) 587-8405",
- "extension": 780,
- "hireDate": new Date(2013, 5, 7),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 5
- },
- {
- "id": 97,
- "name": "Haviva Campbell",
- "reportsTo": 40,
- "phone": "(263) 887-4689",
- "extension": 2808,
- "hireDate": new Date(2013, 3, 5),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 2
- },
- {
- "id": 98,
- "name": "Cameron Ayers",
- "reportsTo": 40,
- "phone": "(470) 709-8030",
- "extension": 2893,
- "hireDate": new Date(2013, 8, 28),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 3
- },
- {
- "id": 99,
- "name": "Martha Sargent",
- "reportsTo": 40,
- "phone": "(587) 812-4418",
- "extension": 5099,
- "hireDate": new Date(2014, 2, 27),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- },
- {
- "id": 100,
- "name": "Darrel Kinney",
- "reportsTo": 40,
- "phone": "(888) 483-9606",
- "extension": 4779,
- "hireDate": new Date(2014, 3, 24),
- "fullTime": false,
- "position": "Graphic Designer",
- "timeInPosition": 1
- }
- ]
- },
- {
- "id": 54,
- "name": "Kuame Frye",
- "reportsTo": 52,
- "phone": "(360) 721-5886",
- "extension": 2730,
- "hireDate": new Date(2010, 11, 17),
- "fullTime": true,
- "position": "Software Architect",
- "timeInPosition": 1,
- "employees": [
- {
- "id": 64,
- "name": "Ori Wynn",
- "reportsTo": 54,
- "phone": "(366) 342-0166",
- "extension": 7252,
- "hireDate": new Date(2015, 6, 21),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 0,
- "employees": [
- {
- "id": 6,
- "name": "Moses Duncan",
- "reportsTo": 64,
- "phone": "(421) 611-4814",
- "extension": 669,
- "hireDate": new Date(2010, 5, 24),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 6
- },
- {
- "id": 12,
- "name": "Jamalia Wallace",
- "reportsTo": 64,
- "phone": "(611) 391-8016",
- "extension": 1952,
- "hireDate": new Date(2011, 9, 8),
- "fullTime": true,
- "position": "Junior Designer",
- "timeInPosition": 3
- },
- {
- "id": 62,
- "name": "Palmer Gregory",
- "reportsTo": 64,
- "phone": "(360) 430-2505",
- "extension": 4337,
- "hireDate": new Date(2014, 8, 30),
- "fullTime": true,
- "position": "Designer",
- "timeInPosition": 4
- },
- {
- "id": 68,
- "name": "Mallory Gilliam",
- "reportsTo": 64,
- "phone": "(878) 423-2971",
- "extension": 1341,
- "hireDate": new Date(2014, 7, 24),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 1
- },
- {
- "id": 73,
- "name": "Ima Hughes",
- "reportsTo": 64,
- "phone": "(905) 485-8001",
- "extension": 1273,
- "hireDate": new Date(2013, 6, 3),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 0
- },
- {
- "id": 79,
- "name": "Duncan Mathews",
- "reportsTo": 64,
- "phone": "(790) 971-9709",
- "extension": 4573,
- "hireDate": new Date(2011, 8, 21),
- "fullTime": false,
- "position": "Software Developer",
- "timeInPosition": 3
- }
- ]
- }
- ]
- },
- {
- "id": 69,
- "name": "Sierra Beasley",
- "reportsTo": 52,
- "phone": "(271) 953-1968",
- "extension": 3324,
- "hireDate": new Date(2011, 4, 2),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 3,
- "employees": [
- {
- "id": 38,
- "name": "Elton Tucker",
- "reportsTo": 69,
- "phone": "(988) 930-9331",
- "extension": 9216,
- "hireDate": new Date(2015, 6, 4),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 1
- },
- {
- "id": 39,
- "name": "Iona Brennan",
- "reportsTo": 69,
- "phone": "(356) 563-0600",
- "extension": 5634,
- "hireDate": new Date(2010, 9, 23),
- "fullTime": true,
- "position": "Junior Support Officer",
- "timeInPosition": 4
- },
- {
- "id": 53,
- "name": "Paul Campos",
- "reportsTo": 69,
- "phone": "(899) 205-1689",
- "extension": 8586,
- "hireDate": new Date(2011, 3, 17),
- "fullTime": true,
- "position": "Interaction Designer",
- "timeInPosition": 4,
- "employees": [
- {
- "id": 66,
- "name": "Gloria Freeman",
- "reportsTo": 53,
- "phone": "(344) 950-9168",
- "extension": 4738,
- "hireDate": new Date(2013, 5, 6),
- "fullTime": true,
- "position": "Junior Interaction Designer",
- "timeInPosition": 0
- }
- ]
- },
- {
- "id": 57,
- "name": "Alyssa Hansen",
- "reportsTo": 69,
- "phone": "(548) 925-4799",
- "extension": 4716,
- "hireDate": new Date(2011, 1, 19),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 6
- },
- {
- "id": 82,
- "name": "Yael Walters",
- "reportsTo": 69,
- "phone": "(311) 489-8191",
- "extension": 6520,
- "hireDate": new Date(2013, 7, 4),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 6
- },
- {
- "id": 87,
- "name": "Dahlia Hunt",
- "reportsTo": 69,
- "phone": "(720) 339-5202",
- "extension": 3690,
- "hireDate": new Date(2011, 3, 26),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 4
- },
- {
- "id": 94,
- "name": "Adria Stanley",
- "reportsTo": 69,
- "phone": "(536) 357-6391",
- "extension": 3374,
- "hireDate": new Date(2014, 7, 26),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 0
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "id": 3,
- "name": "Priscilla Frank",
- "reportsTo": 1,
- "phone": "(278) 927-2684",
- "extension": 4183,
- "hireDate": new Date(2014, 11, 30),
- "fullTime": true,
- "position": "Chief Product Officer",
- "timeInPosition": 2,
- "employees": [
- {
- "id": 4,
- "name": "Ursula Holmes",
- "reportsTo": 3,
- "phone": "(302) 760-2034",
- "extension": 2226,
- "hireDate": new Date(2011, 6, 6),
- "fullTime": true,
- "position": "EVP, Product Strategy",
- "timeInPosition": 4
- },
- {
- "id": 24,
- "name": "Melvin Carrillo",
- "reportsTo": 3,
- "phone": "(348) 933-5167",
- "extension": 2482,
- "hireDate": new Date(2014, 7, 21),
- "fullTime": true,
- "position": "Director, Developer Relations",
- "timeInPosition": 6,
- "employees": [
- {
- "id": 29,
- "name": "Martha Chavez",
- "reportsTo": 24,
- "phone": "(860) 754-3464",
- "extension": 4531,
- "hireDate": new Date(2013, 3, 12),
- "fullTime": true,
- "position": "Developer Advocate",
- "timeInPosition": 0
- },
- {
- "id": 30,
- "name": "Oren Fox",
- "reportsTo": 24,
- "phone": "(572) 414-3299",
- "extension": 4849,
- "hireDate": new Date(2013, 5, 14),
- "fullTime": false,
- "position": "Developer Advocate",
- "timeInPosition": 0
- },
- {
- "id": 41,
- "name": "Amos Barr",
- "reportsTo": 24,
- "phone": "(470) 381-3718",
- "extension": 7643,
- "hireDate": new Date(2010, 3, 9),
- "fullTime": true,
- "position": "Developer Advocate",
- "timeInPosition": 2
- }
- ]
- }
- ]
- },
- {
- "id": 5,
- "name": "Anika Vega",
- "reportsTo": 1,
- "phone": "(910) 714-1802",
- "extension": 6353,
- "hireDate": new Date(2010, 2, 25),
- "fullTime": true,
- "position": "Chief Process Officer",
- "timeInPosition": 5,
- "employees": [
- {
- "id": 10,
- "name": "Vernon Ballard",
- "reportsTo": 5,
- "phone": "(702) 185-8890",
- "extension": 9242,
- "hireDate": new Date(2015, 6, 26),
- "fullTime": true,
- "position": "Director Facilities",
- "timeInPosition": 2,
- "employees": [
- {
- "id": 16,
- "name": "Ali Guy",
- "reportsTo": 10,
- "phone": "(429) 912-6578",
- "extension": 2225,
- "hireDate": new Date(2014, 6, 29),
- "fullTime": true,
- "position": "Operations Manager",
- "timeInPosition": 4,
- "employees": [
- {
- "id": 23,
- "name": "Bruce Reilly",
- "reportsTo": 16,
- "phone": "(995) 243-7302",
- "extension": 4815,
- "hireDate": new Date(2015, 4, 1),
- "fullTime": true,
- "position": "Head of Security",
- "timeInPosition": 1,
- "employees": [
- {
- "id": 26,
- "name": "Rowan Morin",
- "reportsTo": 23,
- "phone": "(792) 141-4374",
- "extension": 1844,
- "hireDate": new Date(2015, 7, 30),
- "fullTime": true,
- "position": "Building Security",
- "timeInPosition": 5
- },
- {
- "id": 44,
- "name": "Benedict Soto",
- "reportsTo": 23,
- "phone": "(822) 282-5991",
- "extension": 6422,
- "hireDate": new Date(2012, 6, 1),
- "fullTime": false,
- "position": "Building Security",
- "timeInPosition": 4
- }
- ]
- },
- {
- "id": 48,
- "name": "Maryam Rios",
- "reportsTo": 16,
- "phone": "(673) 764-6720",
- "extension": 531,
- "hireDate": new Date(2014, 3, 3),
- "fullTime": true,
- "position": "Team Lead, Personal Assistants",
- "timeInPosition": 1,
- "employees": [
- {
- "id": 58,
- "name": "Rose Mcintyre",
- "reportsTo": 48,
- "phone": "(771) 615-4590",
- "extension": 7094,
- "hireDate": new Date(2015, 6, 30),
- "fullTime": false,
- "position": "Personal Assistant",
- "timeInPosition": 6
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "id": 7,
- "name": "Nevada Hart",
- "reportsTo": 1,
- "phone": "(254) 220-1576",
- "extension": 6649,
- "hireDate": new Date(2015, 8, 17),
- "fullTime": true,
- "position": "Chief Financial Officer",
- "timeInPosition": 6,
- "employees": [
- {
- "id": 14,
- "name": "Zena Sanford",
- "reportsTo": 7,
- "phone": "(437) 568-8160",
- "extension": 4452,
- "hireDate": new Date(2010, 11, 30),
- "fullTime": true,
- "position": "VP, Finance",
- "timeInPosition": 4
- },
- {
- "id": 15,
- "name": "Quinlan Howe",
- "reportsTo": 7,
- "phone": "(464) 334-9748",
- "extension": 8722,
- "hireDate": new Date(2011, 6, 9),
- "fullTime": false,
- "position": "Senior Director, Finance",
- "timeInPosition": 0,
- "employees": [
- {
- "id": 17,
- "name": "Indira Lopez",
- "reportsTo": 15,
- "phone": "(301) 368-0938",
- "extension": 8027,
- "hireDate": new Date(2013, 8, 18),
- "fullTime": true,
- "position": "ERP Team Lead",
- "timeInPosition": 4,
- "employees": [
- {
- "id": 18,
- "name": "Lareina Lara",
- "reportsTo": 17,
- "phone": "(233) 457-7482",
- "extension": 1996,
- "hireDate": new Date(2010, 4, 30),
- "fullTime": true,
- "position": "ERP Solutions Consultant",
- "timeInPosition": 6
- },
- {
- "id": 19,
- "name": "Maxwell Wise",
- "reportsTo": 17,
- "phone": "(570) 494-2531",
- "extension": 9865,
- "hireDate": new Date(2012, 5, 19),
- "fullTime": true,
- "position": "Systems Engineer",
- "timeInPosition": 0
- }
- ]
- },
- {
- "id": 20,
- "name": "Hunter Mcbride",
- "reportsTo": 15,
- "phone": "(409) 442-7016",
- "extension": 4284,
- "hireDate": new Date(2012, 10, 20),
- "fullTime": true,
- "position": "Senior Director, Tax",
- "timeInPosition": 3
- },
- {
- "id": 21,
- "name": "Jana Serrano",
- "reportsTo": 15,
- "phone": "(910) 718-4620",
- "extension": 6970,
- "hireDate": new Date(2010, 4, 2),
- "fullTime": true,
- "position": "Financial Planning & Analysis Manager",
- "timeInPosition": 2
- },
- {
- "id": 22,
- "name": "Zachery Shelton",
- "reportsTo": 15,
- "phone": "(310) 240-8675",
- "extension": 4527,
- "hireDate": new Date(2011, 11, 23),
- "fullTime": false,
- "position": "Corporate Finance Controller",
- "timeInPosition": 6,
- "employees": [
- {
- "id": 28,
- "name": "Cullen Freeman",
- "reportsTo": 22,
- "phone": "(136) 554-8814",
- "extension": 9861,
- "hireDate": new Date(2014, 3, 15),
- "fullTime": true,
- "position": "Treasurer Accountant",
- "timeInPosition": 2
- },
- {
- "id": 31,
- "name": "Quinn Dean",
- "reportsTo": 22,
- "phone": "(152) 613-3507",
- "extension": 6621,
- "hireDate": new Date(2015, 1, 29),
- "fullTime": true,
- "position": "Accountant",
- "timeInPosition": 6
- },
- {
- "id": 34,
- "name": "Samantha Brady",
- "reportsTo": 22,
- "phone": "(206) 398-4328",
- "extension": 1157,
- "hireDate": new Date(2011, 2, 13),
- "fullTime": true,
- "position": "Accountant",
- "timeInPosition": 2,
- "employees": [
- {
- "id": 35,
- "name": "Tamara Green",
- "reportsTo": 34,
- "phone": "(219) 248-2789",
- "extension": 4880,
- "hireDate": new Date(2014, 2, 4),
- "fullTime": true,
- "position": "Junior Accountant",
- "timeInPosition": 6
- }
- ]
- },
- {
- "id": 36,
- "name": "Olympia Coleman",
- "reportsTo": 22,
- "phone": "(944) 853-6383",
- "extension": 2136,
- "hireDate": new Date(2013, 7, 31),
- "fullTime": true,
- "position": "Collections Manager",
- "timeInPosition": 3
- },
- {
- "id": 37,
- "name": "Breanna Goodwin",
- "reportsTo": 22,
- "phone": "(379) 988-9630",
- "extension": 5898,
- "hireDate": new Date(2010, 5, 23),
- "fullTime": false,
- "position": "Payroll Specialist",
- "timeInPosition": 4
- }
- ]
- },
- {
- "id": 27,
- "name": "Curran Travis",
- "reportsTo": 15,
- "phone": "(438) 135-8033",
- "extension": 3841,
- "hireDate": new Date(2011, 6, 13),
- "fullTime": true,
- "position": "Finance Controller",
- "timeInPosition": 5
- }
- ]
- }
- ]
- },
- {
- "id": 8,
- "name": "Hunter Fry",
- "reportsTo": 1,
- "phone": "(766) 358-9858",
- "extension": 3741,
- "hireDate": new Date(2011, 2, 12),
- "fullTime": false,
- "position": "General Counsel",
- "timeInPosition": 3,
- "employees": [
- {
- "id": 9,
- "name": "Kuame Carrillo",
- "reportsTo": 8,
- "phone": "(192) 383-1305",
- "extension": 9228,
- "hireDate": new Date(2011, 2, 22),
- "fullTime": true,
- "position": "Associate General Councel",
- "timeInPosition": 0
- },
- {
- "id": 13,
- "name": "Stacy Todd",
- "reportsTo": 8,
- "phone": "(925) 286-3327",
- "extension": 8565,
- "hireDate": new Date(2014, 7, 5),
- "fullTime": true,
- "position": "Councel",
- "timeInPosition": 0
- },
- {
- "id": 33,
- "name": "Valentine Wyatt",
- "reportsTo": 8,
- "phone": "(165) 166-6205",
- "extension": 3588,
- "hireDate": new Date(2015, 5, 21),
- "fullTime": true,
- "position": "Councel",
- "timeInPosition": 5
- },
- {
- "id": 86,
- "name": "Daniel Mccarthy",
- "reportsTo": 8,
- "phone": "(624) 483-6206",
- "extension": 9112,
- "hireDate": new Date(2013, 12, 3),
- "fullTime": false,
- "position": "Staff Attorney",
- "timeInPosition": 0
- }
- ]
- }
- ]
- }
-];
-
-export default employees;
-
diff --git a/docs/knowledge-base/examples/treelist/custom-columnmenu-checkboxes/main.jsx b/docs/knowledge-base/examples/treelist/custom-columnmenu-checkboxes/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treelist/custom-columnmenu-checkboxes/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/custom-columnmenu-date-filter/app.jsx b/docs/knowledge-base/examples/treelist/custom-columnmenu-date-filter/app.jsx
deleted file mode 100644
index f425cc12..00000000
--- a/docs/knowledge-base/examples/treelist/custom-columnmenu-date-filter/app.jsx
+++ /dev/null
@@ -1,109 +0,0 @@
-import * as React from "react";
-import {
- TreeList,
- filterBy,
- orderBy,
- extendDataItem,
- mapTree
-} from "@progress/kendo-react-treelist";
-
-import { ColumnMenuCustomDateColumn } from "./dateColumnMenu.jsx";
-
-import employees from "./shared-treeListData";
-
-const subItemsField = "employees";
-const expandField = "expanded";
-
-const columns = [
- {
- field: "name",
- title: "Name",
- width: 320,
- expandable: true
- },
- {
- field: "hireDate",
- title: "Hire Date",
- width: 280,
- format: "{0:d}",
- columnMenu: ColumnMenuCustomDateColumn
- },
- {
- field: "timeInPosition",
- title: "Year(s) in Position",
- width: 280
- },
- {
- field: "fullTime",
- title: "Full Time",
- width: 190
- }
-];
-
-class App extends React.Component {
- state = {
- data: [...employees],
- filter: [],
- sort: [],
- expanded: [1, 2, 32]
- };
-
- onExpandChange = e => {
- this.setState({
- expanded: e.value
- ? this.state.expanded.filter(id => id !== e.dataItem.id)
- : [...this.state.expanded, e.dataItem.id]
- });
- };
-
- onSortChange = event => {
- this.setState({
- sort: event.sort
- });
- };
-
- handleFilterChange = event => {
- this.setState({
- filter: event.filter
- });
- };
-
- addExpandField = dataTree => {
- const expanded = this.state.expanded;
- return mapTree(dataTree, subItemsField, item =>
- extendDataItem(item, subItemsField, {
- [expandField]: expanded.includes(item.id)
- })
- );
- };
-
- processData = () => {
- const { data, filter, sort } = this.state;
-
- const dataTree = orderBy(
- filterBy(data, filter, subItemsField),
- sort,
- subItemsField
- );
- return this.addExpandField(dataTree);
- };
-
- render() {
- return (
-
- );
- }
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/treelist/custom-columnmenu-date-filter/dateColumnMenu.jsx b/docs/knowledge-base/examples/treelist/custom-columnmenu-date-filter/dateColumnMenu.jsx
deleted file mode 100644
index c6af0540..00000000
--- a/docs/knowledge-base/examples/treelist/custom-columnmenu-date-filter/dateColumnMenu.jsx
+++ /dev/null
@@ -1,67 +0,0 @@
-import * as React from "react";
-import { ColumnMenuDateColumn } from "@progress/kendo-react-data-tools";
-import { DatePicker } from "@progress/kendo-react-dateinputs";
-
-const ColumnMenuCustomDateFilter = props => {
- const { filter, onFilterChange } = props;
-
- const dateChange = React.useCallback(
- event =>
- onFilterChange.call(
- undefined,
- event.syntheticEvent,
- { ...filter, value: event.value },
- filter
- ),
- [filter, onFilterChange]
- );
-
- var textLabel = "To";
- if (filter.operator == "gte") {
- textLabel = "From";
- }
- return (
-
- {textLabel}
-
-
- );
-};
-
-export const ColumnMenuCustomDateColumn = props => {
- const initialFilter = React.useCallback(
- field => ({
- logic: "and",
- filters: [
- {
- field,
- operator: "gte",
- value: new Date("01/01/2012")
- },
- {
- field,
- operator: "lte",
- value: new Date("01/01/2015")
- }
- ]
- }),
- []
- );
- return (
-
- );
-};
diff --git a/docs/knowledge-base/examples/treelist/custom-columnmenu-date-filter/main.jsx b/docs/knowledge-base/examples/treelist/custom-columnmenu-date-filter/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treelist/custom-columnmenu-date-filter/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/different-row-color-per-level/app.jsx b/docs/knowledge-base/examples/treelist/different-row-color-per-level/app.jsx
deleted file mode 100644
index 330be5ac..00000000
--- a/docs/knowledge-base/examples/treelist/different-row-color-per-level/app.jsx
+++ /dev/null
@@ -1,127 +0,0 @@
-import * as React from 'react';
-import {
- TreeList,
- orderBy,
- filterBy,
- mapTree,
- extendDataItem,
- TreeListTextFilter,
- TreeListNumericFilter,
- TreeListDateFilter,
- TreeListBooleanFilter,
-} from '@progress/kendo-react-treelist';
-import employees from './data';
-const subItemsField = 'employees';
-const expandField = 'expanded';
-const columns = [
- {
- field: 'name',
- title: 'Name',
- width: '250px',
- filter: TreeListTextFilter,
- expandable: true,
- },
- {
- field: 'hireDate',
- title: 'Hire Date',
- width: '200px',
- format: '{0:d}',
- filter: TreeListDateFilter,
- },
- {
- field: 'timeInPosition',
- title: 'Year(s) in Position',
- width: '200px',
- filter: TreeListNumericFilter,
- },
- {
- field: 'fullTime',
- title: 'Full Time',
- width: '100px',
- filter: TreeListBooleanFilter,
- },
-];
-const App = () => {
- const [state, setState] = React.useState({
- data: [...employees],
- dataState: {
- sort: [
- {
- field: 'name',
- dir: 'asc',
- },
- ],
- filter: [],
- },
- expanded: [1, 2, 32],
- });
- const onExpandChange = (e) => {
- setState({
- ...state,
- expanded: e.value
- ? state.expanded.filter((id) => id !== e.dataItem.id)
- : [...state.expanded, e.dataItem.id],
- });
- };
- const handleDataStateChange = (event) => {
- setState({
- ...state,
- dataState: event.dataState,
- });
- };
- const addExpandField = (dataTree) => {
- const expanded = state.expanded;
- return mapTree(dataTree, subItemsField, (item) =>
- extendDataItem(item, subItemsField, {
- [expandField]: expanded.includes(item.id),
- })
- );
- };
- const processData = () => {
- let { data, dataState } = state;
- let filteredData = filterBy(data, dataState.filter, subItemsField);
- let sortedData = orderBy(filteredData, dataState.sort, subItemsField);
- return addExpandField(sortedData);
- };
-
- const rowRender = (row, props) => {
- let color = '#fff';
- let level = props.level.length;
- switch (level) {
- case 1:
- color = '#ccc';
- break;
- case 2:
- color = '#ddd';
- break;
- case 3:
- color = '#eee';
- break;
- default:
- color = '#fff';
- }
- let style = { ...row.props.style, backgroundColor: color };
- return ;
- };
- return (
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/treelist/different-row-color-per-level/data.js b/docs/knowledge-base/examples/treelist/different-row-color-per-level/data.js
deleted file mode 100644
index ab659696..00000000
--- a/docs/knowledge-base/examples/treelist/different-row-color-per-level/data.js
+++ /dev/null
@@ -1,1020 +0,0 @@
-const employees = [{
- "id": 1,
- "name": "Daryl Sweeney",
- "reportsTo": null,
- "phone": "(555) 924-9726",
- "extension": 8253,
- "hireDate": new Date(2012, 2, 7),
- "fullTime": true,
- "position": "CEO",
- "timeInPosition": 2,
- "employees": [{
- "id": 2,
- "name": "Guy Wooten",
- "reportsTo": 1,
- "phone": "(438) 738-4935",
- "extension": 1155,
- "hireDate": new Date(2010, 3, 3),
- "fullTime": true,
- "position": "Chief Technical Officer",
- "timeInPosition": 1,
- "employees": [{
- "id": 32,
- "name": "Buffy Weber",
- "reportsTo": 2,
- "phone": "(699) 838-6121",
- "extension": 8933,
- "hireDate": new Date(2011, 7, 11),
- "fullTime": true,
- "position": "VP, Engineering",
- "timeInPosition": 2,
- "employees": [{
- "id": 11,
- "name": "Hyacinth Hood",
- "reportsTo": 32,
- "phone": "(889) 345-2438",
- "extension": 8564,
- "hireDate": new Date(2014, 2, 3),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 1,
- "employees": [{
- "id": 60,
- "name": "Akeem Carr",
- "reportsTo": 11,
- "phone": "(738) 136-2814",
- "extension": 9353,
- "hireDate": new Date(2011, 4, 21),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 2
- }, {
- "id": 78,
- "name": "Rinah Simon",
- "reportsTo": 11,
- "phone": "(285) 912-5271",
- "extension": 7795,
- "hireDate": new Date(2012, 10, 11),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }]
- }, {
- "id": 42,
- "name": "Gage Daniels",
- "reportsTo": 32,
- "phone": "(107) 290-6260",
- "extension": 896,
- "hireDate": new Date(2013, 5, 16),
- "fullTime": true,
- "position": "Software Architect",
- "timeInPosition": 5
- }, {
- "id": 43,
- "name": "Constance Vazquez",
- "reportsTo": 32,
- "phone": "(800) 301-1978",
- "extension": 5141,
- "hireDate": new Date(2011, 6, 7),
- "fullTime": true,
- "position": "Director, Engineering",
- "timeInPosition": 1,
- "employees": [{
- "id": 46,
- "name": "Darrel Solis",
- "reportsTo": 43,
- "phone": "(327) 977-0216",
- "extension": 7779,
- "hireDate": new Date(2015, 4, 25),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 47,
- "name": "Brian Yang",
- "reportsTo": 46,
- "phone": "(565) 146-5435",
- "extension": 3885,
- "hireDate": new Date(2012, 9, 27),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 50,
- "name": "Lillian Bradshaw",
- "reportsTo": 46,
- "phone": "(323) 509-3479",
- "extension": 5426,
- "hireDate": new Date(2014, 5, 10),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 2
- }, {
- "id": 51,
- "name": "Christian Palmer",
- "reportsTo": 46,
- "phone": "(490) 421-8718",
- "extension": 3706,
- "hireDate": new Date(2012, 12, 27),
- "fullTime": false,
- "position": "Technical Lead",
- "timeInPosition": 1
- }, {
- "id": 55,
- "name": "Summer Mosley",
- "reportsTo": 46,
- "phone": "(784) 962-2301",
- "extension": 5492,
- "hireDate": new Date(2010, 3, 2),
- "fullTime": true,
- "position": "QA Engineer",
- "timeInPosition": 5
- }, {
- "id": 56,
- "name": "Barry Ayers",
- "reportsTo": 46,
- "phone": "(452) 373-9227",
- "extension": 1308,
- "hireDate": new Date(2011, 10, 11),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }, {
- "id": 59,
- "name": "Keiko Espinoza",
- "reportsTo": 46,
- "phone": "(226) 600-5305",
- "extension": 9363,
- "hireDate": new Date(2011, 9, 18),
- "fullTime": true,
- "position": "Junior QA Engineer",
- "timeInPosition": 4
- }, {
- "id": 61,
- "name": "Candace Pickett",
- "reportsTo": 46,
- "phone": "(120) 117-7475",
- "extension": 5178,
- "hireDate": new Date(2010, 5, 6),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 0
- }]
- }, {
- "id": 63,
- "name": "Mia Caldwell",
- "reportsTo": 43,
- "phone": "(848) 636-6470",
- "extension": 6368,
- "hireDate": new Date(2012, 10, 7),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 65,
- "name": "Thomas Terry",
- "reportsTo": 63,
- "phone": "(764) 831-4248",
- "extension": 3574,
- "hireDate": new Date(2015, 6, 15),
- "fullTime": false,
- "position": "Senior Enterprise Support Officer",
- "timeInPosition": 2
- }, {
- "id": 67,
- "name": "Ruth Downs",
- "reportsTo": 63,
- "phone": "(138) 991-1440",
- "extension": 8067,
- "hireDate": new Date(2013, 7, 13),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 5
- }, {
- "id": 70,
- "name": "Yasir Wilder",
- "reportsTo": 63,
- "phone": "(759) 701-8665",
- "extension": 8350,
- "hireDate": new Date(2010, 11, 8),
- "fullTime": true,
- "position": "Senior QA Enginner",
- "timeInPosition": 3
- }, {
- "id": 71,
- "name": "Flavia Short",
- "reportsTo": 63,
- "phone": "(370) 133-9238",
- "extension": 6390,
- "hireDate": new Date(2013, 2, 21),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 0
- }, {
- "id": 74,
- "name": "Aaron Roach",
- "reportsTo": 63,
- "phone": "(958) 717-9230",
- "extension": 4899,
- "hireDate": new Date(2011, 7, 30),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 6
- }, {
- "id": 75,
- "name": "Eric Russell",
- "reportsTo": 63,
- "phone": "(516) 575-8505",
- "extension": 2224,
- "hireDate": new Date(2012, 10, 28),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 3
- }, {
- "id": 76,
- "name": "Cheyenne Olson",
- "reportsTo": 63,
- "phone": "(241) 645-0257",
- "extension": 9181,
- "hireDate": new Date(2015, 5, 19),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 5
- }, {
- "id": 77,
- "name": "Shaine Avila",
- "reportsTo": 63,
- "phone": "(844) 435-1360",
- "extension": 3374,
- "hireDate": new Date(2010, 1, 31),
- "fullTime": true,
- "position": "UI Designer",
- "timeInPosition": 5
- }, {
- "id": 81,
- "name": "Chantale Long",
- "reportsTo": 63,
- "phone": "(252) 419-6891",
- "extension": 7868,
- "hireDate": new Date(2010, 6, 17),
- "fullTime": true,
- "position": "Senior QA Enginner",
- "timeInPosition": 1
- }, {
- "id": 83,
- "name": "Dane Cruz",
- "reportsTo": 63,
- "phone": "(946) 701-6165",
- "extension": 3828,
- "hireDate": new Date(2014, 10, 8),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 2
- }, {
- "id": 84,
- "name": "Regan Patterson",
- "reportsTo": 63,
- "phone": "(265) 946-1765",
- "extension": 6955,
- "hireDate": new Date(2012, 3, 1),
- "fullTime": true,
- "position": "Technical Writer",
- "timeInPosition": 6
- }, {
- "id": 85,
- "name": "Drew Mckay",
- "reportsTo": 63,
- "phone": "(327) 293-0162",
- "extension": 6904,
- "hireDate": new Date(2011, 3, 25),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 88,
- "name": "Bevis Miller",
- "reportsTo": 63,
- "phone": "(525) 557-0169",
- "extension": 6978,
- "hireDate": new Date(2011, 4, 19),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 5
- }, {
- "id": 89,
- "name": "Bruce Mccarty",
- "reportsTo": 63,
- "phone": "(936) 777-8730",
- "extension": 6552,
- "hireDate": new Date(2014, 3, 28),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 5
- }]
- }, {
- "id": 90,
- "name": "Ocean Blair",
- "reportsTo": 43,
- "phone": "(343) 586-6614",
- "extension": 1424,
- "hireDate": new Date(2011, 4, 27),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 2,
- "employees": [{
- "id": 91,
- "name": "Guinevere Osborn",
- "reportsTo": 90,
- "phone": "(424) 741-0006",
- "extension": 3166,
- "hireDate": new Date(2014, 11, 19),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 3
- }, {
- "id": 92,
- "name": "Olga Strong",
- "reportsTo": 90,
- "phone": "(949) 417-1168",
- "extension": 4568,
- "hireDate": new Date(2015, 5, 28),
- "fullTime": true,
- "position": "Graphic Designer",
- "timeInPosition": 4
- }, {
- "id": 93,
- "name": "Robert Orr",
- "reportsTo": 90,
- "phone": "(977) 341-3721",
- "extension": 9241,
- "hireDate": new Date(2012, 8, 20),
- "fullTime": false,
- "position": "Support Officer",
- "timeInPosition": 6
- }, {
- "id": 95,
- "name": "Odette Sears",
- "reportsTo": 90,
- "phone": "(264) 818-6576",
- "extension": 1914,
- "hireDate": new Date(2013, 7, 5),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }]
- }]
- }, {
- "id": 45,
- "name": "Zelda Medina",
- "reportsTo": 32,
- "phone": "(563) 359-6023",
- "extension": 2600,
- "hireDate": new Date(2012, 11, 6),
- "fullTime": true,
- "position": "QA Architect",
- "timeInPosition": 2
- }]
- }, {
- "id": 52,
- "name": "Skyler Cleveland",
- "reportsTo": 2,
- "phone": "(217) 280-5300",
- "extension": 9655,
- "hireDate": new Date(2014, 11, 10),
- "fullTime": true,
- "position": "VP, Engineering",
- "timeInPosition": 2,
- "employees": [{
- "id": 40,
- "name": "Karleigh Garza",
- "reportsTo": 52,
- "phone": "(370) 983-8796",
- "extension": 4044,
- "hireDate": new Date(2014, 3, 10),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 1,
- "employees": [{
- "id": 49,
- "name": "Elmo Tyson",
- "reportsTo": 40,
- "phone": "(344) 496-9555",
- "extension": 6950,
- "hireDate": new Date(2014, 9, 18),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }, {
- "id": 72,
- "name": "Stacey Lynn",
- "reportsTo": 40,
- "phone": "(140) 772-7509",
- "extension": 8396,
- "hireDate": new Date(2014, 7, 31),
- "fullTime": false,
- "position": "QA Engineer",
- "timeInPosition": 1,
- "employees": [{
- "id": 80,
- "name": "Meredith Parrish",
- "reportsTo": 72,
- "phone": "(714) 284-2408",
- "extension": 7675,
- "hireDate": new Date(2012, 11, 13),
- "fullTime": true,
- "position": "Junior QA Engineer",
- "timeInPosition": 6
- }]
- }, {
- "id": 96,
- "name": "Cassady Whitley",
- "reportsTo": 40,
- "phone": "(996) 587-8405",
- "extension": 780,
- "hireDate": new Date(2013, 5, 7),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 5
- }, {
- "id": 97,
- "name": "Haviva Campbell",
- "reportsTo": 40,
- "phone": "(263) 887-4689",
- "extension": 2808,
- "hireDate": new Date(2013, 3, 5),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 2
- }, {
- "id": 98,
- "name": "Cameron Ayers",
- "reportsTo": 40,
- "phone": "(470) 709-8030",
- "extension": 2893,
- "hireDate": new Date(2013, 8, 28),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 3
- }, {
- "id": 99,
- "name": "Martha Sargent",
- "reportsTo": 40,
- "phone": "(587) 812-4418",
- "extension": 5099,
- "hireDate": new Date(2014, 2, 27),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 100,
- "name": "Darrel Kinney",
- "reportsTo": 40,
- "phone": "(888) 483-9606",
- "extension": 4779,
- "hireDate": new Date(2014, 3, 24),
- "fullTime": false,
- "position": "Graphic Designer",
- "timeInPosition": 1
- }]
- }, {
- "id": 54,
- "name": "Kuame Frye",
- "reportsTo": 52,
- "phone": "(360) 721-5886",
- "extension": 2730,
- "hireDate": new Date(2010, 11, 17),
- "fullTime": true,
- "position": "Software Architect",
- "timeInPosition": 1,
- "employees": [{
- "id": 64,
- "name": "Ori Wynn",
- "reportsTo": 54,
- "phone": "(366) 342-0166",
- "extension": 7252,
- "hireDate": new Date(2015, 6, 21),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 0,
- "employees": [{
- "id": 6,
- "name": "Moses Duncan",
- "reportsTo": 64,
- "phone": "(421) 611-4814",
- "extension": 669,
- "hireDate": new Date(2010, 5, 24),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 6
- }, {
- "id": 12,
- "name": "Jamalia Wallace",
- "reportsTo": 64,
- "phone": "(611) 391-8016",
- "extension": 1952,
- "hireDate": new Date(2011, 9, 8),
- "fullTime": true,
- "position": "Junior Designer",
- "timeInPosition": 3
- }, {
- "id": 62,
- "name": "Palmer Gregory",
- "reportsTo": 64,
- "phone": "(360) 430-2505",
- "extension": 4337,
- "hireDate": new Date(2014, 8, 30),
- "fullTime": true,
- "position": "Designer",
- "timeInPosition": 4
- }, {
- "id": 68,
- "name": "Mallory Gilliam",
- "reportsTo": 64,
- "phone": "(878) 423-2971",
- "extension": 1341,
- "hireDate": new Date(2014, 7, 24),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 1
- }, {
- "id": 73,
- "name": "Ima Hughes",
- "reportsTo": 64,
- "phone": "(905) 485-8001",
- "extension": 1273,
- "hireDate": new Date(2013, 6, 3),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 0
- }, {
- "id": 79,
- "name": "Duncan Mathews",
- "reportsTo": 64,
- "phone": "(790) 971-9709",
- "extension": 4573,
- "hireDate": new Date(2011, 8, 21),
- "fullTime": false,
- "position": "Software Developer",
- "timeInPosition": 3
- }]
- }]
- }, {
- "id": 69,
- "name": "Sierra Beasley",
- "reportsTo": 52,
- "phone": "(271) 953-1968",
- "extension": 3324,
- "hireDate": new Date(2011, 4, 2),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 3,
- "employees": [{
- "id": 38,
- "name": "Elton Tucker",
- "reportsTo": 69,
- "phone": "(988) 930-9331",
- "extension": 9216,
- "hireDate": new Date(2015, 6, 4),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 1
- }, {
- "id": 39,
- "name": "Iona Brennan",
- "reportsTo": 69,
- "phone": "(356) 563-0600",
- "extension": 5634,
- "hireDate": new Date(2010, 9, 23),
- "fullTime": true,
- "position": "Junior Support Officer",
- "timeInPosition": 4
- }, {
- "id": 53,
- "name": "Paul Campos",
- "reportsTo": 69,
- "phone": "(899) 205-1689",
- "extension": 8586,
- "hireDate": new Date(2011, 3, 17),
- "fullTime": true,
- "position": "Interaction Designer",
- "timeInPosition": 4,
- "employees": [{
- "id": 66,
- "name": "Gloria Freeman",
- "reportsTo": 53,
- "phone": "(344) 950-9168",
- "extension": 4738,
- "hireDate": new Date(2013, 5, 6),
- "fullTime": true,
- "position": "Junior Interaction Designer",
- "timeInPosition": 0
- }]
- }, {
- "id": 57,
- "name": "Alyssa Hansen",
- "reportsTo": 69,
- "phone": "(548) 925-4799",
- "extension": 4716,
- "hireDate": new Date(2011, 1, 19),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 6
- }, {
- "id": 82,
- "name": "Yael Walters",
- "reportsTo": 69,
- "phone": "(311) 489-8191",
- "extension": 6520,
- "hireDate": new Date(2013, 7, 4),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 6
- }, {
- "id": 87,
- "name": "Dahlia Hunt",
- "reportsTo": 69,
- "phone": "(720) 339-5202",
- "extension": 3690,
- "hireDate": new Date(2011, 3, 26),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 4
- }, {
- "id": 94,
- "name": "Adria Stanley",
- "reportsTo": 69,
- "phone": "(536) 357-6391",
- "extension": 3374,
- "hireDate": new Date(2014, 7, 26),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 0
- }]
- }]
- }]
- }, {
- "id": 3,
- "name": "Priscilla Frank",
- "reportsTo": 1,
- "phone": "(278) 927-2684",
- "extension": 4183,
- "hireDate": new Date(2014, 11, 30),
- "fullTime": true,
- "position": "Chief Product Officer",
- "timeInPosition": 2,
- "employees": [{
- "id": 4,
- "name": "Ursula Holmes",
- "reportsTo": 3,
- "phone": "(302) 760-2034",
- "extension": 2226,
- "hireDate": new Date(2011, 6, 6),
- "fullTime": true,
- "position": "EVP, Product Strategy",
- "timeInPosition": 4
- }, {
- "id": 24,
- "name": "Melvin Carrillo",
- "reportsTo": 3,
- "phone": "(348) 933-5167",
- "extension": 2482,
- "hireDate": new Date(2014, 7, 21),
- "fullTime": true,
- "position": "Director, Developer Relations",
- "timeInPosition": 6,
- "employees": [{
- "id": 29,
- "name": "Martha Chavez",
- "reportsTo": 24,
- "phone": "(860) 754-3464",
- "extension": 4531,
- "hireDate": new Date(2013, 3, 12),
- "fullTime": true,
- "position": "Developer Advocate",
- "timeInPosition": 0
- }, {
- "id": 30,
- "name": "Oren Fox",
- "reportsTo": 24,
- "phone": "(572) 414-3299",
- "extension": 4849,
- "hireDate": new Date(2013, 5, 14),
- "fullTime": false,
- "position": "Developer Advocate",
- "timeInPosition": 0
- }, {
- "id": 41,
- "name": "Amos Barr",
- "reportsTo": 24,
- "phone": "(470) 381-3718",
- "extension": 7643,
- "hireDate": new Date(2010, 3, 9),
- "fullTime": true,
- "position": "Developer Advocate",
- "timeInPosition": 2
- }]
- }]
- }, {
- "id": 5,
- "name": "Anika Vega",
- "reportsTo": 1,
- "phone": "(910) 714-1802",
- "extension": 6353,
- "hireDate": new Date(2010, 2, 25),
- "fullTime": true,
- "position": "Chief Process Officer",
- "timeInPosition": 5,
- "employees": [{
- "id": 10,
- "name": "Vernon Ballard",
- "reportsTo": 5,
- "phone": "(702) 185-8890",
- "extension": 9242,
- "hireDate": new Date(2015, 6, 26),
- "fullTime": true,
- "position": "Director Facilities",
- "timeInPosition": 2,
- "employees": [{
- "id": 16,
- "name": "Ali Guy",
- "reportsTo": 10,
- "phone": "(429) 912-6578",
- "extension": 2225,
- "hireDate": new Date(2014, 6, 29),
- "fullTime": true,
- "position": "Operations Manager",
- "timeInPosition": 4,
- "employees": [{
- "id": 23,
- "name": "Bruce Reilly",
- "reportsTo": 16,
- "phone": "(995) 243-7302",
- "extension": 4815,
- "hireDate": new Date(2015, 4, 1),
- "fullTime": true,
- "position": "Head of Security",
- "timeInPosition": 1,
- "employees": [{
- "id": 26,
- "name": "Rowan Morin",
- "reportsTo": 23,
- "phone": "(792) 141-4374",
- "extension": 1844,
- "hireDate": new Date(2015, 7, 30),
- "fullTime": true,
- "position": "Building Security",
- "timeInPosition": 5
- }, {
- "id": 44,
- "name": "Benedict Soto",
- "reportsTo": 23,
- "phone": "(822) 282-5991",
- "extension": 6422,
- "hireDate": new Date(2012, 6, 1),
- "fullTime": false,
- "position": "Building Security",
- "timeInPosition": 4
- }]
- }, {
- "id": 48,
- "name": "Maryam Rios",
- "reportsTo": 16,
- "phone": "(673) 764-6720",
- "extension": 531,
- "hireDate": new Date(2014, 3, 3),
- "fullTime": true,
- "position": "Team Lead, Personal Assistants",
- "timeInPosition": 1,
- "employees": [{
- "id": 58,
- "name": "Rose Mcintyre",
- "reportsTo": 48,
- "phone": "(771) 615-4590",
- "extension": 7094,
- "hireDate": new Date(2015, 6, 30),
- "fullTime": false,
- "position": "Personal Assistant",
- "timeInPosition": 6
- }]
- }]
- }]
- }]
- }, {
- "id": 7,
- "name": "Nevada Hart",
- "reportsTo": 1,
- "phone": "(254) 220-1576",
- "extension": 6649,
- "hireDate": new Date(2015, 8, 17),
- "fullTime": true,
- "position": "Chief Financial Officer",
- "timeInPosition": 6,
- "employees": [{
- "id": 14,
- "name": "Zena Sanford",
- "reportsTo": 7,
- "phone": "(437) 568-8160",
- "extension": 4452,
- "hireDate": new Date(2010, 11, 30),
- "fullTime": true,
- "position": "VP, Finance",
- "timeInPosition": 4
- }, {
- "id": 15,
- "name": "Quinlan Howe",
- "reportsTo": 7,
- "phone": "(464) 334-9748",
- "extension": 8722,
- "hireDate": new Date(2011, 6, 9),
- "fullTime": false,
- "position": "Senior Director, Finance",
- "timeInPosition": 0,
- "employees": [{
- "id": 17,
- "name": "Indira Lopez",
- "reportsTo": 15,
- "phone": "(301) 368-0938",
- "extension": 8027,
- "hireDate": new Date(2013, 8, 18),
- "fullTime": true,
- "position": "ERP Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 18,
- "name": "Lareina Lara",
- "reportsTo": 17,
- "phone": "(233) 457-7482",
- "extension": 1996,
- "hireDate": new Date(2010, 4, 30),
- "fullTime": true,
- "position": "ERP Solutions Consultant",
- "timeInPosition": 6
- }, {
- "id": 19,
- "name": "Maxwell Wise",
- "reportsTo": 17,
- "phone": "(570) 494-2531",
- "extension": 9865,
- "hireDate": new Date(2012, 5, 19),
- "fullTime": true,
- "position": "Systems Engineer",
- "timeInPosition": 0
- }]
- }, {
- "id": 20,
- "name": "Hunter Mcbride",
- "reportsTo": 15,
- "phone": "(409) 442-7016",
- "extension": 4284,
- "hireDate": new Date(2012, 10, 20),
- "fullTime": true,
- "position": "Senior Director, Tax",
- "timeInPosition": 3
- }, {
- "id": 21,
- "name": "Jana Serrano",
- "reportsTo": 15,
- "phone": "(910) 718-4620",
- "extension": 6970,
- "hireDate": new Date(2010, 4, 2),
- "fullTime": true,
- "position": "Financial Planning & Analysis Manager",
- "timeInPosition": 2
- }, {
- "id": 22,
- "name": "Zachery Shelton",
- "reportsTo": 15,
- "phone": "(310) 240-8675",
- "extension": 4527,
- "hireDate": new Date(2011, 11, 23),
- "fullTime": false,
- "position": "Corporate Finance Controller",
- "timeInPosition": 6,
- "employees": [{
- "id": 28,
- "name": "Cullen Freeman",
- "reportsTo": 22,
- "phone": "(136) 554-8814",
- "extension": 9861,
- "hireDate": new Date(2014, 3, 15),
- "fullTime": true,
- "position": "Treasurer Accountant",
- "timeInPosition": 2
- }, {
- "id": 31,
- "name": "Quinn Dean",
- "reportsTo": 22,
- "phone": "(152) 613-3507",
- "extension": 6621,
- "hireDate": new Date(2015, 1, 29),
- "fullTime": true,
- "position": "Accountant",
- "timeInPosition": 6
- }, {
- "id": 34,
- "name": "Samantha Brady",
- "reportsTo": 22,
- "phone": "(206) 398-4328",
- "extension": 1157,
- "hireDate": new Date(2011, 2, 13),
- "fullTime": true,
- "position": "Accountant",
- "timeInPosition": 2,
- "employees": [{
- "id": 35,
- "name": "Tamara Green",
- "reportsTo": 34,
- "phone": "(219) 248-2789",
- "extension": 4880,
- "hireDate": new Date(2014, 2, 4),
- "fullTime": true,
- "position": "Junior Accountant",
- "timeInPosition": 6
- }]
- }, {
- "id": 36,
- "name": "Olympia Coleman",
- "reportsTo": 22,
- "phone": "(944) 853-6383",
- "extension": 2136,
- "hireDate": new Date(2013, 7, 31),
- "fullTime": true,
- "position": "Collections Manager",
- "timeInPosition": 3
- }, {
- "id": 37,
- "name": "Breanna Goodwin",
- "reportsTo": 22,
- "phone": "(379) 988-9630",
- "extension": 5898,
- "hireDate": new Date(2010, 5, 23),
- "fullTime": false,
- "position": "Payroll Specialist",
- "timeInPosition": 4
- }]
- }, {
- "id": 27,
- "name": "Curran Travis",
- "reportsTo": 15,
- "phone": "(438) 135-8033",
- "extension": 3841,
- "hireDate": new Date(2011, 6, 13),
- "fullTime": true,
- "position": "Finance Controller",
- "timeInPosition": 5
- }]
- }]
- }, {
- "id": 8,
- "name": "Hunter Fry",
- "reportsTo": 1,
- "phone": "(766) 358-9858",
- "extension": 3741,
- "hireDate": new Date(2011, 2, 12),
- "fullTime": false,
- "position": "General Counsel",
- "timeInPosition": 3,
- "employees": [{
- "id": 9,
- "name": "Kuame Carrillo",
- "reportsTo": 8,
- "phone": "(192) 383-1305",
- "extension": 9228,
- "hireDate": new Date(2011, 2, 22),
- "fullTime": true,
- "position": "Associate General Councel",
- "timeInPosition": 0
- }, {
- "id": 13,
- "name": "Stacy Todd",
- "reportsTo": 8,
- "phone": "(925) 286-3327",
- "extension": 8565,
- "hireDate": new Date(2014, 7, 5),
- "fullTime": true,
- "position": "Councel",
- "timeInPosition": 0
- }, {
- "id": 33,
- "name": "Valentine Wyatt",
- "reportsTo": 8,
- "phone": "(165) 166-6205",
- "extension": 3588,
- "hireDate": new Date(2015, 5, 21),
- "fullTime": true,
- "position": "Councel",
- "timeInPosition": 5
- }, {
- "id": 86,
- "name": "Daniel Mccarthy",
- "reportsTo": 8,
- "phone": "(624) 483-6206",
- "extension": 9112,
- "hireDate": new Date(2013, 12, 3),
- "fullTime": false,
- "position": "Staff Attorney",
- "timeInPosition": 0
- }]
- }]
- }];
- export default employees;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/different-row-color-per-level/main.jsx b/docs/knowledge-base/examples/treelist/different-row-color-per-level/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treelist/different-row-color-per-level/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/drag-and-drop/app.jsx b/docs/knowledge-base/examples/treelist/drag-and-drop/app.jsx
deleted file mode 100644
index 2c39b901..00000000
--- a/docs/knowledge-base/examples/treelist/drag-and-drop/app.jsx
+++ /dev/null
@@ -1,148 +0,0 @@
-import * as React from 'react';
-import {
- TreeList, getItemPath
-} from '@progress/kendo-react-treelist';
-
-const removeItem = (tree, itemLevel) => {
- const itemPath = getItemPath(tree, itemLevel, subItemsField);
- const item = itemPath.pop();
- const parent = itemPath.pop();
- const itemIndex = itemLevel[itemLevel.length - 1];
- (parent ? parent[subItemsField] : tree).splice(itemIndex, 1);
-
- return item;
-};
-
-const insertItem = (tree, insertLevel, item) => {
- const destinationItemPath = getItemPath(tree, insertLevel, subItemsField);
- const destinationItem = destinationItemPath.pop();
- const destinationParent = destinationItemPath.pop();
- if (destinationParent) {
- const insertAt = destinationParent[subItemsField].indexOf(destinationItem) + 1;
- const destItems = destinationParent[subItemsField].slice();
- destItems.splice(insertAt, 0, item);
- destinationParent[subItemsField] = destItems;
- } else {
- tree.splice(insertLevel[0] + 1, 0, item);
- }
-};
-
-const subItemsField = 'subItems';
-const expandField = 'expanded';
-const columns = [
- { field: 'name', title: 'Name', width: 250, expandable: true }
-];
-
-const tree1 = [
- { name: 'data 1', [expandField]: true, [subItemsField]: [{ name: 'data 1.1', [expandField]: true, [subItemsField]: [{ name: 'data 1.2' }] }] }
-];
-
-const tree2 = [
- { name: 'data 2', [expandField]: true, [subItemsField]: [{ name: 'data 2.1', [expandField]: true, [subItemsField]: [{ name: 'data 2.2' }] }] }
-];
-
-const RowRender = (properties) => {
- const { row, props, onDrop, onDragStart } = properties;
- const additionalProps = {
- onDragStart: (e) => onDragStart(e, props),
- onDragOver: (e) => { e.preventDefault(); },
- onDrop: (e) => onDrop(e, props),
- draggable: true
- };
- return React.cloneElement(row, { ...row.props, ...additionalProps }, row.props.children)
-}
-
-class App extends React.Component {
- state = {
- data1: tree1,
- data2: tree2,
- dragFrom: '',
- dragged: null
- };
-
- handleOnDropFirst = (_e, props) => {
- if (this.state.dragFrom === 'second') {
- const { dragged, data1, data2 } = this.state;
- const { dataItem, level } = dragged;
- const newData1 = [...data1];
- const newData2 = [...data2];
- removeItem(newData2, level);
- insertItem(newData1, props.level, dataItem);
-
- this.setState({
- data1: newData1,
- data2: newData2
- });
- }
- }
- handleDragStartFirst = (_e, props) => {
- const { dataItem, level } = props;
- this.setState({
- dragFrom: "first",
- dragged: { dataItem, level }
- });
- }
-
- handleOnDropSecond = (_e, props) => {
- if (this.state.dragFrom === 'first') {
- const { dragged, data1, data2 } = this.state;
- const { dataItem, level } = dragged;
- const newData1 = [...data1];
- const newData2 = [...data2];
- removeItem(newData1, level);
- insertItem(newData2, props.level, dataItem);
-
- this.setState({
- data1: newData1,
- data2: newData2
- });
- }
- }
-
- handleDragStartSecond = (_e, props) => {
- const { dataItem, level } = props;
- this.setState({
- dragFrom: "second",
- dragged: { dataItem, level }
- });
- }
-
- rowForTreeList1 = (row, props) => {
- return
- }
-
- rowForTreeList2 = (row, props) => {
- return
- }
-
- render() {
- return (
- <>
-
-
-
-
-
-
-
- >
- );
- }
-}
-
-export default App;
-
diff --git a/docs/knowledge-base/examples/treelist/drag-and-drop/main.jsx b/docs/knowledge-base/examples/treelist/drag-and-drop/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treelist/drag-and-drop/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/drag-drop-to-element/app.jsx b/docs/knowledge-base/examples/treelist/drag-drop-to-element/app.jsx
deleted file mode 100644
index a4c363fb..00000000
--- a/docs/knowledge-base/examples/treelist/drag-drop-to-element/app.jsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import * as React from 'react';
-import { Grid, GridColumn } from '@progress/kendo-react-grid';
-import { TreeList } from '@progress/kendo-react-treelist';
-import gridData from './data.js';
-const columns = [
- {
- field: 'taskID',
- title: 'taskID',
- width: '250px',
- expandable: true,
- },
- {
- field: 'title',
- title: 'Title',
- },
-];
-const App = () => {
- const div1Ref = React.createRef();
- const [DropedItem, setDropedItem] = React.useState([]);
- const [dragItem, setDragItem] = React.useState('');
-
- React.useEffect(() => {
- let divEl = div1Ref.current;
- const preventDragover = (event) => {
- event.preventDefault();
- };
-
- const handleDropItem = (event) => {
- setDropedItem(dragItem);
- };
-
- divEl.addEventListener('drop', handleDropItem);
- divEl.addEventListener('dragover', preventDragover);
-
- return () => {
- divEl.removeEventListener('drop', handleDropItem);
- divEl.removeEventListener('dragover', preventDragover);
- };
- }, [dragItem]);
-
- const GridRowRender = (tr, props) => {
- const trProps = {
- draggable: true,
- onDragStart: (e) => {
- setDragItem(props.dataItem);
- },
- };
- return React.cloneElement(tr, { ...trProps }, tr.props.children);
- };
- return (
- <>
-
- {DropedItem.title}
-
-
-
- >
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/treelist/drag-drop-to-element/data.js b/docs/knowledge-base/examples/treelist/drag-drop-to-element/data.js
deleted file mode 100644
index 46c8abca..00000000
--- a/docs/knowledge-base/examples/treelist/drag-drop-to-element/data.js
+++ /dev/null
@@ -1,29 +0,0 @@
-const data = [
- {
- taskID: 1,
- ownerId: 1,
- title: "Fast and furious 6"
- },
- {
- taskID: 2,
- ownerId: 3,
- title: "The Internship"
- },
- {
- taskID: 3,
- ownerId: 2,
- title: "The Perks of Being a Wallflower"
- },
- {
- taskID: 4,
- ownerId: 1,
- title: "The Help"
- },
- {
- taskID: 5,
- ownerId: 2,
- title: "Now You See Me"
- }
-];
-
-export default data;
diff --git a/docs/knowledge-base/examples/treelist/drag-drop-to-element/main.jsx b/docs/knowledge-base/examples/treelist/drag-drop-to-element/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treelist/drag-drop-to-element/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/pager-at-bottom/app.jsx b/docs/knowledge-base/examples/treelist/pager-at-bottom/app.jsx
deleted file mode 100644
index a02ab747..00000000
--- a/docs/knowledge-base/examples/treelist/pager-at-bottom/app.jsx
+++ /dev/null
@@ -1,90 +0,0 @@
-import * as React from "react";
-import {
- TreeList,
- mapTreeItem,
- extendDataItem
-} from "@progress/kendo-react-treelist";
-
-import { TreeListPager } from "./pager.jsx";
-
-import { generateData } from "./shared-treelist-data";
-
-const numberOfColumns = 4;
-const columnWidth = 200;
-const numberOfRows = 5000;
-const subItemsField = "subItems";
-const expandField = "expanded";
-
-const { columns, data } = generateData(
- numberOfColumns,
- columnWidth,
- numberOfRows,
- subItemsField
-);
-
-class App extends React.Component {
- state = {
- data: [...data],
- expanded: [],
- skip: 0,
- take: 20
- };
-
- onExpandChange = event => {
- const expanded = !event.value;
- const tree = [...this.state.data];
-
- mapTreeItem(tree, event.level, subItemsField, item =>
- extendDataItem(item, subItemsField, { [expandField]: expanded })
- );
-
- this.setState({
- data: tree,
- expanded: event.value
- ? this.state.expanded.filter(id => id !== event.dataItem.id)
- : [...this.state.expanded, event.dataItem.id]
- });
- };
-
- onPageChange = event => {
- const { skip, take } = event;
- this.setState({ skip, take });
- };
-
- getTotal = () => {
- let total = numberOfRows;
- this.state.data.map(i => {
- if (i.expanded == true) {
- total = total + i.subItems.length;
- }
- });
- return total;
- };
-
- render() {
- return (
- <>
-
-
- >
- );
- }
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/treelist/pager-at-bottom/main.jsx b/docs/knowledge-base/examples/treelist/pager-at-bottom/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treelist/pager-at-bottom/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/pager-at-bottom/pager.jsx b/docs/knowledge-base/examples/treelist/pager-at-bottom/pager.jsx
deleted file mode 100644
index 7ca81e7d..00000000
--- a/docs/knowledge-base/examples/treelist/pager-at-bottom/pager.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from "react";
-import { Pager } from "@progress/kendo-react-data-tools";
-
-export const TreeListPager = function(props) {
- return (
-
- );
-};
diff --git a/docs/knowledge-base/examples/treelist/treelist-custom-editor/MyCustomTreeListTextEditor.jsx b/docs/knowledge-base/examples/treelist/treelist-custom-editor/MyCustomTreeListTextEditor.jsx
deleted file mode 100644
index 91cacc2f..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-custom-editor/MyCustomTreeListTextEditor.jsx
+++ /dev/null
@@ -1,63 +0,0 @@
-import * as React from 'react';
-import { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';
-
-import { classNames } from '@progress/kendo-react-common';
-const TREELIST_COL_INDEX_ATTRIBUTE = 'data-grid-col-index';
-
-function getNestedValue(fieldName, dataItem) {
- const path = (fieldName || '').split('.');
- let data = dataItem;
- path.forEach((p) => {
- data = data ? data[p] : undefined;
- });
-
- return data;
-}
-export const MyCustomTreeListTextEditor = (props) => {
- console.log(props);
- const onChange = React.useCallback(
- (event) => {
- if (props.onChange) {
- props.onChange({
- dataItem: props.dataItem,
- level: props.level,
- field: props.field,
- syntheticEvent: event,
- value: event.target.value,
- });
- }
- },
- [props.onChange, props.dataItem, props.level, props.field]
- );
- const navigationAttributes = useTableKeyboardNavigation(props.id);
- const editCellClasses = classNames(
- {
- ['k-state-selected']: props.isSelected,
- },
- props.className
- );
-
- const defaultRendering = (
-
-
-
- );
-
- return props.render
- ? props.render.call(undefined, defaultRendering, props)
- : defaultRendering;
-};
diff --git a/docs/knowledge-base/examples/treelist/treelist-custom-editor/app.jsx b/docs/knowledge-base/examples/treelist/treelist-custom-editor/app.jsx
deleted file mode 100644
index c5de1144..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-custom-editor/app.jsx
+++ /dev/null
@@ -1,198 +0,0 @@
-import * as React from 'react';
-import {
- TreeList,
- TreeListToolbar,
- mapTree,
- extendDataItem,
- removeItems,
- modifySubItems,
- TreeListTextEditor,
- TreeListBooleanEditor,
-} from '@progress/kendo-react-treelist';
-import MyCommandCell from './my-command-cell';
-import employees from './data';
-import { MyCustomTreeListTextEditor } from './MyCustomTreeListTextEditor';
-const subItemsField = 'employees';
-const expandField = 'expanded';
-const editField = 'inEdit';
-const App = () => {
- const [state, setState] = React.useState({
- data: employees.slice(),
- expanded: [1, 2, 32],
- inEdit: [],
- });
-
- const addChild = (dataItem) => {
- const newRecord = createNewItem();
- setState({
- ...state,
- inEdit: [...state.inEdit, newRecord],
- expanded: [...state.expanded, dataItem.id],
- data: modifySubItems(
- state.data,
- subItemsField,
- (item) => item.id === dataItem.id,
- (subItems) => [newRecord, ...subItems]
- ),
- });
- };
-
- const enterEdit = (dataItem) => {
- setState({
- ...state,
- inEdit: [...state.inEdit, extendDataItem(dataItem, subItemsField)],
- });
- };
-
- const save = (dataItem) => {
- const { isNew, inEdit, ...itemToSave } = dataItem;
- setState({
- ...state,
- data: mapTree(state.data, subItemsField, (item) =>
- item.id === itemToSave.id ? itemToSave : item
- ),
- inEdit: state.inEdit.filter((i) => i.id !== itemToSave.id),
- });
- };
-
- const cancel = (editedItem) => {
- const { inEdit, data } = state;
-
- if (editedItem.isNew) {
- return remove(editedItem);
- }
-
- setState({
- ...state,
- data: mapTree(data, subItemsField, (item) =>
- item.id === editedItem.id ? inEdit.find((i) => i.id === item.id) : item
- ),
- inEdit: inEdit.filter((i) => i.id !== editedItem.id),
- });
- };
-
- const remove = (dataItem) => {
- setState({
- ...state,
- data: removeItems(state.data, subItemsField, (i) => i.id === dataItem.id),
- inEdit: state.inEdit.filter((i) => i.id !== dataItem.id),
- });
- };
-
- const onExpandChange = (e) => {
- setState({
- ...state,
- expanded: e.value
- ? state.expanded.filter((id) => id !== e.dataItem.id)
- : [...state.expanded, e.dataItem.id],
- });
- };
-
- const onItemChange = (event) => {
- const field = event.field;
- setState({
- ...state,
- data: mapTree(state.data, subItemsField, (item) =>
- item.id === event.dataItem.id
- ? extendDataItem(item, subItemsField, {
- [field]: event.value,
- })
- : item
- ),
- });
- };
-
- const addRecord = () => {
- const newRecord = createNewItem();
- setState({
- ...state,
- data: [newRecord, ...state.data],
- inEdit: [...state.inEdit, { ...newRecord }],
- });
- };
-
- const createNewItem = () => {
- const timestamp = new Date().getTime();
- return {
- id: timestamp,
- isNew: true,
- };
- };
-
- const CommandCell = MyCommandCell(
- enterEdit,
- remove,
- save,
- cancel,
- addChild,
- editField
- );
-
- const columns = [
- {
- field: 'name',
- title: 'Name',
- width: '280px',
- editCell: React.useCallback(
- (props) => ,
- []
- ),
- expandable: true,
- },
- {
- field: 'position',
- title: 'Position',
- width: '260px',
- format: '8',
- editCell: React.useCallback(
- (props) => ,
- []
- ),
- },
- {
- field: 'fullTime',
- title: 'Full Time',
- width: '160px',
- editCell: TreeListBooleanEditor,
- },
- {
- cell: CommandCell,
- width: '360px',
- },
- ];
-
- const { data, expanded, inEdit } = state;
- return (
-
- extendDataItem(item, subItemsField, {
- [expandField]: expanded.includes(item.id),
- [editField]: Boolean(inEdit.find((i) => i.id === item.id)),
- })
- )}
- editField={editField}
- expandField={expandField}
- subItemsField={subItemsField}
- onItemChange={onItemChange}
- onExpandChange={onExpandChange}
- columns={columns}
- toolbar={
-
-
- Add new
-
-
- }
- />
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/treelist/treelist-custom-editor/data.js b/docs/knowledge-base/examples/treelist/treelist-custom-editor/data.js
deleted file mode 100644
index ab659696..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-custom-editor/data.js
+++ /dev/null
@@ -1,1020 +0,0 @@
-const employees = [{
- "id": 1,
- "name": "Daryl Sweeney",
- "reportsTo": null,
- "phone": "(555) 924-9726",
- "extension": 8253,
- "hireDate": new Date(2012, 2, 7),
- "fullTime": true,
- "position": "CEO",
- "timeInPosition": 2,
- "employees": [{
- "id": 2,
- "name": "Guy Wooten",
- "reportsTo": 1,
- "phone": "(438) 738-4935",
- "extension": 1155,
- "hireDate": new Date(2010, 3, 3),
- "fullTime": true,
- "position": "Chief Technical Officer",
- "timeInPosition": 1,
- "employees": [{
- "id": 32,
- "name": "Buffy Weber",
- "reportsTo": 2,
- "phone": "(699) 838-6121",
- "extension": 8933,
- "hireDate": new Date(2011, 7, 11),
- "fullTime": true,
- "position": "VP, Engineering",
- "timeInPosition": 2,
- "employees": [{
- "id": 11,
- "name": "Hyacinth Hood",
- "reportsTo": 32,
- "phone": "(889) 345-2438",
- "extension": 8564,
- "hireDate": new Date(2014, 2, 3),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 1,
- "employees": [{
- "id": 60,
- "name": "Akeem Carr",
- "reportsTo": 11,
- "phone": "(738) 136-2814",
- "extension": 9353,
- "hireDate": new Date(2011, 4, 21),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 2
- }, {
- "id": 78,
- "name": "Rinah Simon",
- "reportsTo": 11,
- "phone": "(285) 912-5271",
- "extension": 7795,
- "hireDate": new Date(2012, 10, 11),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }]
- }, {
- "id": 42,
- "name": "Gage Daniels",
- "reportsTo": 32,
- "phone": "(107) 290-6260",
- "extension": 896,
- "hireDate": new Date(2013, 5, 16),
- "fullTime": true,
- "position": "Software Architect",
- "timeInPosition": 5
- }, {
- "id": 43,
- "name": "Constance Vazquez",
- "reportsTo": 32,
- "phone": "(800) 301-1978",
- "extension": 5141,
- "hireDate": new Date(2011, 6, 7),
- "fullTime": true,
- "position": "Director, Engineering",
- "timeInPosition": 1,
- "employees": [{
- "id": 46,
- "name": "Darrel Solis",
- "reportsTo": 43,
- "phone": "(327) 977-0216",
- "extension": 7779,
- "hireDate": new Date(2015, 4, 25),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 47,
- "name": "Brian Yang",
- "reportsTo": 46,
- "phone": "(565) 146-5435",
- "extension": 3885,
- "hireDate": new Date(2012, 9, 27),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 50,
- "name": "Lillian Bradshaw",
- "reportsTo": 46,
- "phone": "(323) 509-3479",
- "extension": 5426,
- "hireDate": new Date(2014, 5, 10),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 2
- }, {
- "id": 51,
- "name": "Christian Palmer",
- "reportsTo": 46,
- "phone": "(490) 421-8718",
- "extension": 3706,
- "hireDate": new Date(2012, 12, 27),
- "fullTime": false,
- "position": "Technical Lead",
- "timeInPosition": 1
- }, {
- "id": 55,
- "name": "Summer Mosley",
- "reportsTo": 46,
- "phone": "(784) 962-2301",
- "extension": 5492,
- "hireDate": new Date(2010, 3, 2),
- "fullTime": true,
- "position": "QA Engineer",
- "timeInPosition": 5
- }, {
- "id": 56,
- "name": "Barry Ayers",
- "reportsTo": 46,
- "phone": "(452) 373-9227",
- "extension": 1308,
- "hireDate": new Date(2011, 10, 11),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }, {
- "id": 59,
- "name": "Keiko Espinoza",
- "reportsTo": 46,
- "phone": "(226) 600-5305",
- "extension": 9363,
- "hireDate": new Date(2011, 9, 18),
- "fullTime": true,
- "position": "Junior QA Engineer",
- "timeInPosition": 4
- }, {
- "id": 61,
- "name": "Candace Pickett",
- "reportsTo": 46,
- "phone": "(120) 117-7475",
- "extension": 5178,
- "hireDate": new Date(2010, 5, 6),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 0
- }]
- }, {
- "id": 63,
- "name": "Mia Caldwell",
- "reportsTo": 43,
- "phone": "(848) 636-6470",
- "extension": 6368,
- "hireDate": new Date(2012, 10, 7),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 65,
- "name": "Thomas Terry",
- "reportsTo": 63,
- "phone": "(764) 831-4248",
- "extension": 3574,
- "hireDate": new Date(2015, 6, 15),
- "fullTime": false,
- "position": "Senior Enterprise Support Officer",
- "timeInPosition": 2
- }, {
- "id": 67,
- "name": "Ruth Downs",
- "reportsTo": 63,
- "phone": "(138) 991-1440",
- "extension": 8067,
- "hireDate": new Date(2013, 7, 13),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 5
- }, {
- "id": 70,
- "name": "Yasir Wilder",
- "reportsTo": 63,
- "phone": "(759) 701-8665",
- "extension": 8350,
- "hireDate": new Date(2010, 11, 8),
- "fullTime": true,
- "position": "Senior QA Enginner",
- "timeInPosition": 3
- }, {
- "id": 71,
- "name": "Flavia Short",
- "reportsTo": 63,
- "phone": "(370) 133-9238",
- "extension": 6390,
- "hireDate": new Date(2013, 2, 21),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 0
- }, {
- "id": 74,
- "name": "Aaron Roach",
- "reportsTo": 63,
- "phone": "(958) 717-9230",
- "extension": 4899,
- "hireDate": new Date(2011, 7, 30),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 6
- }, {
- "id": 75,
- "name": "Eric Russell",
- "reportsTo": 63,
- "phone": "(516) 575-8505",
- "extension": 2224,
- "hireDate": new Date(2012, 10, 28),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 3
- }, {
- "id": 76,
- "name": "Cheyenne Olson",
- "reportsTo": 63,
- "phone": "(241) 645-0257",
- "extension": 9181,
- "hireDate": new Date(2015, 5, 19),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 5
- }, {
- "id": 77,
- "name": "Shaine Avila",
- "reportsTo": 63,
- "phone": "(844) 435-1360",
- "extension": 3374,
- "hireDate": new Date(2010, 1, 31),
- "fullTime": true,
- "position": "UI Designer",
- "timeInPosition": 5
- }, {
- "id": 81,
- "name": "Chantale Long",
- "reportsTo": 63,
- "phone": "(252) 419-6891",
- "extension": 7868,
- "hireDate": new Date(2010, 6, 17),
- "fullTime": true,
- "position": "Senior QA Enginner",
- "timeInPosition": 1
- }, {
- "id": 83,
- "name": "Dane Cruz",
- "reportsTo": 63,
- "phone": "(946) 701-6165",
- "extension": 3828,
- "hireDate": new Date(2014, 10, 8),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 2
- }, {
- "id": 84,
- "name": "Regan Patterson",
- "reportsTo": 63,
- "phone": "(265) 946-1765",
- "extension": 6955,
- "hireDate": new Date(2012, 3, 1),
- "fullTime": true,
- "position": "Technical Writer",
- "timeInPosition": 6
- }, {
- "id": 85,
- "name": "Drew Mckay",
- "reportsTo": 63,
- "phone": "(327) 293-0162",
- "extension": 6904,
- "hireDate": new Date(2011, 3, 25),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 88,
- "name": "Bevis Miller",
- "reportsTo": 63,
- "phone": "(525) 557-0169",
- "extension": 6978,
- "hireDate": new Date(2011, 4, 19),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 5
- }, {
- "id": 89,
- "name": "Bruce Mccarty",
- "reportsTo": 63,
- "phone": "(936) 777-8730",
- "extension": 6552,
- "hireDate": new Date(2014, 3, 28),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 5
- }]
- }, {
- "id": 90,
- "name": "Ocean Blair",
- "reportsTo": 43,
- "phone": "(343) 586-6614",
- "extension": 1424,
- "hireDate": new Date(2011, 4, 27),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 2,
- "employees": [{
- "id": 91,
- "name": "Guinevere Osborn",
- "reportsTo": 90,
- "phone": "(424) 741-0006",
- "extension": 3166,
- "hireDate": new Date(2014, 11, 19),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 3
- }, {
- "id": 92,
- "name": "Olga Strong",
- "reportsTo": 90,
- "phone": "(949) 417-1168",
- "extension": 4568,
- "hireDate": new Date(2015, 5, 28),
- "fullTime": true,
- "position": "Graphic Designer",
- "timeInPosition": 4
- }, {
- "id": 93,
- "name": "Robert Orr",
- "reportsTo": 90,
- "phone": "(977) 341-3721",
- "extension": 9241,
- "hireDate": new Date(2012, 8, 20),
- "fullTime": false,
- "position": "Support Officer",
- "timeInPosition": 6
- }, {
- "id": 95,
- "name": "Odette Sears",
- "reportsTo": 90,
- "phone": "(264) 818-6576",
- "extension": 1914,
- "hireDate": new Date(2013, 7, 5),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }]
- }]
- }, {
- "id": 45,
- "name": "Zelda Medina",
- "reportsTo": 32,
- "phone": "(563) 359-6023",
- "extension": 2600,
- "hireDate": new Date(2012, 11, 6),
- "fullTime": true,
- "position": "QA Architect",
- "timeInPosition": 2
- }]
- }, {
- "id": 52,
- "name": "Skyler Cleveland",
- "reportsTo": 2,
- "phone": "(217) 280-5300",
- "extension": 9655,
- "hireDate": new Date(2014, 11, 10),
- "fullTime": true,
- "position": "VP, Engineering",
- "timeInPosition": 2,
- "employees": [{
- "id": 40,
- "name": "Karleigh Garza",
- "reportsTo": 52,
- "phone": "(370) 983-8796",
- "extension": 4044,
- "hireDate": new Date(2014, 3, 10),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 1,
- "employees": [{
- "id": 49,
- "name": "Elmo Tyson",
- "reportsTo": 40,
- "phone": "(344) 496-9555",
- "extension": 6950,
- "hireDate": new Date(2014, 9, 18),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }, {
- "id": 72,
- "name": "Stacey Lynn",
- "reportsTo": 40,
- "phone": "(140) 772-7509",
- "extension": 8396,
- "hireDate": new Date(2014, 7, 31),
- "fullTime": false,
- "position": "QA Engineer",
- "timeInPosition": 1,
- "employees": [{
- "id": 80,
- "name": "Meredith Parrish",
- "reportsTo": 72,
- "phone": "(714) 284-2408",
- "extension": 7675,
- "hireDate": new Date(2012, 11, 13),
- "fullTime": true,
- "position": "Junior QA Engineer",
- "timeInPosition": 6
- }]
- }, {
- "id": 96,
- "name": "Cassady Whitley",
- "reportsTo": 40,
- "phone": "(996) 587-8405",
- "extension": 780,
- "hireDate": new Date(2013, 5, 7),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 5
- }, {
- "id": 97,
- "name": "Haviva Campbell",
- "reportsTo": 40,
- "phone": "(263) 887-4689",
- "extension": 2808,
- "hireDate": new Date(2013, 3, 5),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 2
- }, {
- "id": 98,
- "name": "Cameron Ayers",
- "reportsTo": 40,
- "phone": "(470) 709-8030",
- "extension": 2893,
- "hireDate": new Date(2013, 8, 28),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 3
- }, {
- "id": 99,
- "name": "Martha Sargent",
- "reportsTo": 40,
- "phone": "(587) 812-4418",
- "extension": 5099,
- "hireDate": new Date(2014, 2, 27),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 100,
- "name": "Darrel Kinney",
- "reportsTo": 40,
- "phone": "(888) 483-9606",
- "extension": 4779,
- "hireDate": new Date(2014, 3, 24),
- "fullTime": false,
- "position": "Graphic Designer",
- "timeInPosition": 1
- }]
- }, {
- "id": 54,
- "name": "Kuame Frye",
- "reportsTo": 52,
- "phone": "(360) 721-5886",
- "extension": 2730,
- "hireDate": new Date(2010, 11, 17),
- "fullTime": true,
- "position": "Software Architect",
- "timeInPosition": 1,
- "employees": [{
- "id": 64,
- "name": "Ori Wynn",
- "reportsTo": 54,
- "phone": "(366) 342-0166",
- "extension": 7252,
- "hireDate": new Date(2015, 6, 21),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 0,
- "employees": [{
- "id": 6,
- "name": "Moses Duncan",
- "reportsTo": 64,
- "phone": "(421) 611-4814",
- "extension": 669,
- "hireDate": new Date(2010, 5, 24),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 6
- }, {
- "id": 12,
- "name": "Jamalia Wallace",
- "reportsTo": 64,
- "phone": "(611) 391-8016",
- "extension": 1952,
- "hireDate": new Date(2011, 9, 8),
- "fullTime": true,
- "position": "Junior Designer",
- "timeInPosition": 3
- }, {
- "id": 62,
- "name": "Palmer Gregory",
- "reportsTo": 64,
- "phone": "(360) 430-2505",
- "extension": 4337,
- "hireDate": new Date(2014, 8, 30),
- "fullTime": true,
- "position": "Designer",
- "timeInPosition": 4
- }, {
- "id": 68,
- "name": "Mallory Gilliam",
- "reportsTo": 64,
- "phone": "(878) 423-2971",
- "extension": 1341,
- "hireDate": new Date(2014, 7, 24),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 1
- }, {
- "id": 73,
- "name": "Ima Hughes",
- "reportsTo": 64,
- "phone": "(905) 485-8001",
- "extension": 1273,
- "hireDate": new Date(2013, 6, 3),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 0
- }, {
- "id": 79,
- "name": "Duncan Mathews",
- "reportsTo": 64,
- "phone": "(790) 971-9709",
- "extension": 4573,
- "hireDate": new Date(2011, 8, 21),
- "fullTime": false,
- "position": "Software Developer",
- "timeInPosition": 3
- }]
- }]
- }, {
- "id": 69,
- "name": "Sierra Beasley",
- "reportsTo": 52,
- "phone": "(271) 953-1968",
- "extension": 3324,
- "hireDate": new Date(2011, 4, 2),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 3,
- "employees": [{
- "id": 38,
- "name": "Elton Tucker",
- "reportsTo": 69,
- "phone": "(988) 930-9331",
- "extension": 9216,
- "hireDate": new Date(2015, 6, 4),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 1
- }, {
- "id": 39,
- "name": "Iona Brennan",
- "reportsTo": 69,
- "phone": "(356) 563-0600",
- "extension": 5634,
- "hireDate": new Date(2010, 9, 23),
- "fullTime": true,
- "position": "Junior Support Officer",
- "timeInPosition": 4
- }, {
- "id": 53,
- "name": "Paul Campos",
- "reportsTo": 69,
- "phone": "(899) 205-1689",
- "extension": 8586,
- "hireDate": new Date(2011, 3, 17),
- "fullTime": true,
- "position": "Interaction Designer",
- "timeInPosition": 4,
- "employees": [{
- "id": 66,
- "name": "Gloria Freeman",
- "reportsTo": 53,
- "phone": "(344) 950-9168",
- "extension": 4738,
- "hireDate": new Date(2013, 5, 6),
- "fullTime": true,
- "position": "Junior Interaction Designer",
- "timeInPosition": 0
- }]
- }, {
- "id": 57,
- "name": "Alyssa Hansen",
- "reportsTo": 69,
- "phone": "(548) 925-4799",
- "extension": 4716,
- "hireDate": new Date(2011, 1, 19),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 6
- }, {
- "id": 82,
- "name": "Yael Walters",
- "reportsTo": 69,
- "phone": "(311) 489-8191",
- "extension": 6520,
- "hireDate": new Date(2013, 7, 4),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 6
- }, {
- "id": 87,
- "name": "Dahlia Hunt",
- "reportsTo": 69,
- "phone": "(720) 339-5202",
- "extension": 3690,
- "hireDate": new Date(2011, 3, 26),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 4
- }, {
- "id": 94,
- "name": "Adria Stanley",
- "reportsTo": 69,
- "phone": "(536) 357-6391",
- "extension": 3374,
- "hireDate": new Date(2014, 7, 26),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 0
- }]
- }]
- }]
- }, {
- "id": 3,
- "name": "Priscilla Frank",
- "reportsTo": 1,
- "phone": "(278) 927-2684",
- "extension": 4183,
- "hireDate": new Date(2014, 11, 30),
- "fullTime": true,
- "position": "Chief Product Officer",
- "timeInPosition": 2,
- "employees": [{
- "id": 4,
- "name": "Ursula Holmes",
- "reportsTo": 3,
- "phone": "(302) 760-2034",
- "extension": 2226,
- "hireDate": new Date(2011, 6, 6),
- "fullTime": true,
- "position": "EVP, Product Strategy",
- "timeInPosition": 4
- }, {
- "id": 24,
- "name": "Melvin Carrillo",
- "reportsTo": 3,
- "phone": "(348) 933-5167",
- "extension": 2482,
- "hireDate": new Date(2014, 7, 21),
- "fullTime": true,
- "position": "Director, Developer Relations",
- "timeInPosition": 6,
- "employees": [{
- "id": 29,
- "name": "Martha Chavez",
- "reportsTo": 24,
- "phone": "(860) 754-3464",
- "extension": 4531,
- "hireDate": new Date(2013, 3, 12),
- "fullTime": true,
- "position": "Developer Advocate",
- "timeInPosition": 0
- }, {
- "id": 30,
- "name": "Oren Fox",
- "reportsTo": 24,
- "phone": "(572) 414-3299",
- "extension": 4849,
- "hireDate": new Date(2013, 5, 14),
- "fullTime": false,
- "position": "Developer Advocate",
- "timeInPosition": 0
- }, {
- "id": 41,
- "name": "Amos Barr",
- "reportsTo": 24,
- "phone": "(470) 381-3718",
- "extension": 7643,
- "hireDate": new Date(2010, 3, 9),
- "fullTime": true,
- "position": "Developer Advocate",
- "timeInPosition": 2
- }]
- }]
- }, {
- "id": 5,
- "name": "Anika Vega",
- "reportsTo": 1,
- "phone": "(910) 714-1802",
- "extension": 6353,
- "hireDate": new Date(2010, 2, 25),
- "fullTime": true,
- "position": "Chief Process Officer",
- "timeInPosition": 5,
- "employees": [{
- "id": 10,
- "name": "Vernon Ballard",
- "reportsTo": 5,
- "phone": "(702) 185-8890",
- "extension": 9242,
- "hireDate": new Date(2015, 6, 26),
- "fullTime": true,
- "position": "Director Facilities",
- "timeInPosition": 2,
- "employees": [{
- "id": 16,
- "name": "Ali Guy",
- "reportsTo": 10,
- "phone": "(429) 912-6578",
- "extension": 2225,
- "hireDate": new Date(2014, 6, 29),
- "fullTime": true,
- "position": "Operations Manager",
- "timeInPosition": 4,
- "employees": [{
- "id": 23,
- "name": "Bruce Reilly",
- "reportsTo": 16,
- "phone": "(995) 243-7302",
- "extension": 4815,
- "hireDate": new Date(2015, 4, 1),
- "fullTime": true,
- "position": "Head of Security",
- "timeInPosition": 1,
- "employees": [{
- "id": 26,
- "name": "Rowan Morin",
- "reportsTo": 23,
- "phone": "(792) 141-4374",
- "extension": 1844,
- "hireDate": new Date(2015, 7, 30),
- "fullTime": true,
- "position": "Building Security",
- "timeInPosition": 5
- }, {
- "id": 44,
- "name": "Benedict Soto",
- "reportsTo": 23,
- "phone": "(822) 282-5991",
- "extension": 6422,
- "hireDate": new Date(2012, 6, 1),
- "fullTime": false,
- "position": "Building Security",
- "timeInPosition": 4
- }]
- }, {
- "id": 48,
- "name": "Maryam Rios",
- "reportsTo": 16,
- "phone": "(673) 764-6720",
- "extension": 531,
- "hireDate": new Date(2014, 3, 3),
- "fullTime": true,
- "position": "Team Lead, Personal Assistants",
- "timeInPosition": 1,
- "employees": [{
- "id": 58,
- "name": "Rose Mcintyre",
- "reportsTo": 48,
- "phone": "(771) 615-4590",
- "extension": 7094,
- "hireDate": new Date(2015, 6, 30),
- "fullTime": false,
- "position": "Personal Assistant",
- "timeInPosition": 6
- }]
- }]
- }]
- }]
- }, {
- "id": 7,
- "name": "Nevada Hart",
- "reportsTo": 1,
- "phone": "(254) 220-1576",
- "extension": 6649,
- "hireDate": new Date(2015, 8, 17),
- "fullTime": true,
- "position": "Chief Financial Officer",
- "timeInPosition": 6,
- "employees": [{
- "id": 14,
- "name": "Zena Sanford",
- "reportsTo": 7,
- "phone": "(437) 568-8160",
- "extension": 4452,
- "hireDate": new Date(2010, 11, 30),
- "fullTime": true,
- "position": "VP, Finance",
- "timeInPosition": 4
- }, {
- "id": 15,
- "name": "Quinlan Howe",
- "reportsTo": 7,
- "phone": "(464) 334-9748",
- "extension": 8722,
- "hireDate": new Date(2011, 6, 9),
- "fullTime": false,
- "position": "Senior Director, Finance",
- "timeInPosition": 0,
- "employees": [{
- "id": 17,
- "name": "Indira Lopez",
- "reportsTo": 15,
- "phone": "(301) 368-0938",
- "extension": 8027,
- "hireDate": new Date(2013, 8, 18),
- "fullTime": true,
- "position": "ERP Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 18,
- "name": "Lareina Lara",
- "reportsTo": 17,
- "phone": "(233) 457-7482",
- "extension": 1996,
- "hireDate": new Date(2010, 4, 30),
- "fullTime": true,
- "position": "ERP Solutions Consultant",
- "timeInPosition": 6
- }, {
- "id": 19,
- "name": "Maxwell Wise",
- "reportsTo": 17,
- "phone": "(570) 494-2531",
- "extension": 9865,
- "hireDate": new Date(2012, 5, 19),
- "fullTime": true,
- "position": "Systems Engineer",
- "timeInPosition": 0
- }]
- }, {
- "id": 20,
- "name": "Hunter Mcbride",
- "reportsTo": 15,
- "phone": "(409) 442-7016",
- "extension": 4284,
- "hireDate": new Date(2012, 10, 20),
- "fullTime": true,
- "position": "Senior Director, Tax",
- "timeInPosition": 3
- }, {
- "id": 21,
- "name": "Jana Serrano",
- "reportsTo": 15,
- "phone": "(910) 718-4620",
- "extension": 6970,
- "hireDate": new Date(2010, 4, 2),
- "fullTime": true,
- "position": "Financial Planning & Analysis Manager",
- "timeInPosition": 2
- }, {
- "id": 22,
- "name": "Zachery Shelton",
- "reportsTo": 15,
- "phone": "(310) 240-8675",
- "extension": 4527,
- "hireDate": new Date(2011, 11, 23),
- "fullTime": false,
- "position": "Corporate Finance Controller",
- "timeInPosition": 6,
- "employees": [{
- "id": 28,
- "name": "Cullen Freeman",
- "reportsTo": 22,
- "phone": "(136) 554-8814",
- "extension": 9861,
- "hireDate": new Date(2014, 3, 15),
- "fullTime": true,
- "position": "Treasurer Accountant",
- "timeInPosition": 2
- }, {
- "id": 31,
- "name": "Quinn Dean",
- "reportsTo": 22,
- "phone": "(152) 613-3507",
- "extension": 6621,
- "hireDate": new Date(2015, 1, 29),
- "fullTime": true,
- "position": "Accountant",
- "timeInPosition": 6
- }, {
- "id": 34,
- "name": "Samantha Brady",
- "reportsTo": 22,
- "phone": "(206) 398-4328",
- "extension": 1157,
- "hireDate": new Date(2011, 2, 13),
- "fullTime": true,
- "position": "Accountant",
- "timeInPosition": 2,
- "employees": [{
- "id": 35,
- "name": "Tamara Green",
- "reportsTo": 34,
- "phone": "(219) 248-2789",
- "extension": 4880,
- "hireDate": new Date(2014, 2, 4),
- "fullTime": true,
- "position": "Junior Accountant",
- "timeInPosition": 6
- }]
- }, {
- "id": 36,
- "name": "Olympia Coleman",
- "reportsTo": 22,
- "phone": "(944) 853-6383",
- "extension": 2136,
- "hireDate": new Date(2013, 7, 31),
- "fullTime": true,
- "position": "Collections Manager",
- "timeInPosition": 3
- }, {
- "id": 37,
- "name": "Breanna Goodwin",
- "reportsTo": 22,
- "phone": "(379) 988-9630",
- "extension": 5898,
- "hireDate": new Date(2010, 5, 23),
- "fullTime": false,
- "position": "Payroll Specialist",
- "timeInPosition": 4
- }]
- }, {
- "id": 27,
- "name": "Curran Travis",
- "reportsTo": 15,
- "phone": "(438) 135-8033",
- "extension": 3841,
- "hireDate": new Date(2011, 6, 13),
- "fullTime": true,
- "position": "Finance Controller",
- "timeInPosition": 5
- }]
- }]
- }, {
- "id": 8,
- "name": "Hunter Fry",
- "reportsTo": 1,
- "phone": "(766) 358-9858",
- "extension": 3741,
- "hireDate": new Date(2011, 2, 12),
- "fullTime": false,
- "position": "General Counsel",
- "timeInPosition": 3,
- "employees": [{
- "id": 9,
- "name": "Kuame Carrillo",
- "reportsTo": 8,
- "phone": "(192) 383-1305",
- "extension": 9228,
- "hireDate": new Date(2011, 2, 22),
- "fullTime": true,
- "position": "Associate General Councel",
- "timeInPosition": 0
- }, {
- "id": 13,
- "name": "Stacy Todd",
- "reportsTo": 8,
- "phone": "(925) 286-3327",
- "extension": 8565,
- "hireDate": new Date(2014, 7, 5),
- "fullTime": true,
- "position": "Councel",
- "timeInPosition": 0
- }, {
- "id": 33,
- "name": "Valentine Wyatt",
- "reportsTo": 8,
- "phone": "(165) 166-6205",
- "extension": 3588,
- "hireDate": new Date(2015, 5, 21),
- "fullTime": true,
- "position": "Councel",
- "timeInPosition": 5
- }, {
- "id": 86,
- "name": "Daniel Mccarthy",
- "reportsTo": 8,
- "phone": "(624) 483-6206",
- "extension": 9112,
- "hireDate": new Date(2013, 12, 3),
- "fullTime": false,
- "position": "Staff Attorney",
- "timeInPosition": 0
- }]
- }]
- }];
- export default employees;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/treelist-custom-editor/main.jsx b/docs/knowledge-base/examples/treelist/treelist-custom-editor/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-custom-editor/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/treelist-custom-editor/my-command-cell.jsx b/docs/knowledge-base/examples/treelist/treelist-custom-editor/my-command-cell.jsx
deleted file mode 100644
index f31bbbe3..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-custom-editor/my-command-cell.jsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import * as React from 'react';
-export default function MyCommandCell(enterEdit, remove, save, cancel, addChild, editField) {
- // eslint-disable-next-line react/display-name
- return class extends React.Component {
- render() {
- const {
- dataItem
- } = this.props;
- return dataItem[editField] ?
- save(dataItem)}>
- {dataItem.isNew ? 'Add' : 'Update'}
-
- cancel(dataItem)}>{dataItem.isNew ? 'Discard' : 'Cancel'}
-
- :
- addChild(dataItem)}>
- Add Employee
-
- enterEdit(dataItem)}>
- Edit
-
- remove(dataItem)}>
- Remove
-
- ;
- }
-
- };
-}
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/treelist-custom-expand-cell/app.jsx b/docs/knowledge-base/examples/treelist/treelist-custom-expand-cell/app.jsx
deleted file mode 100644
index bfb07625..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-custom-expand-cell/app.jsx
+++ /dev/null
@@ -1,111 +0,0 @@
-import * as React from 'react';
-import {
- TreeList,
- mapTree,
- extendDataItem,
-} from '@progress/kendo-react-treelist';
-import { getter } from '@progress/kendo-react-common';
-import { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';
-import employees from './data';
-const DATA_ITEM_KEY = 'id';
-const SUB_ITEMS_FIELD = 'employees';
-const EXPAND_FIELD = 'expanded';
-const idGetter = getter(DATA_ITEM_KEY);
-const extendData = (dataState, selectedState, expandedState) => {
- return mapTree(dataState, SUB_ITEMS_FIELD, (item) =>
- extendDataItem(item, SUB_ITEMS_FIELD, {
- selected: selectedState[idGetter(item)],
- expanded: expandedState[idGetter(item)],
- })
- );
-};
-
-const nameCell = (props) => {
- const navigationAttributes = useTableKeyboardNavigation(props.id);
- const onClick = (ev) => {
- props.onExpandChange(ev, props.dataItem, props.level);
- };
- let className =
- props.dataItem[SUB_ITEMS_FIELD] &&
- props.dataItem[SUB_ITEMS_FIELD].length > 0
- ? props.expanded
- ? 'k-icon k-i-caret-alt-down'
- : 'k-icon k-i-caret-alt-right'
- : 'k-icon';
-
- return (
-
- {[...Array(props.level.length - 1)].map((e, i) => (
-
- ))}
-
-
- {props.dataItem['name']}
-
- );
-};
-const App = () => {
- const [dataState, setDataState] = React.useState(employees.slice());
- const [expandedState, setExpandedState] = React.useState({
- 1: true,
- 2: true,
- 32: true,
- });
- const onExpandChange = React.useCallback(
- (e) => {
- setExpandedState({
- ...expandedState,
- [idGetter(e.dataItem)]: !e.value,
- });
- },
- [expandedState]
- );
- return (
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/treelist/treelist-custom-expand-cell/data.js b/docs/knowledge-base/examples/treelist/treelist-custom-expand-cell/data.js
deleted file mode 100644
index ab659696..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-custom-expand-cell/data.js
+++ /dev/null
@@ -1,1020 +0,0 @@
-const employees = [{
- "id": 1,
- "name": "Daryl Sweeney",
- "reportsTo": null,
- "phone": "(555) 924-9726",
- "extension": 8253,
- "hireDate": new Date(2012, 2, 7),
- "fullTime": true,
- "position": "CEO",
- "timeInPosition": 2,
- "employees": [{
- "id": 2,
- "name": "Guy Wooten",
- "reportsTo": 1,
- "phone": "(438) 738-4935",
- "extension": 1155,
- "hireDate": new Date(2010, 3, 3),
- "fullTime": true,
- "position": "Chief Technical Officer",
- "timeInPosition": 1,
- "employees": [{
- "id": 32,
- "name": "Buffy Weber",
- "reportsTo": 2,
- "phone": "(699) 838-6121",
- "extension": 8933,
- "hireDate": new Date(2011, 7, 11),
- "fullTime": true,
- "position": "VP, Engineering",
- "timeInPosition": 2,
- "employees": [{
- "id": 11,
- "name": "Hyacinth Hood",
- "reportsTo": 32,
- "phone": "(889) 345-2438",
- "extension": 8564,
- "hireDate": new Date(2014, 2, 3),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 1,
- "employees": [{
- "id": 60,
- "name": "Akeem Carr",
- "reportsTo": 11,
- "phone": "(738) 136-2814",
- "extension": 9353,
- "hireDate": new Date(2011, 4, 21),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 2
- }, {
- "id": 78,
- "name": "Rinah Simon",
- "reportsTo": 11,
- "phone": "(285) 912-5271",
- "extension": 7795,
- "hireDate": new Date(2012, 10, 11),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }]
- }, {
- "id": 42,
- "name": "Gage Daniels",
- "reportsTo": 32,
- "phone": "(107) 290-6260",
- "extension": 896,
- "hireDate": new Date(2013, 5, 16),
- "fullTime": true,
- "position": "Software Architect",
- "timeInPosition": 5
- }, {
- "id": 43,
- "name": "Constance Vazquez",
- "reportsTo": 32,
- "phone": "(800) 301-1978",
- "extension": 5141,
- "hireDate": new Date(2011, 6, 7),
- "fullTime": true,
- "position": "Director, Engineering",
- "timeInPosition": 1,
- "employees": [{
- "id": 46,
- "name": "Darrel Solis",
- "reportsTo": 43,
- "phone": "(327) 977-0216",
- "extension": 7779,
- "hireDate": new Date(2015, 4, 25),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 47,
- "name": "Brian Yang",
- "reportsTo": 46,
- "phone": "(565) 146-5435",
- "extension": 3885,
- "hireDate": new Date(2012, 9, 27),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 50,
- "name": "Lillian Bradshaw",
- "reportsTo": 46,
- "phone": "(323) 509-3479",
- "extension": 5426,
- "hireDate": new Date(2014, 5, 10),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 2
- }, {
- "id": 51,
- "name": "Christian Palmer",
- "reportsTo": 46,
- "phone": "(490) 421-8718",
- "extension": 3706,
- "hireDate": new Date(2012, 12, 27),
- "fullTime": false,
- "position": "Technical Lead",
- "timeInPosition": 1
- }, {
- "id": 55,
- "name": "Summer Mosley",
- "reportsTo": 46,
- "phone": "(784) 962-2301",
- "extension": 5492,
- "hireDate": new Date(2010, 3, 2),
- "fullTime": true,
- "position": "QA Engineer",
- "timeInPosition": 5
- }, {
- "id": 56,
- "name": "Barry Ayers",
- "reportsTo": 46,
- "phone": "(452) 373-9227",
- "extension": 1308,
- "hireDate": new Date(2011, 10, 11),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }, {
- "id": 59,
- "name": "Keiko Espinoza",
- "reportsTo": 46,
- "phone": "(226) 600-5305",
- "extension": 9363,
- "hireDate": new Date(2011, 9, 18),
- "fullTime": true,
- "position": "Junior QA Engineer",
- "timeInPosition": 4
- }, {
- "id": 61,
- "name": "Candace Pickett",
- "reportsTo": 46,
- "phone": "(120) 117-7475",
- "extension": 5178,
- "hireDate": new Date(2010, 5, 6),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 0
- }]
- }, {
- "id": 63,
- "name": "Mia Caldwell",
- "reportsTo": 43,
- "phone": "(848) 636-6470",
- "extension": 6368,
- "hireDate": new Date(2012, 10, 7),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 65,
- "name": "Thomas Terry",
- "reportsTo": 63,
- "phone": "(764) 831-4248",
- "extension": 3574,
- "hireDate": new Date(2015, 6, 15),
- "fullTime": false,
- "position": "Senior Enterprise Support Officer",
- "timeInPosition": 2
- }, {
- "id": 67,
- "name": "Ruth Downs",
- "reportsTo": 63,
- "phone": "(138) 991-1440",
- "extension": 8067,
- "hireDate": new Date(2013, 7, 13),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 5
- }, {
- "id": 70,
- "name": "Yasir Wilder",
- "reportsTo": 63,
- "phone": "(759) 701-8665",
- "extension": 8350,
- "hireDate": new Date(2010, 11, 8),
- "fullTime": true,
- "position": "Senior QA Enginner",
- "timeInPosition": 3
- }, {
- "id": 71,
- "name": "Flavia Short",
- "reportsTo": 63,
- "phone": "(370) 133-9238",
- "extension": 6390,
- "hireDate": new Date(2013, 2, 21),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 0
- }, {
- "id": 74,
- "name": "Aaron Roach",
- "reportsTo": 63,
- "phone": "(958) 717-9230",
- "extension": 4899,
- "hireDate": new Date(2011, 7, 30),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 6
- }, {
- "id": 75,
- "name": "Eric Russell",
- "reportsTo": 63,
- "phone": "(516) 575-8505",
- "extension": 2224,
- "hireDate": new Date(2012, 10, 28),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 3
- }, {
- "id": 76,
- "name": "Cheyenne Olson",
- "reportsTo": 63,
- "phone": "(241) 645-0257",
- "extension": 9181,
- "hireDate": new Date(2015, 5, 19),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 5
- }, {
- "id": 77,
- "name": "Shaine Avila",
- "reportsTo": 63,
- "phone": "(844) 435-1360",
- "extension": 3374,
- "hireDate": new Date(2010, 1, 31),
- "fullTime": true,
- "position": "UI Designer",
- "timeInPosition": 5
- }, {
- "id": 81,
- "name": "Chantale Long",
- "reportsTo": 63,
- "phone": "(252) 419-6891",
- "extension": 7868,
- "hireDate": new Date(2010, 6, 17),
- "fullTime": true,
- "position": "Senior QA Enginner",
- "timeInPosition": 1
- }, {
- "id": 83,
- "name": "Dane Cruz",
- "reportsTo": 63,
- "phone": "(946) 701-6165",
- "extension": 3828,
- "hireDate": new Date(2014, 10, 8),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 2
- }, {
- "id": 84,
- "name": "Regan Patterson",
- "reportsTo": 63,
- "phone": "(265) 946-1765",
- "extension": 6955,
- "hireDate": new Date(2012, 3, 1),
- "fullTime": true,
- "position": "Technical Writer",
- "timeInPosition": 6
- }, {
- "id": 85,
- "name": "Drew Mckay",
- "reportsTo": 63,
- "phone": "(327) 293-0162",
- "extension": 6904,
- "hireDate": new Date(2011, 3, 25),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 88,
- "name": "Bevis Miller",
- "reportsTo": 63,
- "phone": "(525) 557-0169",
- "extension": 6978,
- "hireDate": new Date(2011, 4, 19),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 5
- }, {
- "id": 89,
- "name": "Bruce Mccarty",
- "reportsTo": 63,
- "phone": "(936) 777-8730",
- "extension": 6552,
- "hireDate": new Date(2014, 3, 28),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 5
- }]
- }, {
- "id": 90,
- "name": "Ocean Blair",
- "reportsTo": 43,
- "phone": "(343) 586-6614",
- "extension": 1424,
- "hireDate": new Date(2011, 4, 27),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 2,
- "employees": [{
- "id": 91,
- "name": "Guinevere Osborn",
- "reportsTo": 90,
- "phone": "(424) 741-0006",
- "extension": 3166,
- "hireDate": new Date(2014, 11, 19),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 3
- }, {
- "id": 92,
- "name": "Olga Strong",
- "reportsTo": 90,
- "phone": "(949) 417-1168",
- "extension": 4568,
- "hireDate": new Date(2015, 5, 28),
- "fullTime": true,
- "position": "Graphic Designer",
- "timeInPosition": 4
- }, {
- "id": 93,
- "name": "Robert Orr",
- "reportsTo": 90,
- "phone": "(977) 341-3721",
- "extension": 9241,
- "hireDate": new Date(2012, 8, 20),
- "fullTime": false,
- "position": "Support Officer",
- "timeInPosition": 6
- }, {
- "id": 95,
- "name": "Odette Sears",
- "reportsTo": 90,
- "phone": "(264) 818-6576",
- "extension": 1914,
- "hireDate": new Date(2013, 7, 5),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }]
- }]
- }, {
- "id": 45,
- "name": "Zelda Medina",
- "reportsTo": 32,
- "phone": "(563) 359-6023",
- "extension": 2600,
- "hireDate": new Date(2012, 11, 6),
- "fullTime": true,
- "position": "QA Architect",
- "timeInPosition": 2
- }]
- }, {
- "id": 52,
- "name": "Skyler Cleveland",
- "reportsTo": 2,
- "phone": "(217) 280-5300",
- "extension": 9655,
- "hireDate": new Date(2014, 11, 10),
- "fullTime": true,
- "position": "VP, Engineering",
- "timeInPosition": 2,
- "employees": [{
- "id": 40,
- "name": "Karleigh Garza",
- "reportsTo": 52,
- "phone": "(370) 983-8796",
- "extension": 4044,
- "hireDate": new Date(2014, 3, 10),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 1,
- "employees": [{
- "id": 49,
- "name": "Elmo Tyson",
- "reportsTo": 40,
- "phone": "(344) 496-9555",
- "extension": 6950,
- "hireDate": new Date(2014, 9, 18),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }, {
- "id": 72,
- "name": "Stacey Lynn",
- "reportsTo": 40,
- "phone": "(140) 772-7509",
- "extension": 8396,
- "hireDate": new Date(2014, 7, 31),
- "fullTime": false,
- "position": "QA Engineer",
- "timeInPosition": 1,
- "employees": [{
- "id": 80,
- "name": "Meredith Parrish",
- "reportsTo": 72,
- "phone": "(714) 284-2408",
- "extension": 7675,
- "hireDate": new Date(2012, 11, 13),
- "fullTime": true,
- "position": "Junior QA Engineer",
- "timeInPosition": 6
- }]
- }, {
- "id": 96,
- "name": "Cassady Whitley",
- "reportsTo": 40,
- "phone": "(996) 587-8405",
- "extension": 780,
- "hireDate": new Date(2013, 5, 7),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 5
- }, {
- "id": 97,
- "name": "Haviva Campbell",
- "reportsTo": 40,
- "phone": "(263) 887-4689",
- "extension": 2808,
- "hireDate": new Date(2013, 3, 5),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 2
- }, {
- "id": 98,
- "name": "Cameron Ayers",
- "reportsTo": 40,
- "phone": "(470) 709-8030",
- "extension": 2893,
- "hireDate": new Date(2013, 8, 28),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 3
- }, {
- "id": 99,
- "name": "Martha Sargent",
- "reportsTo": 40,
- "phone": "(587) 812-4418",
- "extension": 5099,
- "hireDate": new Date(2014, 2, 27),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 100,
- "name": "Darrel Kinney",
- "reportsTo": 40,
- "phone": "(888) 483-9606",
- "extension": 4779,
- "hireDate": new Date(2014, 3, 24),
- "fullTime": false,
- "position": "Graphic Designer",
- "timeInPosition": 1
- }]
- }, {
- "id": 54,
- "name": "Kuame Frye",
- "reportsTo": 52,
- "phone": "(360) 721-5886",
- "extension": 2730,
- "hireDate": new Date(2010, 11, 17),
- "fullTime": true,
- "position": "Software Architect",
- "timeInPosition": 1,
- "employees": [{
- "id": 64,
- "name": "Ori Wynn",
- "reportsTo": 54,
- "phone": "(366) 342-0166",
- "extension": 7252,
- "hireDate": new Date(2015, 6, 21),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 0,
- "employees": [{
- "id": 6,
- "name": "Moses Duncan",
- "reportsTo": 64,
- "phone": "(421) 611-4814",
- "extension": 669,
- "hireDate": new Date(2010, 5, 24),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 6
- }, {
- "id": 12,
- "name": "Jamalia Wallace",
- "reportsTo": 64,
- "phone": "(611) 391-8016",
- "extension": 1952,
- "hireDate": new Date(2011, 9, 8),
- "fullTime": true,
- "position": "Junior Designer",
- "timeInPosition": 3
- }, {
- "id": 62,
- "name": "Palmer Gregory",
- "reportsTo": 64,
- "phone": "(360) 430-2505",
- "extension": 4337,
- "hireDate": new Date(2014, 8, 30),
- "fullTime": true,
- "position": "Designer",
- "timeInPosition": 4
- }, {
- "id": 68,
- "name": "Mallory Gilliam",
- "reportsTo": 64,
- "phone": "(878) 423-2971",
- "extension": 1341,
- "hireDate": new Date(2014, 7, 24),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 1
- }, {
- "id": 73,
- "name": "Ima Hughes",
- "reportsTo": 64,
- "phone": "(905) 485-8001",
- "extension": 1273,
- "hireDate": new Date(2013, 6, 3),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 0
- }, {
- "id": 79,
- "name": "Duncan Mathews",
- "reportsTo": 64,
- "phone": "(790) 971-9709",
- "extension": 4573,
- "hireDate": new Date(2011, 8, 21),
- "fullTime": false,
- "position": "Software Developer",
- "timeInPosition": 3
- }]
- }]
- }, {
- "id": 69,
- "name": "Sierra Beasley",
- "reportsTo": 52,
- "phone": "(271) 953-1968",
- "extension": 3324,
- "hireDate": new Date(2011, 4, 2),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 3,
- "employees": [{
- "id": 38,
- "name": "Elton Tucker",
- "reportsTo": 69,
- "phone": "(988) 930-9331",
- "extension": 9216,
- "hireDate": new Date(2015, 6, 4),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 1
- }, {
- "id": 39,
- "name": "Iona Brennan",
- "reportsTo": 69,
- "phone": "(356) 563-0600",
- "extension": 5634,
- "hireDate": new Date(2010, 9, 23),
- "fullTime": true,
- "position": "Junior Support Officer",
- "timeInPosition": 4
- }, {
- "id": 53,
- "name": "Paul Campos",
- "reportsTo": 69,
- "phone": "(899) 205-1689",
- "extension": 8586,
- "hireDate": new Date(2011, 3, 17),
- "fullTime": true,
- "position": "Interaction Designer",
- "timeInPosition": 4,
- "employees": [{
- "id": 66,
- "name": "Gloria Freeman",
- "reportsTo": 53,
- "phone": "(344) 950-9168",
- "extension": 4738,
- "hireDate": new Date(2013, 5, 6),
- "fullTime": true,
- "position": "Junior Interaction Designer",
- "timeInPosition": 0
- }]
- }, {
- "id": 57,
- "name": "Alyssa Hansen",
- "reportsTo": 69,
- "phone": "(548) 925-4799",
- "extension": 4716,
- "hireDate": new Date(2011, 1, 19),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 6
- }, {
- "id": 82,
- "name": "Yael Walters",
- "reportsTo": 69,
- "phone": "(311) 489-8191",
- "extension": 6520,
- "hireDate": new Date(2013, 7, 4),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 6
- }, {
- "id": 87,
- "name": "Dahlia Hunt",
- "reportsTo": 69,
- "phone": "(720) 339-5202",
- "extension": 3690,
- "hireDate": new Date(2011, 3, 26),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 4
- }, {
- "id": 94,
- "name": "Adria Stanley",
- "reportsTo": 69,
- "phone": "(536) 357-6391",
- "extension": 3374,
- "hireDate": new Date(2014, 7, 26),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 0
- }]
- }]
- }]
- }, {
- "id": 3,
- "name": "Priscilla Frank",
- "reportsTo": 1,
- "phone": "(278) 927-2684",
- "extension": 4183,
- "hireDate": new Date(2014, 11, 30),
- "fullTime": true,
- "position": "Chief Product Officer",
- "timeInPosition": 2,
- "employees": [{
- "id": 4,
- "name": "Ursula Holmes",
- "reportsTo": 3,
- "phone": "(302) 760-2034",
- "extension": 2226,
- "hireDate": new Date(2011, 6, 6),
- "fullTime": true,
- "position": "EVP, Product Strategy",
- "timeInPosition": 4
- }, {
- "id": 24,
- "name": "Melvin Carrillo",
- "reportsTo": 3,
- "phone": "(348) 933-5167",
- "extension": 2482,
- "hireDate": new Date(2014, 7, 21),
- "fullTime": true,
- "position": "Director, Developer Relations",
- "timeInPosition": 6,
- "employees": [{
- "id": 29,
- "name": "Martha Chavez",
- "reportsTo": 24,
- "phone": "(860) 754-3464",
- "extension": 4531,
- "hireDate": new Date(2013, 3, 12),
- "fullTime": true,
- "position": "Developer Advocate",
- "timeInPosition": 0
- }, {
- "id": 30,
- "name": "Oren Fox",
- "reportsTo": 24,
- "phone": "(572) 414-3299",
- "extension": 4849,
- "hireDate": new Date(2013, 5, 14),
- "fullTime": false,
- "position": "Developer Advocate",
- "timeInPosition": 0
- }, {
- "id": 41,
- "name": "Amos Barr",
- "reportsTo": 24,
- "phone": "(470) 381-3718",
- "extension": 7643,
- "hireDate": new Date(2010, 3, 9),
- "fullTime": true,
- "position": "Developer Advocate",
- "timeInPosition": 2
- }]
- }]
- }, {
- "id": 5,
- "name": "Anika Vega",
- "reportsTo": 1,
- "phone": "(910) 714-1802",
- "extension": 6353,
- "hireDate": new Date(2010, 2, 25),
- "fullTime": true,
- "position": "Chief Process Officer",
- "timeInPosition": 5,
- "employees": [{
- "id": 10,
- "name": "Vernon Ballard",
- "reportsTo": 5,
- "phone": "(702) 185-8890",
- "extension": 9242,
- "hireDate": new Date(2015, 6, 26),
- "fullTime": true,
- "position": "Director Facilities",
- "timeInPosition": 2,
- "employees": [{
- "id": 16,
- "name": "Ali Guy",
- "reportsTo": 10,
- "phone": "(429) 912-6578",
- "extension": 2225,
- "hireDate": new Date(2014, 6, 29),
- "fullTime": true,
- "position": "Operations Manager",
- "timeInPosition": 4,
- "employees": [{
- "id": 23,
- "name": "Bruce Reilly",
- "reportsTo": 16,
- "phone": "(995) 243-7302",
- "extension": 4815,
- "hireDate": new Date(2015, 4, 1),
- "fullTime": true,
- "position": "Head of Security",
- "timeInPosition": 1,
- "employees": [{
- "id": 26,
- "name": "Rowan Morin",
- "reportsTo": 23,
- "phone": "(792) 141-4374",
- "extension": 1844,
- "hireDate": new Date(2015, 7, 30),
- "fullTime": true,
- "position": "Building Security",
- "timeInPosition": 5
- }, {
- "id": 44,
- "name": "Benedict Soto",
- "reportsTo": 23,
- "phone": "(822) 282-5991",
- "extension": 6422,
- "hireDate": new Date(2012, 6, 1),
- "fullTime": false,
- "position": "Building Security",
- "timeInPosition": 4
- }]
- }, {
- "id": 48,
- "name": "Maryam Rios",
- "reportsTo": 16,
- "phone": "(673) 764-6720",
- "extension": 531,
- "hireDate": new Date(2014, 3, 3),
- "fullTime": true,
- "position": "Team Lead, Personal Assistants",
- "timeInPosition": 1,
- "employees": [{
- "id": 58,
- "name": "Rose Mcintyre",
- "reportsTo": 48,
- "phone": "(771) 615-4590",
- "extension": 7094,
- "hireDate": new Date(2015, 6, 30),
- "fullTime": false,
- "position": "Personal Assistant",
- "timeInPosition": 6
- }]
- }]
- }]
- }]
- }, {
- "id": 7,
- "name": "Nevada Hart",
- "reportsTo": 1,
- "phone": "(254) 220-1576",
- "extension": 6649,
- "hireDate": new Date(2015, 8, 17),
- "fullTime": true,
- "position": "Chief Financial Officer",
- "timeInPosition": 6,
- "employees": [{
- "id": 14,
- "name": "Zena Sanford",
- "reportsTo": 7,
- "phone": "(437) 568-8160",
- "extension": 4452,
- "hireDate": new Date(2010, 11, 30),
- "fullTime": true,
- "position": "VP, Finance",
- "timeInPosition": 4
- }, {
- "id": 15,
- "name": "Quinlan Howe",
- "reportsTo": 7,
- "phone": "(464) 334-9748",
- "extension": 8722,
- "hireDate": new Date(2011, 6, 9),
- "fullTime": false,
- "position": "Senior Director, Finance",
- "timeInPosition": 0,
- "employees": [{
- "id": 17,
- "name": "Indira Lopez",
- "reportsTo": 15,
- "phone": "(301) 368-0938",
- "extension": 8027,
- "hireDate": new Date(2013, 8, 18),
- "fullTime": true,
- "position": "ERP Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 18,
- "name": "Lareina Lara",
- "reportsTo": 17,
- "phone": "(233) 457-7482",
- "extension": 1996,
- "hireDate": new Date(2010, 4, 30),
- "fullTime": true,
- "position": "ERP Solutions Consultant",
- "timeInPosition": 6
- }, {
- "id": 19,
- "name": "Maxwell Wise",
- "reportsTo": 17,
- "phone": "(570) 494-2531",
- "extension": 9865,
- "hireDate": new Date(2012, 5, 19),
- "fullTime": true,
- "position": "Systems Engineer",
- "timeInPosition": 0
- }]
- }, {
- "id": 20,
- "name": "Hunter Mcbride",
- "reportsTo": 15,
- "phone": "(409) 442-7016",
- "extension": 4284,
- "hireDate": new Date(2012, 10, 20),
- "fullTime": true,
- "position": "Senior Director, Tax",
- "timeInPosition": 3
- }, {
- "id": 21,
- "name": "Jana Serrano",
- "reportsTo": 15,
- "phone": "(910) 718-4620",
- "extension": 6970,
- "hireDate": new Date(2010, 4, 2),
- "fullTime": true,
- "position": "Financial Planning & Analysis Manager",
- "timeInPosition": 2
- }, {
- "id": 22,
- "name": "Zachery Shelton",
- "reportsTo": 15,
- "phone": "(310) 240-8675",
- "extension": 4527,
- "hireDate": new Date(2011, 11, 23),
- "fullTime": false,
- "position": "Corporate Finance Controller",
- "timeInPosition": 6,
- "employees": [{
- "id": 28,
- "name": "Cullen Freeman",
- "reportsTo": 22,
- "phone": "(136) 554-8814",
- "extension": 9861,
- "hireDate": new Date(2014, 3, 15),
- "fullTime": true,
- "position": "Treasurer Accountant",
- "timeInPosition": 2
- }, {
- "id": 31,
- "name": "Quinn Dean",
- "reportsTo": 22,
- "phone": "(152) 613-3507",
- "extension": 6621,
- "hireDate": new Date(2015, 1, 29),
- "fullTime": true,
- "position": "Accountant",
- "timeInPosition": 6
- }, {
- "id": 34,
- "name": "Samantha Brady",
- "reportsTo": 22,
- "phone": "(206) 398-4328",
- "extension": 1157,
- "hireDate": new Date(2011, 2, 13),
- "fullTime": true,
- "position": "Accountant",
- "timeInPosition": 2,
- "employees": [{
- "id": 35,
- "name": "Tamara Green",
- "reportsTo": 34,
- "phone": "(219) 248-2789",
- "extension": 4880,
- "hireDate": new Date(2014, 2, 4),
- "fullTime": true,
- "position": "Junior Accountant",
- "timeInPosition": 6
- }]
- }, {
- "id": 36,
- "name": "Olympia Coleman",
- "reportsTo": 22,
- "phone": "(944) 853-6383",
- "extension": 2136,
- "hireDate": new Date(2013, 7, 31),
- "fullTime": true,
- "position": "Collections Manager",
- "timeInPosition": 3
- }, {
- "id": 37,
- "name": "Breanna Goodwin",
- "reportsTo": 22,
- "phone": "(379) 988-9630",
- "extension": 5898,
- "hireDate": new Date(2010, 5, 23),
- "fullTime": false,
- "position": "Payroll Specialist",
- "timeInPosition": 4
- }]
- }, {
- "id": 27,
- "name": "Curran Travis",
- "reportsTo": 15,
- "phone": "(438) 135-8033",
- "extension": 3841,
- "hireDate": new Date(2011, 6, 13),
- "fullTime": true,
- "position": "Finance Controller",
- "timeInPosition": 5
- }]
- }]
- }, {
- "id": 8,
- "name": "Hunter Fry",
- "reportsTo": 1,
- "phone": "(766) 358-9858",
- "extension": 3741,
- "hireDate": new Date(2011, 2, 12),
- "fullTime": false,
- "position": "General Counsel",
- "timeInPosition": 3,
- "employees": [{
- "id": 9,
- "name": "Kuame Carrillo",
- "reportsTo": 8,
- "phone": "(192) 383-1305",
- "extension": 9228,
- "hireDate": new Date(2011, 2, 22),
- "fullTime": true,
- "position": "Associate General Councel",
- "timeInPosition": 0
- }, {
- "id": 13,
- "name": "Stacy Todd",
- "reportsTo": 8,
- "phone": "(925) 286-3327",
- "extension": 8565,
- "hireDate": new Date(2014, 7, 5),
- "fullTime": true,
- "position": "Councel",
- "timeInPosition": 0
- }, {
- "id": 33,
- "name": "Valentine Wyatt",
- "reportsTo": 8,
- "phone": "(165) 166-6205",
- "extension": 3588,
- "hireDate": new Date(2015, 5, 21),
- "fullTime": true,
- "position": "Councel",
- "timeInPosition": 5
- }, {
- "id": 86,
- "name": "Daniel Mccarthy",
- "reportsTo": 8,
- "phone": "(624) 483-6206",
- "extension": 9112,
- "hireDate": new Date(2013, 12, 3),
- "fullTime": false,
- "position": "Staff Attorney",
- "timeInPosition": 0
- }]
- }]
- }];
- export default employees;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/treelist-custom-expand-cell/main.jsx b/docs/knowledge-base/examples/treelist/treelist-custom-expand-cell/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-custom-expand-cell/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/treelist-focus-input-on-edit/app.jsx b/docs/knowledge-base/examples/treelist/treelist-focus-input-on-edit/app.jsx
deleted file mode 100644
index 221e0367..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-focus-input-on-edit/app.jsx
+++ /dev/null
@@ -1,239 +0,0 @@
-import * as React from 'react';
-import {
- TreeList,
- TreeListToolbar,
- mapTree,
- extendDataItem,
- removeItems,
- modifySubItems,
- TreeListTextEditor,
- TreeListBooleanEditor,
-} from '@progress/kendo-react-treelist';
-import MyCommandCell from './my-command-cell';
-import employees from './data';
-const subItemsField = 'employees';
-const expandField = 'expanded';
-const editField = 'inEdit';
-
-const MyContext = React.createContext({
- currentIDToFocus: () => {},
-});
-
-const getAdditionalProps = (cellField, dataItem) => {
- const currentContext = React.useContext(MyContext);
- const activeElement = document.activeElement;
-
- //change 'name' with the field that you want to focus
- return cellField &&
- cellField === 'name' &&
- dataItem.id == currentContext.currentIDToFocus //checking if the dataItem is the same as the last item opened for editing
- ? {
- ref: (td) => {
- const input = td && td.querySelector('input');
- currentContext.setCurrentIDToFocus(null);
- if (!input || activeElement == input) {
- return;
- }
-
- if (input.type === 'checkbox') {
- input.focus();
- } else {
- input.select();
- }
- },
- }
- : null;
-};
-const CellRender = (cell, props) => {
- const dataItem = props.dataItem;
- const cellField = props.field;
- const additionalProps = getAdditionalProps(cellField, dataItem);
-
- const clonedProps = { ...cell.props, ...additionalProps };
- return React.cloneElement(cell, clonedProps, cell.props.children);
-};
-
-const App = () => {
- const [state, setState] = React.useState({
- data: employees.slice(),
- expanded: [1, 2, 32],
- inEdit: [],
- });
-
- const [currentIDToFocus, setCurrentIDToFocus] = React.useState(null);
- const addChild = (dataItem) => {
- const newRecord = createNewItem();
- setState({
- ...state,
- inEdit: [...state.inEdit, newRecord],
- expanded: [...state.expanded, dataItem.id],
- data: modifySubItems(
- state.data,
- subItemsField,
- (item) => item.id === dataItem.id,
- (subItems) => [newRecord, ...subItems]
- ),
- });
- };
-
- const enterEdit = (dataItem) => {
- if (dataItem != null) {
- //Updating the state with the newly edited ID
- setCurrentIDToFocus(dataItem.id);
- }
- setState({
- ...state,
- inEdit: [...state.inEdit, extendDataItem(dataItem, subItemsField)],
- });
- };
-
- const save = (dataItem) => {
- const { isNew, inEdit, ...itemToSave } = dataItem;
- setState({
- ...state,
- data: mapTree(state.data, subItemsField, (item) =>
- item.id === itemToSave.id ? itemToSave : item
- ),
- inEdit: state.inEdit.filter((i) => i.id !== itemToSave.id),
- });
- };
-
- const cancel = (editedItem) => {
- const { inEdit, data } = state;
-
- if (editedItem.isNew) {
- return remove(editedItem);
- }
-
- setState({
- ...state,
- data: mapTree(data, subItemsField, (item) =>
- item.id === editedItem.id ? inEdit.find((i) => i.id === item.id) : item
- ),
- inEdit: inEdit.filter((i) => i.id !== editedItem.id),
- });
- };
-
- const remove = (dataItem) => {
- setState({
- ...state,
- data: removeItems(state.data, subItemsField, (i) => i.id === dataItem.id),
- inEdit: state.inEdit.filter((i) => i.id !== dataItem.id),
- });
- };
-
- const onExpandChange = (e) => {
- setState({
- ...state,
- expanded: e.value
- ? state.expanded.filter((id) => id !== e.dataItem.id)
- : [...state.expanded, e.dataItem.id],
- });
- };
-
- const onItemChange = (event) => {
- const field = event.field;
- setState({
- ...state,
- data: mapTree(state.data, subItemsField, (item) =>
- item.id === event.dataItem.id
- ? extendDataItem(item, subItemsField, {
- [field]: event.value,
- })
- : item
- ),
- });
- };
-
- const addRecord = () => {
- const newRecord = createNewItem();
- setState({
- ...state,
- data: [newRecord, ...state.data],
- inEdit: [...state.inEdit, { ...newRecord }],
- });
- };
-
- const createNewItem = () => {
- const timestamp = new Date().getTime();
- //Here we need an unique ID for the new item
- //We are setting a timestamp, but should be replaced with the corresponding logic for setting the ID value
- setCurrentIDToFocus(timestamp);
- return {
- id: timestamp,
- isNew: true,
- };
- };
-
- const CommandCell = MyCommandCell(
- enterEdit,
- remove,
- save,
- cancel,
- addChild,
- editField
- );
- const columns = [
- {
- field: 'name',
- title: 'Name',
- width: 280,
- editCell: TreeListTextEditor,
- expandable: true,
- },
- {
- field: 'position',
- title: 'position',
- width: 280,
- editCell: TreeListTextEditor,
- },
- {
- cell: CommandCell,
- width: 360,
- },
- ];
- const { data, expanded, inEdit } = state;
-
- return (
-
-
- extendDataItem(item, subItemsField, {
- [expandField]: expanded.includes(item.id),
- [editField]: Boolean(inEdit.find((i) => i.id === item.id)),
- })
- )}
- editField={editField}
- expandField={expandField}
- subItemsField={subItemsField}
- onItemChange={onItemChange}
- onExpandChange={onExpandChange}
- columns={columns}
- navigatable={true}
- toolbar={
-
-
- Add new
-
-
- }
- />
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/treelist/treelist-focus-input-on-edit/data.js b/docs/knowledge-base/examples/treelist/treelist-focus-input-on-edit/data.js
deleted file mode 100644
index ab659696..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-focus-input-on-edit/data.js
+++ /dev/null
@@ -1,1020 +0,0 @@
-const employees = [{
- "id": 1,
- "name": "Daryl Sweeney",
- "reportsTo": null,
- "phone": "(555) 924-9726",
- "extension": 8253,
- "hireDate": new Date(2012, 2, 7),
- "fullTime": true,
- "position": "CEO",
- "timeInPosition": 2,
- "employees": [{
- "id": 2,
- "name": "Guy Wooten",
- "reportsTo": 1,
- "phone": "(438) 738-4935",
- "extension": 1155,
- "hireDate": new Date(2010, 3, 3),
- "fullTime": true,
- "position": "Chief Technical Officer",
- "timeInPosition": 1,
- "employees": [{
- "id": 32,
- "name": "Buffy Weber",
- "reportsTo": 2,
- "phone": "(699) 838-6121",
- "extension": 8933,
- "hireDate": new Date(2011, 7, 11),
- "fullTime": true,
- "position": "VP, Engineering",
- "timeInPosition": 2,
- "employees": [{
- "id": 11,
- "name": "Hyacinth Hood",
- "reportsTo": 32,
- "phone": "(889) 345-2438",
- "extension": 8564,
- "hireDate": new Date(2014, 2, 3),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 1,
- "employees": [{
- "id": 60,
- "name": "Akeem Carr",
- "reportsTo": 11,
- "phone": "(738) 136-2814",
- "extension": 9353,
- "hireDate": new Date(2011, 4, 21),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 2
- }, {
- "id": 78,
- "name": "Rinah Simon",
- "reportsTo": 11,
- "phone": "(285) 912-5271",
- "extension": 7795,
- "hireDate": new Date(2012, 10, 11),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }]
- }, {
- "id": 42,
- "name": "Gage Daniels",
- "reportsTo": 32,
- "phone": "(107) 290-6260",
- "extension": 896,
- "hireDate": new Date(2013, 5, 16),
- "fullTime": true,
- "position": "Software Architect",
- "timeInPosition": 5
- }, {
- "id": 43,
- "name": "Constance Vazquez",
- "reportsTo": 32,
- "phone": "(800) 301-1978",
- "extension": 5141,
- "hireDate": new Date(2011, 6, 7),
- "fullTime": true,
- "position": "Director, Engineering",
- "timeInPosition": 1,
- "employees": [{
- "id": 46,
- "name": "Darrel Solis",
- "reportsTo": 43,
- "phone": "(327) 977-0216",
- "extension": 7779,
- "hireDate": new Date(2015, 4, 25),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 47,
- "name": "Brian Yang",
- "reportsTo": 46,
- "phone": "(565) 146-5435",
- "extension": 3885,
- "hireDate": new Date(2012, 9, 27),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 50,
- "name": "Lillian Bradshaw",
- "reportsTo": 46,
- "phone": "(323) 509-3479",
- "extension": 5426,
- "hireDate": new Date(2014, 5, 10),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 2
- }, {
- "id": 51,
- "name": "Christian Palmer",
- "reportsTo": 46,
- "phone": "(490) 421-8718",
- "extension": 3706,
- "hireDate": new Date(2012, 12, 27),
- "fullTime": false,
- "position": "Technical Lead",
- "timeInPosition": 1
- }, {
- "id": 55,
- "name": "Summer Mosley",
- "reportsTo": 46,
- "phone": "(784) 962-2301",
- "extension": 5492,
- "hireDate": new Date(2010, 3, 2),
- "fullTime": true,
- "position": "QA Engineer",
- "timeInPosition": 5
- }, {
- "id": 56,
- "name": "Barry Ayers",
- "reportsTo": 46,
- "phone": "(452) 373-9227",
- "extension": 1308,
- "hireDate": new Date(2011, 10, 11),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }, {
- "id": 59,
- "name": "Keiko Espinoza",
- "reportsTo": 46,
- "phone": "(226) 600-5305",
- "extension": 9363,
- "hireDate": new Date(2011, 9, 18),
- "fullTime": true,
- "position": "Junior QA Engineer",
- "timeInPosition": 4
- }, {
- "id": 61,
- "name": "Candace Pickett",
- "reportsTo": 46,
- "phone": "(120) 117-7475",
- "extension": 5178,
- "hireDate": new Date(2010, 5, 6),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 0
- }]
- }, {
- "id": 63,
- "name": "Mia Caldwell",
- "reportsTo": 43,
- "phone": "(848) 636-6470",
- "extension": 6368,
- "hireDate": new Date(2012, 10, 7),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 65,
- "name": "Thomas Terry",
- "reportsTo": 63,
- "phone": "(764) 831-4248",
- "extension": 3574,
- "hireDate": new Date(2015, 6, 15),
- "fullTime": false,
- "position": "Senior Enterprise Support Officer",
- "timeInPosition": 2
- }, {
- "id": 67,
- "name": "Ruth Downs",
- "reportsTo": 63,
- "phone": "(138) 991-1440",
- "extension": 8067,
- "hireDate": new Date(2013, 7, 13),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 5
- }, {
- "id": 70,
- "name": "Yasir Wilder",
- "reportsTo": 63,
- "phone": "(759) 701-8665",
- "extension": 8350,
- "hireDate": new Date(2010, 11, 8),
- "fullTime": true,
- "position": "Senior QA Enginner",
- "timeInPosition": 3
- }, {
- "id": 71,
- "name": "Flavia Short",
- "reportsTo": 63,
- "phone": "(370) 133-9238",
- "extension": 6390,
- "hireDate": new Date(2013, 2, 21),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 0
- }, {
- "id": 74,
- "name": "Aaron Roach",
- "reportsTo": 63,
- "phone": "(958) 717-9230",
- "extension": 4899,
- "hireDate": new Date(2011, 7, 30),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 6
- }, {
- "id": 75,
- "name": "Eric Russell",
- "reportsTo": 63,
- "phone": "(516) 575-8505",
- "extension": 2224,
- "hireDate": new Date(2012, 10, 28),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 3
- }, {
- "id": 76,
- "name": "Cheyenne Olson",
- "reportsTo": 63,
- "phone": "(241) 645-0257",
- "extension": 9181,
- "hireDate": new Date(2015, 5, 19),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 5
- }, {
- "id": 77,
- "name": "Shaine Avila",
- "reportsTo": 63,
- "phone": "(844) 435-1360",
- "extension": 3374,
- "hireDate": new Date(2010, 1, 31),
- "fullTime": true,
- "position": "UI Designer",
- "timeInPosition": 5
- }, {
- "id": 81,
- "name": "Chantale Long",
- "reportsTo": 63,
- "phone": "(252) 419-6891",
- "extension": 7868,
- "hireDate": new Date(2010, 6, 17),
- "fullTime": true,
- "position": "Senior QA Enginner",
- "timeInPosition": 1
- }, {
- "id": 83,
- "name": "Dane Cruz",
- "reportsTo": 63,
- "phone": "(946) 701-6165",
- "extension": 3828,
- "hireDate": new Date(2014, 10, 8),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 2
- }, {
- "id": 84,
- "name": "Regan Patterson",
- "reportsTo": 63,
- "phone": "(265) 946-1765",
- "extension": 6955,
- "hireDate": new Date(2012, 3, 1),
- "fullTime": true,
- "position": "Technical Writer",
- "timeInPosition": 6
- }, {
- "id": 85,
- "name": "Drew Mckay",
- "reportsTo": 63,
- "phone": "(327) 293-0162",
- "extension": 6904,
- "hireDate": new Date(2011, 3, 25),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 88,
- "name": "Bevis Miller",
- "reportsTo": 63,
- "phone": "(525) 557-0169",
- "extension": 6978,
- "hireDate": new Date(2011, 4, 19),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 5
- }, {
- "id": 89,
- "name": "Bruce Mccarty",
- "reportsTo": 63,
- "phone": "(936) 777-8730",
- "extension": 6552,
- "hireDate": new Date(2014, 3, 28),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 5
- }]
- }, {
- "id": 90,
- "name": "Ocean Blair",
- "reportsTo": 43,
- "phone": "(343) 586-6614",
- "extension": 1424,
- "hireDate": new Date(2011, 4, 27),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 2,
- "employees": [{
- "id": 91,
- "name": "Guinevere Osborn",
- "reportsTo": 90,
- "phone": "(424) 741-0006",
- "extension": 3166,
- "hireDate": new Date(2014, 11, 19),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 3
- }, {
- "id": 92,
- "name": "Olga Strong",
- "reportsTo": 90,
- "phone": "(949) 417-1168",
- "extension": 4568,
- "hireDate": new Date(2015, 5, 28),
- "fullTime": true,
- "position": "Graphic Designer",
- "timeInPosition": 4
- }, {
- "id": 93,
- "name": "Robert Orr",
- "reportsTo": 90,
- "phone": "(977) 341-3721",
- "extension": 9241,
- "hireDate": new Date(2012, 8, 20),
- "fullTime": false,
- "position": "Support Officer",
- "timeInPosition": 6
- }, {
- "id": 95,
- "name": "Odette Sears",
- "reportsTo": 90,
- "phone": "(264) 818-6576",
- "extension": 1914,
- "hireDate": new Date(2013, 7, 5),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }]
- }]
- }, {
- "id": 45,
- "name": "Zelda Medina",
- "reportsTo": 32,
- "phone": "(563) 359-6023",
- "extension": 2600,
- "hireDate": new Date(2012, 11, 6),
- "fullTime": true,
- "position": "QA Architect",
- "timeInPosition": 2
- }]
- }, {
- "id": 52,
- "name": "Skyler Cleveland",
- "reportsTo": 2,
- "phone": "(217) 280-5300",
- "extension": 9655,
- "hireDate": new Date(2014, 11, 10),
- "fullTime": true,
- "position": "VP, Engineering",
- "timeInPosition": 2,
- "employees": [{
- "id": 40,
- "name": "Karleigh Garza",
- "reportsTo": 52,
- "phone": "(370) 983-8796",
- "extension": 4044,
- "hireDate": new Date(2014, 3, 10),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 1,
- "employees": [{
- "id": 49,
- "name": "Elmo Tyson",
- "reportsTo": 40,
- "phone": "(344) 496-9555",
- "extension": 6950,
- "hireDate": new Date(2014, 9, 18),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }, {
- "id": 72,
- "name": "Stacey Lynn",
- "reportsTo": 40,
- "phone": "(140) 772-7509",
- "extension": 8396,
- "hireDate": new Date(2014, 7, 31),
- "fullTime": false,
- "position": "QA Engineer",
- "timeInPosition": 1,
- "employees": [{
- "id": 80,
- "name": "Meredith Parrish",
- "reportsTo": 72,
- "phone": "(714) 284-2408",
- "extension": 7675,
- "hireDate": new Date(2012, 11, 13),
- "fullTime": true,
- "position": "Junior QA Engineer",
- "timeInPosition": 6
- }]
- }, {
- "id": 96,
- "name": "Cassady Whitley",
- "reportsTo": 40,
- "phone": "(996) 587-8405",
- "extension": 780,
- "hireDate": new Date(2013, 5, 7),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 5
- }, {
- "id": 97,
- "name": "Haviva Campbell",
- "reportsTo": 40,
- "phone": "(263) 887-4689",
- "extension": 2808,
- "hireDate": new Date(2013, 3, 5),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 2
- }, {
- "id": 98,
- "name": "Cameron Ayers",
- "reportsTo": 40,
- "phone": "(470) 709-8030",
- "extension": 2893,
- "hireDate": new Date(2013, 8, 28),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 3
- }, {
- "id": 99,
- "name": "Martha Sargent",
- "reportsTo": 40,
- "phone": "(587) 812-4418",
- "extension": 5099,
- "hireDate": new Date(2014, 2, 27),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 100,
- "name": "Darrel Kinney",
- "reportsTo": 40,
- "phone": "(888) 483-9606",
- "extension": 4779,
- "hireDate": new Date(2014, 3, 24),
- "fullTime": false,
- "position": "Graphic Designer",
- "timeInPosition": 1
- }]
- }, {
- "id": 54,
- "name": "Kuame Frye",
- "reportsTo": 52,
- "phone": "(360) 721-5886",
- "extension": 2730,
- "hireDate": new Date(2010, 11, 17),
- "fullTime": true,
- "position": "Software Architect",
- "timeInPosition": 1,
- "employees": [{
- "id": 64,
- "name": "Ori Wynn",
- "reportsTo": 54,
- "phone": "(366) 342-0166",
- "extension": 7252,
- "hireDate": new Date(2015, 6, 21),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 0,
- "employees": [{
- "id": 6,
- "name": "Moses Duncan",
- "reportsTo": 64,
- "phone": "(421) 611-4814",
- "extension": 669,
- "hireDate": new Date(2010, 5, 24),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 6
- }, {
- "id": 12,
- "name": "Jamalia Wallace",
- "reportsTo": 64,
- "phone": "(611) 391-8016",
- "extension": 1952,
- "hireDate": new Date(2011, 9, 8),
- "fullTime": true,
- "position": "Junior Designer",
- "timeInPosition": 3
- }, {
- "id": 62,
- "name": "Palmer Gregory",
- "reportsTo": 64,
- "phone": "(360) 430-2505",
- "extension": 4337,
- "hireDate": new Date(2014, 8, 30),
- "fullTime": true,
- "position": "Designer",
- "timeInPosition": 4
- }, {
- "id": 68,
- "name": "Mallory Gilliam",
- "reportsTo": 64,
- "phone": "(878) 423-2971",
- "extension": 1341,
- "hireDate": new Date(2014, 7, 24),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 1
- }, {
- "id": 73,
- "name": "Ima Hughes",
- "reportsTo": 64,
- "phone": "(905) 485-8001",
- "extension": 1273,
- "hireDate": new Date(2013, 6, 3),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 0
- }, {
- "id": 79,
- "name": "Duncan Mathews",
- "reportsTo": 64,
- "phone": "(790) 971-9709",
- "extension": 4573,
- "hireDate": new Date(2011, 8, 21),
- "fullTime": false,
- "position": "Software Developer",
- "timeInPosition": 3
- }]
- }]
- }, {
- "id": 69,
- "name": "Sierra Beasley",
- "reportsTo": 52,
- "phone": "(271) 953-1968",
- "extension": 3324,
- "hireDate": new Date(2011, 4, 2),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 3,
- "employees": [{
- "id": 38,
- "name": "Elton Tucker",
- "reportsTo": 69,
- "phone": "(988) 930-9331",
- "extension": 9216,
- "hireDate": new Date(2015, 6, 4),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 1
- }, {
- "id": 39,
- "name": "Iona Brennan",
- "reportsTo": 69,
- "phone": "(356) 563-0600",
- "extension": 5634,
- "hireDate": new Date(2010, 9, 23),
- "fullTime": true,
- "position": "Junior Support Officer",
- "timeInPosition": 4
- }, {
- "id": 53,
- "name": "Paul Campos",
- "reportsTo": 69,
- "phone": "(899) 205-1689",
- "extension": 8586,
- "hireDate": new Date(2011, 3, 17),
- "fullTime": true,
- "position": "Interaction Designer",
- "timeInPosition": 4,
- "employees": [{
- "id": 66,
- "name": "Gloria Freeman",
- "reportsTo": 53,
- "phone": "(344) 950-9168",
- "extension": 4738,
- "hireDate": new Date(2013, 5, 6),
- "fullTime": true,
- "position": "Junior Interaction Designer",
- "timeInPosition": 0
- }]
- }, {
- "id": 57,
- "name": "Alyssa Hansen",
- "reportsTo": 69,
- "phone": "(548) 925-4799",
- "extension": 4716,
- "hireDate": new Date(2011, 1, 19),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 6
- }, {
- "id": 82,
- "name": "Yael Walters",
- "reportsTo": 69,
- "phone": "(311) 489-8191",
- "extension": 6520,
- "hireDate": new Date(2013, 7, 4),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 6
- }, {
- "id": 87,
- "name": "Dahlia Hunt",
- "reportsTo": 69,
- "phone": "(720) 339-5202",
- "extension": 3690,
- "hireDate": new Date(2011, 3, 26),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 4
- }, {
- "id": 94,
- "name": "Adria Stanley",
- "reportsTo": 69,
- "phone": "(536) 357-6391",
- "extension": 3374,
- "hireDate": new Date(2014, 7, 26),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 0
- }]
- }]
- }]
- }, {
- "id": 3,
- "name": "Priscilla Frank",
- "reportsTo": 1,
- "phone": "(278) 927-2684",
- "extension": 4183,
- "hireDate": new Date(2014, 11, 30),
- "fullTime": true,
- "position": "Chief Product Officer",
- "timeInPosition": 2,
- "employees": [{
- "id": 4,
- "name": "Ursula Holmes",
- "reportsTo": 3,
- "phone": "(302) 760-2034",
- "extension": 2226,
- "hireDate": new Date(2011, 6, 6),
- "fullTime": true,
- "position": "EVP, Product Strategy",
- "timeInPosition": 4
- }, {
- "id": 24,
- "name": "Melvin Carrillo",
- "reportsTo": 3,
- "phone": "(348) 933-5167",
- "extension": 2482,
- "hireDate": new Date(2014, 7, 21),
- "fullTime": true,
- "position": "Director, Developer Relations",
- "timeInPosition": 6,
- "employees": [{
- "id": 29,
- "name": "Martha Chavez",
- "reportsTo": 24,
- "phone": "(860) 754-3464",
- "extension": 4531,
- "hireDate": new Date(2013, 3, 12),
- "fullTime": true,
- "position": "Developer Advocate",
- "timeInPosition": 0
- }, {
- "id": 30,
- "name": "Oren Fox",
- "reportsTo": 24,
- "phone": "(572) 414-3299",
- "extension": 4849,
- "hireDate": new Date(2013, 5, 14),
- "fullTime": false,
- "position": "Developer Advocate",
- "timeInPosition": 0
- }, {
- "id": 41,
- "name": "Amos Barr",
- "reportsTo": 24,
- "phone": "(470) 381-3718",
- "extension": 7643,
- "hireDate": new Date(2010, 3, 9),
- "fullTime": true,
- "position": "Developer Advocate",
- "timeInPosition": 2
- }]
- }]
- }, {
- "id": 5,
- "name": "Anika Vega",
- "reportsTo": 1,
- "phone": "(910) 714-1802",
- "extension": 6353,
- "hireDate": new Date(2010, 2, 25),
- "fullTime": true,
- "position": "Chief Process Officer",
- "timeInPosition": 5,
- "employees": [{
- "id": 10,
- "name": "Vernon Ballard",
- "reportsTo": 5,
- "phone": "(702) 185-8890",
- "extension": 9242,
- "hireDate": new Date(2015, 6, 26),
- "fullTime": true,
- "position": "Director Facilities",
- "timeInPosition": 2,
- "employees": [{
- "id": 16,
- "name": "Ali Guy",
- "reportsTo": 10,
- "phone": "(429) 912-6578",
- "extension": 2225,
- "hireDate": new Date(2014, 6, 29),
- "fullTime": true,
- "position": "Operations Manager",
- "timeInPosition": 4,
- "employees": [{
- "id": 23,
- "name": "Bruce Reilly",
- "reportsTo": 16,
- "phone": "(995) 243-7302",
- "extension": 4815,
- "hireDate": new Date(2015, 4, 1),
- "fullTime": true,
- "position": "Head of Security",
- "timeInPosition": 1,
- "employees": [{
- "id": 26,
- "name": "Rowan Morin",
- "reportsTo": 23,
- "phone": "(792) 141-4374",
- "extension": 1844,
- "hireDate": new Date(2015, 7, 30),
- "fullTime": true,
- "position": "Building Security",
- "timeInPosition": 5
- }, {
- "id": 44,
- "name": "Benedict Soto",
- "reportsTo": 23,
- "phone": "(822) 282-5991",
- "extension": 6422,
- "hireDate": new Date(2012, 6, 1),
- "fullTime": false,
- "position": "Building Security",
- "timeInPosition": 4
- }]
- }, {
- "id": 48,
- "name": "Maryam Rios",
- "reportsTo": 16,
- "phone": "(673) 764-6720",
- "extension": 531,
- "hireDate": new Date(2014, 3, 3),
- "fullTime": true,
- "position": "Team Lead, Personal Assistants",
- "timeInPosition": 1,
- "employees": [{
- "id": 58,
- "name": "Rose Mcintyre",
- "reportsTo": 48,
- "phone": "(771) 615-4590",
- "extension": 7094,
- "hireDate": new Date(2015, 6, 30),
- "fullTime": false,
- "position": "Personal Assistant",
- "timeInPosition": 6
- }]
- }]
- }]
- }]
- }, {
- "id": 7,
- "name": "Nevada Hart",
- "reportsTo": 1,
- "phone": "(254) 220-1576",
- "extension": 6649,
- "hireDate": new Date(2015, 8, 17),
- "fullTime": true,
- "position": "Chief Financial Officer",
- "timeInPosition": 6,
- "employees": [{
- "id": 14,
- "name": "Zena Sanford",
- "reportsTo": 7,
- "phone": "(437) 568-8160",
- "extension": 4452,
- "hireDate": new Date(2010, 11, 30),
- "fullTime": true,
- "position": "VP, Finance",
- "timeInPosition": 4
- }, {
- "id": 15,
- "name": "Quinlan Howe",
- "reportsTo": 7,
- "phone": "(464) 334-9748",
- "extension": 8722,
- "hireDate": new Date(2011, 6, 9),
- "fullTime": false,
- "position": "Senior Director, Finance",
- "timeInPosition": 0,
- "employees": [{
- "id": 17,
- "name": "Indira Lopez",
- "reportsTo": 15,
- "phone": "(301) 368-0938",
- "extension": 8027,
- "hireDate": new Date(2013, 8, 18),
- "fullTime": true,
- "position": "ERP Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 18,
- "name": "Lareina Lara",
- "reportsTo": 17,
- "phone": "(233) 457-7482",
- "extension": 1996,
- "hireDate": new Date(2010, 4, 30),
- "fullTime": true,
- "position": "ERP Solutions Consultant",
- "timeInPosition": 6
- }, {
- "id": 19,
- "name": "Maxwell Wise",
- "reportsTo": 17,
- "phone": "(570) 494-2531",
- "extension": 9865,
- "hireDate": new Date(2012, 5, 19),
- "fullTime": true,
- "position": "Systems Engineer",
- "timeInPosition": 0
- }]
- }, {
- "id": 20,
- "name": "Hunter Mcbride",
- "reportsTo": 15,
- "phone": "(409) 442-7016",
- "extension": 4284,
- "hireDate": new Date(2012, 10, 20),
- "fullTime": true,
- "position": "Senior Director, Tax",
- "timeInPosition": 3
- }, {
- "id": 21,
- "name": "Jana Serrano",
- "reportsTo": 15,
- "phone": "(910) 718-4620",
- "extension": 6970,
- "hireDate": new Date(2010, 4, 2),
- "fullTime": true,
- "position": "Financial Planning & Analysis Manager",
- "timeInPosition": 2
- }, {
- "id": 22,
- "name": "Zachery Shelton",
- "reportsTo": 15,
- "phone": "(310) 240-8675",
- "extension": 4527,
- "hireDate": new Date(2011, 11, 23),
- "fullTime": false,
- "position": "Corporate Finance Controller",
- "timeInPosition": 6,
- "employees": [{
- "id": 28,
- "name": "Cullen Freeman",
- "reportsTo": 22,
- "phone": "(136) 554-8814",
- "extension": 9861,
- "hireDate": new Date(2014, 3, 15),
- "fullTime": true,
- "position": "Treasurer Accountant",
- "timeInPosition": 2
- }, {
- "id": 31,
- "name": "Quinn Dean",
- "reportsTo": 22,
- "phone": "(152) 613-3507",
- "extension": 6621,
- "hireDate": new Date(2015, 1, 29),
- "fullTime": true,
- "position": "Accountant",
- "timeInPosition": 6
- }, {
- "id": 34,
- "name": "Samantha Brady",
- "reportsTo": 22,
- "phone": "(206) 398-4328",
- "extension": 1157,
- "hireDate": new Date(2011, 2, 13),
- "fullTime": true,
- "position": "Accountant",
- "timeInPosition": 2,
- "employees": [{
- "id": 35,
- "name": "Tamara Green",
- "reportsTo": 34,
- "phone": "(219) 248-2789",
- "extension": 4880,
- "hireDate": new Date(2014, 2, 4),
- "fullTime": true,
- "position": "Junior Accountant",
- "timeInPosition": 6
- }]
- }, {
- "id": 36,
- "name": "Olympia Coleman",
- "reportsTo": 22,
- "phone": "(944) 853-6383",
- "extension": 2136,
- "hireDate": new Date(2013, 7, 31),
- "fullTime": true,
- "position": "Collections Manager",
- "timeInPosition": 3
- }, {
- "id": 37,
- "name": "Breanna Goodwin",
- "reportsTo": 22,
- "phone": "(379) 988-9630",
- "extension": 5898,
- "hireDate": new Date(2010, 5, 23),
- "fullTime": false,
- "position": "Payroll Specialist",
- "timeInPosition": 4
- }]
- }, {
- "id": 27,
- "name": "Curran Travis",
- "reportsTo": 15,
- "phone": "(438) 135-8033",
- "extension": 3841,
- "hireDate": new Date(2011, 6, 13),
- "fullTime": true,
- "position": "Finance Controller",
- "timeInPosition": 5
- }]
- }]
- }, {
- "id": 8,
- "name": "Hunter Fry",
- "reportsTo": 1,
- "phone": "(766) 358-9858",
- "extension": 3741,
- "hireDate": new Date(2011, 2, 12),
- "fullTime": false,
- "position": "General Counsel",
- "timeInPosition": 3,
- "employees": [{
- "id": 9,
- "name": "Kuame Carrillo",
- "reportsTo": 8,
- "phone": "(192) 383-1305",
- "extension": 9228,
- "hireDate": new Date(2011, 2, 22),
- "fullTime": true,
- "position": "Associate General Councel",
- "timeInPosition": 0
- }, {
- "id": 13,
- "name": "Stacy Todd",
- "reportsTo": 8,
- "phone": "(925) 286-3327",
- "extension": 8565,
- "hireDate": new Date(2014, 7, 5),
- "fullTime": true,
- "position": "Councel",
- "timeInPosition": 0
- }, {
- "id": 33,
- "name": "Valentine Wyatt",
- "reportsTo": 8,
- "phone": "(165) 166-6205",
- "extension": 3588,
- "hireDate": new Date(2015, 5, 21),
- "fullTime": true,
- "position": "Councel",
- "timeInPosition": 5
- }, {
- "id": 86,
- "name": "Daniel Mccarthy",
- "reportsTo": 8,
- "phone": "(624) 483-6206",
- "extension": 9112,
- "hireDate": new Date(2013, 12, 3),
- "fullTime": false,
- "position": "Staff Attorney",
- "timeInPosition": 0
- }]
- }]
- }];
- export default employees;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/treelist-focus-input-on-edit/main.jsx b/docs/knowledge-base/examples/treelist/treelist-focus-input-on-edit/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-focus-input-on-edit/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/treelist-focus-input-on-edit/my-command-cell.jsx b/docs/knowledge-base/examples/treelist/treelist-focus-input-on-edit/my-command-cell.jsx
deleted file mode 100644
index 20bd538e..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-focus-input-on-edit/my-command-cell.jsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import * as React from 'react';
-export default function MyCommandCell(enterEdit, remove, save, cancel, addChild, editField) {
- return class extends React.Component {
- render() {
- const {
- dataItem
- } = this.props;
- return dataItem[editField] ?
- save(dataItem)}>
- {dataItem.isNew ? 'Add' : 'Update'}
-
- cancel(dataItem)}>{dataItem.isNew ? 'Discard' : 'Cancel'}
-
- :
- addChild(dataItem)}>
- Add Employee
-
- enterEdit(dataItem)}>
- Edit
-
- remove(dataItem)}>
- Remove
-
- ;
- }
-
- };
-}
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/treelist-inline-editing-validation/app.jsx b/docs/knowledge-base/examples/treelist/treelist-inline-editing-validation/app.jsx
deleted file mode 100644
index c2db9d78..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-inline-editing-validation/app.jsx
+++ /dev/null
@@ -1,212 +0,0 @@
-import * as React from 'react';
-import {
- TreeList,
- TreeListToolbar,
- mapTree,
- extendDataItem,
- removeItems,
- modifySubItems,
- TreeListTextEditor,
- //TreeListBooleanEditor,
-} from '@progress/kendo-react-treelist';
-import { Input } from '@progress/kendo-react-inputs';
-import { Error } from '@progress/kendo-react-labels';
-import MyCommandCell from './my-command-cell';
-import employees from './data';
-const subItemsField = 'employees';
-const expandField = 'expanded';
-const editField = 'inEdit';
-
-const App = () => {
- const [state, setState] = React.useState({
- data: employees.slice(),
- expanded: [1, 2, 32],
- inEdit: [],
- });
-
- const [isValid, setIsValid] = React.useState(true);
-
- const MyCell = React.useCallback((props) => {
- console.log(props);
- let isValid = true;
- if (props.dataItem[props.field]) {
- if (props.dataItem[props.field].length <= 4) {
- isValid = false;
- setIsValid(false);
- } else {
- setIsValid(true);
- }
- } else {
- isValid = false;
- setIsValid(false);
- }
-
- const handleOnChange = (e) => {
- props.onChange({
- dataItem: props.dataItem,
- field: props.field,
- syntheticEvent: e.syntheticEvent,
- value: e.value,
- });
- };
- return (
-
-
- {!isValid && This is not valid }
-
- );
- }, []);
-
- const addChild = (dataItem) => {
- const newRecord = createNewItem();
- setState({
- ...state,
- inEdit: [...state.inEdit, newRecord],
- expanded: [...state.expanded, dataItem.id],
- data: modifySubItems(
- state.data,
- subItemsField,
- (item) => item.id === dataItem.id,
- (subItems) => [newRecord, ...subItems]
- ),
- });
- };
- const enterEdit = (dataItem) => {
- setState({
- ...state,
- inEdit: [...state.inEdit, extendDataItem(dataItem, subItemsField)],
- });
- };
- const save = (dataItem) => {
- const { isNew, inEdit, ...itemToSave } = dataItem;
- isValid &&
- setState({
- ...state,
- data: mapTree(state.data, subItemsField, (item) =>
- item.id === itemToSave.id ? itemToSave : item
- ),
- inEdit: state.inEdit.filter((i) => i.id !== itemToSave.id),
- });
- };
- const cancel = (editedItem) => {
- const { inEdit, data } = state;
- if (editedItem.isNew) {
- return remove(editedItem);
- }
- setState({
- ...state,
- data: mapTree(data, subItemsField, (item) =>
- item.id === editedItem.id ? inEdit.find((i) => i.id === item.id) : item
- ),
- inEdit: inEdit.filter((i) => i.id !== editedItem.id),
- });
- };
- const remove = (dataItem) => {
- setState({
- ...state,
- data: removeItems(state.data, subItemsField, (i) => i.id === dataItem.id),
- inEdit: state.inEdit.filter((i) => i.id !== dataItem.id),
- });
- };
- const onExpandChange = (e) => {
- setState({
- ...state,
- expanded: e.value
- ? state.expanded.filter((id) => id !== e.dataItem.id)
- : [...state.expanded, e.dataItem.id],
- });
- };
- const onItemChange = (event) => {
- const field = event.field;
- setState({
- ...state,
- data: mapTree(state.data, subItemsField, (item) =>
- item.id === event.dataItem.id
- ? extendDataItem(item, subItemsField, {
- [field]: event.value,
- })
- : item
- ),
- });
- };
- const addRecord = () => {
- const newRecord = createNewItem();
- setState({
- ...state,
- data: [newRecord, ...state.data],
- inEdit: [
- ...state.inEdit,
- {
- ...newRecord,
- },
- ],
- });
- };
- const createNewItem = () => {
- const timestamp = new Date().getTime();
- return {
- id: timestamp,
- isNew: true,
- };
- };
- const CommandCell = MyCommandCell(
- enterEdit,
- remove,
- save,
- cancel,
- addChild,
- editField
- );
- const columns = [
- {
- field: 'name',
- title: 'Name',
- width: '280px',
- editCell: MyCell,
- expandable: true,
- },
- {
- cell: CommandCell,
- width: '360px',
- },
- ];
- const { data, expanded, inEdit } = state;
- return (
-
- extendDataItem(item, subItemsField, {
- [expandField]: expanded.includes(item.id),
- [editField]: Boolean(inEdit.find((i) => i.id === item.id)),
- })
- )}
- editField={editField}
- expandField={expandField}
- subItemsField={subItemsField}
- onItemChange={onItemChange}
- onExpandChange={onExpandChange}
- columns={columns}
- toolbar={
-
-
- Add new
-
-
- }
- />
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/treelist/treelist-inline-editing-validation/data.js b/docs/knowledge-base/examples/treelist/treelist-inline-editing-validation/data.js
deleted file mode 100644
index 2c97886e..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-inline-editing-validation/data.js
+++ /dev/null
@@ -1,1149 +0,0 @@
-const employees = [
- {
- id: 1,
- name: 'Daryl Sweeney',
- reportsTo: null,
- phone: '(555) 924-9726',
- extension: 8253,
- hireDate: new Date(2012, 2, 7),
- fullTime: true,
- position: 'CEO',
- timeInPosition: 2,
- employees: [
- {
- id: 2,
- name: 'Guy Wooten',
- reportsTo: 1,
- phone: '(438) 738-4935',
- extension: 1155,
- hireDate: new Date(2010, 3, 3),
- fullTime: true,
- position: 'Chief Technical Officer',
- timeInPosition: 1,
- employees: [
- {
- id: 32,
- name: 'Buffy Weber',
- reportsTo: 2,
- phone: '(699) 838-6121',
- extension: 8933,
- hireDate: new Date(2011, 7, 11),
- fullTime: true,
- position: 'VP, Engineering',
- timeInPosition: 2,
- employees: [
- {
- id: 11,
- name: 'Hyacinth Hood',
- reportsTo: 32,
- phone: '(889) 345-2438',
- extension: 8564,
- hireDate: new Date(2014, 2, 3),
- fullTime: true,
- position: 'Team Lead',
- timeInPosition: 1,
- employees: [
- {
- id: 60,
- name: 'Akeem Carr',
- reportsTo: 11,
- phone: '(738) 136-2814',
- extension: 9353,
- hireDate: new Date(2011, 4, 21),
- fullTime: true,
- position: 'Junior Software Developer',
- timeInPosition: 2,
- },
- {
- id: 78,
- name: 'Rinah Simon',
- reportsTo: 11,
- phone: '(285) 912-5271',
- extension: 7795,
- hireDate: new Date(2012, 10, 11),
- fullTime: true,
- position: 'Software Developer',
- timeInPosition: 4,
- },
- ],
- },
- {
- id: 42,
- name: 'Gage Daniels',
- reportsTo: 32,
- phone: '(107) 290-6260',
- extension: 896,
- hireDate: new Date(2013, 5, 16),
- fullTime: true,
- position: 'Software Architect',
- timeInPosition: 5,
- },
- {
- id: 43,
- name: 'Constance Vazquez',
- reportsTo: 32,
- phone: '(800) 301-1978',
- extension: 5141,
- hireDate: new Date(2011, 6, 7),
- fullTime: true,
- position: 'Director, Engineering',
- timeInPosition: 1,
- employees: [
- {
- id: 46,
- name: 'Darrel Solis',
- reportsTo: 43,
- phone: '(327) 977-0216',
- extension: 7779,
- hireDate: new Date(2015, 4, 25),
- fullTime: true,
- position: 'Team Lead',
- timeInPosition: 4,
- employees: [
- {
- id: 47,
- name: 'Brian Yang',
- reportsTo: 46,
- phone: '(565) 146-5435',
- extension: 3885,
- hireDate: new Date(2012, 9, 27),
- fullTime: true,
- position: 'Senior Software Developer',
- timeInPosition: 3,
- },
- {
- id: 50,
- name: 'Lillian Bradshaw',
- reportsTo: 46,
- phone: '(323) 509-3479',
- extension: 5426,
- hireDate: new Date(2014, 5, 10),
- fullTime: true,
- position: 'Software Developer',
- timeInPosition: 2,
- },
- {
- id: 51,
- name: 'Christian Palmer',
- reportsTo: 46,
- phone: '(490) 421-8718',
- extension: 3706,
- hireDate: new Date(2012, 12, 27),
- fullTime: false,
- position: 'Technical Lead',
- timeInPosition: 1,
- },
- {
- id: 55,
- name: 'Summer Mosley',
- reportsTo: 46,
- phone: '(784) 962-2301',
- extension: 5492,
- hireDate: new Date(2010, 3, 2),
- fullTime: true,
- position: 'QA Engineer',
- timeInPosition: 5,
- },
- {
- id: 56,
- name: 'Barry Ayers',
- reportsTo: 46,
- phone: '(452) 373-9227',
- extension: 1308,
- hireDate: new Date(2011, 10, 11),
- fullTime: true,
- position: 'Software Developer',
- timeInPosition: 4,
- },
- {
- id: 59,
- name: 'Keiko Espinoza',
- reportsTo: 46,
- phone: '(226) 600-5305',
- extension: 9363,
- hireDate: new Date(2011, 9, 18),
- fullTime: true,
- position: 'Junior QA Engineer',
- timeInPosition: 4,
- },
- {
- id: 61,
- name: 'Candace Pickett',
- reportsTo: 46,
- phone: '(120) 117-7475',
- extension: 5178,
- hireDate: new Date(2010, 5, 6),
- fullTime: true,
- position: 'Support Officer',
- timeInPosition: 0,
- },
- ],
- },
- {
- id: 63,
- name: 'Mia Caldwell',
- reportsTo: 43,
- phone: '(848) 636-6470',
- extension: 6368,
- hireDate: new Date(2012, 10, 7),
- fullTime: true,
- position: 'Team Lead',
- timeInPosition: 4,
- employees: [
- {
- id: 65,
- name: 'Thomas Terry',
- reportsTo: 63,
- phone: '(764) 831-4248',
- extension: 3574,
- hireDate: new Date(2015, 6, 15),
- fullTime: false,
- position: 'Senior Enterprise Support Officer',
- timeInPosition: 2,
- },
- {
- id: 67,
- name: 'Ruth Downs',
- reportsTo: 63,
- phone: '(138) 991-1440',
- extension: 8067,
- hireDate: new Date(2013, 7, 13),
- fullTime: true,
- position: 'Senior Software Developer',
- timeInPosition: 5,
- },
- {
- id: 70,
- name: 'Yasir Wilder',
- reportsTo: 63,
- phone: '(759) 701-8665',
- extension: 8350,
- hireDate: new Date(2010, 11, 8),
- fullTime: true,
- position: 'Senior QA Enginner',
- timeInPosition: 3,
- },
- {
- id: 71,
- name: 'Flavia Short',
- reportsTo: 63,
- phone: '(370) 133-9238',
- extension: 6390,
- hireDate: new Date(2013, 2, 21),
- fullTime: true,
- position: 'Support Officer',
- timeInPosition: 0,
- },
- {
- id: 74,
- name: 'Aaron Roach',
- reportsTo: 63,
- phone: '(958) 717-9230',
- extension: 4899,
- hireDate: new Date(2011, 7, 30),
- fullTime: true,
- position: 'Junior Software Developer',
- timeInPosition: 6,
- },
- {
- id: 75,
- name: 'Eric Russell',
- reportsTo: 63,
- phone: '(516) 575-8505',
- extension: 2224,
- hireDate: new Date(2012, 10, 28),
- fullTime: true,
- position: 'Software Developer',
- timeInPosition: 3,
- },
- {
- id: 76,
- name: 'Cheyenne Olson',
- reportsTo: 63,
- phone: '(241) 645-0257',
- extension: 9181,
- hireDate: new Date(2015, 5, 19),
- fullTime: true,
- position: 'Software Developer',
- timeInPosition: 5,
- },
- {
- id: 77,
- name: 'Shaine Avila',
- reportsTo: 63,
- phone: '(844) 435-1360',
- extension: 3374,
- hireDate: new Date(2010, 1, 31),
- fullTime: true,
- position: 'UI Designer',
- timeInPosition: 5,
- },
- {
- id: 81,
- name: 'Chantale Long',
- reportsTo: 63,
- phone: '(252) 419-6891',
- extension: 7868,
- hireDate: new Date(2010, 6, 17),
- fullTime: true,
- position: 'Senior QA Enginner',
- timeInPosition: 1,
- },
- {
- id: 83,
- name: 'Dane Cruz',
- reportsTo: 63,
- phone: '(946) 701-6165',
- extension: 3828,
- hireDate: new Date(2014, 10, 8),
- fullTime: true,
- position: 'Junior Software Developer',
- timeInPosition: 2,
- },
- {
- id: 84,
- name: 'Regan Patterson',
- reportsTo: 63,
- phone: '(265) 946-1765',
- extension: 6955,
- hireDate: new Date(2012, 3, 1),
- fullTime: true,
- position: 'Technical Writer',
- timeInPosition: 6,
- },
- {
- id: 85,
- name: 'Drew Mckay',
- reportsTo: 63,
- phone: '(327) 293-0162',
- extension: 6904,
- hireDate: new Date(2011, 3, 25),
- fullTime: true,
- position: 'Senior Software Developer',
- timeInPosition: 3,
- },
- {
- id: 88,
- name: 'Bevis Miller',
- reportsTo: 63,
- phone: '(525) 557-0169',
- extension: 6978,
- hireDate: new Date(2011, 4, 19),
- fullTime: true,
- position: 'Senior Software Developer',
- timeInPosition: 5,
- },
- {
- id: 89,
- name: 'Bruce Mccarty',
- reportsTo: 63,
- phone: '(936) 777-8730',
- extension: 6552,
- hireDate: new Date(2014, 3, 28),
- fullTime: true,
- position: 'Support Officer',
- timeInPosition: 5,
- },
- ],
- },
- {
- id: 90,
- name: 'Ocean Blair',
- reportsTo: 43,
- phone: '(343) 586-6614',
- extension: 1424,
- hireDate: new Date(2011, 4, 27),
- fullTime: true,
- position: 'Team Lead',
- timeInPosition: 2,
- employees: [
- {
- id: 91,
- name: 'Guinevere Osborn',
- reportsTo: 90,
- phone: '(424) 741-0006',
- extension: 3166,
- hireDate: new Date(2014, 11, 19),
- fullTime: true,
- position: 'Software Developer',
- timeInPosition: 3,
- },
- {
- id: 92,
- name: 'Olga Strong',
- reportsTo: 90,
- phone: '(949) 417-1168',
- extension: 4568,
- hireDate: new Date(2015, 5, 28),
- fullTime: true,
- position: 'Graphic Designer',
- timeInPosition: 4,
- },
- {
- id: 93,
- name: 'Robert Orr',
- reportsTo: 90,
- phone: '(977) 341-3721',
- extension: 9241,
- hireDate: new Date(2012, 8, 20),
- fullTime: false,
- position: 'Support Officer',
- timeInPosition: 6,
- },
- {
- id: 95,
- name: 'Odette Sears',
- reportsTo: 90,
- phone: '(264) 818-6576',
- extension: 1914,
- hireDate: new Date(2013, 7, 5),
- fullTime: true,
- position: 'Senior Software Developer',
- timeInPosition: 3,
- },
- ],
- },
- ],
- },
- {
- id: 45,
- name: 'Zelda Medina',
- reportsTo: 32,
- phone: '(563) 359-6023',
- extension: 2600,
- hireDate: new Date(2012, 11, 6),
- fullTime: true,
- position: 'QA Architect',
- timeInPosition: 2,
- },
- ],
- },
- {
- id: 52,
- name: 'Skyler Cleveland',
- reportsTo: 2,
- phone: '(217) 280-5300',
- extension: 9655,
- hireDate: new Date(2014, 11, 10),
- fullTime: true,
- position: 'VP, Engineering',
- timeInPosition: 2,
- employees: [
- {
- id: 40,
- name: 'Karleigh Garza',
- reportsTo: 52,
- phone: '(370) 983-8796',
- extension: 4044,
- hireDate: new Date(2014, 3, 10),
- fullTime: true,
- position: 'Team Lead',
- timeInPosition: 1,
- employees: [
- {
- id: 49,
- name: 'Elmo Tyson',
- reportsTo: 40,
- phone: '(344) 496-9555',
- extension: 6950,
- hireDate: new Date(2014, 9, 18),
- fullTime: true,
- position: 'Software Developer',
- timeInPosition: 4,
- },
- {
- id: 72,
- name: 'Stacey Lynn',
- reportsTo: 40,
- phone: '(140) 772-7509',
- extension: 8396,
- hireDate: new Date(2014, 7, 31),
- fullTime: false,
- position: 'QA Engineer',
- timeInPosition: 1,
- employees: [
- {
- id: 80,
- name: 'Meredith Parrish',
- reportsTo: 72,
- phone: '(714) 284-2408',
- extension: 7675,
- hireDate: new Date(2012, 11, 13),
- fullTime: true,
- position: 'Junior QA Engineer',
- timeInPosition: 6,
- },
- ],
- },
- {
- id: 96,
- name: 'Cassady Whitley',
- reportsTo: 40,
- phone: '(996) 587-8405',
- extension: 780,
- hireDate: new Date(2013, 5, 7),
- fullTime: true,
- position: 'Software Developer',
- timeInPosition: 5,
- },
- {
- id: 97,
- name: 'Haviva Campbell',
- reportsTo: 40,
- phone: '(263) 887-4689',
- extension: 2808,
- hireDate: new Date(2013, 3, 5),
- fullTime: true,
- position: 'Support Officer',
- timeInPosition: 2,
- },
- {
- id: 98,
- name: 'Cameron Ayers',
- reportsTo: 40,
- phone: '(470) 709-8030',
- extension: 2893,
- hireDate: new Date(2013, 8, 28),
- fullTime: true,
- position: 'Support Officer',
- timeInPosition: 3,
- },
- {
- id: 99,
- name: 'Martha Sargent',
- reportsTo: 40,
- phone: '(587) 812-4418',
- extension: 5099,
- hireDate: new Date(2014, 2, 27),
- fullTime: true,
- position: 'Senior Software Developer',
- timeInPosition: 3,
- },
- {
- id: 100,
- name: 'Darrel Kinney',
- reportsTo: 40,
- phone: '(888) 483-9606',
- extension: 4779,
- hireDate: new Date(2014, 3, 24),
- fullTime: false,
- position: 'Graphic Designer',
- timeInPosition: 1,
- },
- ],
- },
- {
- id: 54,
- name: 'Kuame Frye',
- reportsTo: 52,
- phone: '(360) 721-5886',
- extension: 2730,
- hireDate: new Date(2010, 11, 17),
- fullTime: true,
- position: 'Software Architect',
- timeInPosition: 1,
- employees: [
- {
- id: 64,
- name: 'Ori Wynn',
- reportsTo: 54,
- phone: '(366) 342-0166',
- extension: 7252,
- hireDate: new Date(2015, 6, 21),
- fullTime: true,
- position: 'Team Lead',
- timeInPosition: 0,
- employees: [
- {
- id: 6,
- name: 'Moses Duncan',
- reportsTo: 64,
- phone: '(421) 611-4814',
- extension: 669,
- hireDate: new Date(2010, 5, 24),
- fullTime: true,
- position: 'Software Developer',
- timeInPosition: 6,
- },
- {
- id: 12,
- name: 'Jamalia Wallace',
- reportsTo: 64,
- phone: '(611) 391-8016',
- extension: 1952,
- hireDate: new Date(2011, 9, 8),
- fullTime: true,
- position: 'Junior Designer',
- timeInPosition: 3,
- },
- {
- id: 62,
- name: 'Palmer Gregory',
- reportsTo: 64,
- phone: '(360) 430-2505',
- extension: 4337,
- hireDate: new Date(2014, 8, 30),
- fullTime: true,
- position: 'Designer',
- timeInPosition: 4,
- },
- {
- id: 68,
- name: 'Mallory Gilliam',
- reportsTo: 64,
- phone: '(878) 423-2971',
- extension: 1341,
- hireDate: new Date(2014, 7, 24),
- fullTime: true,
- position: 'Senior Software Developer',
- timeInPosition: 1,
- },
- {
- id: 73,
- name: 'Ima Hughes',
- reportsTo: 64,
- phone: '(905) 485-8001',
- extension: 1273,
- hireDate: new Date(2013, 6, 3),
- fullTime: true,
- position: 'Software Developer',
- timeInPosition: 0,
- },
- {
- id: 79,
- name: 'Duncan Mathews',
- reportsTo: 64,
- phone: '(790) 971-9709',
- extension: 4573,
- hireDate: new Date(2011, 8, 21),
- fullTime: false,
- position: 'Software Developer',
- timeInPosition: 3,
- },
- ],
- },
- ],
- },
- {
- id: 69,
- name: 'Sierra Beasley',
- reportsTo: 52,
- phone: '(271) 953-1968',
- extension: 3324,
- hireDate: new Date(2011, 4, 2),
- fullTime: true,
- position: 'Team Lead',
- timeInPosition: 3,
- employees: [
- {
- id: 38,
- name: 'Elton Tucker',
- reportsTo: 69,
- phone: '(988) 930-9331',
- extension: 9216,
- hireDate: new Date(2015, 6, 4),
- fullTime: true,
- position: 'Support Officer',
- timeInPosition: 1,
- },
- {
- id: 39,
- name: 'Iona Brennan',
- reportsTo: 69,
- phone: '(356) 563-0600',
- extension: 5634,
- hireDate: new Date(2010, 9, 23),
- fullTime: true,
- position: 'Junior Support Officer',
- timeInPosition: 4,
- },
- {
- id: 53,
- name: 'Paul Campos',
- reportsTo: 69,
- phone: '(899) 205-1689',
- extension: 8586,
- hireDate: new Date(2011, 3, 17),
- fullTime: true,
- position: 'Interaction Designer',
- timeInPosition: 4,
- employees: [
- {
- id: 66,
- name: 'Gloria Freeman',
- reportsTo: 53,
- phone: '(344) 950-9168',
- extension: 4738,
- hireDate: new Date(2013, 5, 6),
- fullTime: true,
- position: 'Junior Interaction Designer',
- timeInPosition: 0,
- },
- ],
- },
- {
- id: 57,
- name: 'Alyssa Hansen',
- reportsTo: 69,
- phone: '(548) 925-4799',
- extension: 4716,
- hireDate: new Date(2011, 1, 19),
- fullTime: true,
- position: 'Junior Software Developer',
- timeInPosition: 6,
- },
- {
- id: 82,
- name: 'Yael Walters',
- reportsTo: 69,
- phone: '(311) 489-8191',
- extension: 6520,
- hireDate: new Date(2013, 7, 4),
- fullTime: true,
- position: 'Software Developer',
- timeInPosition: 6,
- },
- {
- id: 87,
- name: 'Dahlia Hunt',
- reportsTo: 69,
- phone: '(720) 339-5202',
- extension: 3690,
- hireDate: new Date(2011, 3, 26),
- fullTime: true,
- position: 'Senior Software Developer',
- timeInPosition: 4,
- },
- {
- id: 94,
- name: 'Adria Stanley',
- reportsTo: 69,
- phone: '(536) 357-6391',
- extension: 3374,
- hireDate: new Date(2014, 7, 26),
- fullTime: true,
- position: 'Software Developer',
- timeInPosition: 0,
- },
- ],
- },
- ],
- },
- ],
- },
- {
- id: 3,
- name: 'Priscilla Frank',
- reportsTo: 1,
- phone: '(278) 927-2684',
- extension: 4183,
- hireDate: new Date(2014, 11, 30),
- fullTime: true,
- position: 'Chief Product Officer',
- timeInPosition: 2,
- employees: [
- {
- id: 4,
- name: 'Ursula Holmes',
- reportsTo: 3,
- phone: '(302) 760-2034',
- extension: 2226,
- hireDate: new Date(2011, 6, 6),
- fullTime: true,
- position: 'EVP, Product Strategy',
- timeInPosition: 4,
- },
- {
- id: 24,
- name: 'Melvin Carrillo',
- reportsTo: 3,
- phone: '(348) 933-5167',
- extension: 2482,
- hireDate: new Date(2014, 7, 21),
- fullTime: true,
- position: 'Director, Developer Relations',
- timeInPosition: 6,
- employees: [
- {
- id: 29,
- name: 'Martha Chavez',
- reportsTo: 24,
- phone: '(860) 754-3464',
- extension: 4531,
- hireDate: new Date(2013, 3, 12),
- fullTime: true,
- position: 'Developer Advocate',
- timeInPosition: 0,
- },
- {
- id: 30,
- name: 'Oren Fox',
- reportsTo: 24,
- phone: '(572) 414-3299',
- extension: 4849,
- hireDate: new Date(2013, 5, 14),
- fullTime: false,
- position: 'Developer Advocate',
- timeInPosition: 0,
- },
- {
- id: 41,
- name: 'Amos Barr',
- reportsTo: 24,
- phone: '(470) 381-3718',
- extension: 7643,
- hireDate: new Date(2010, 3, 9),
- fullTime: true,
- position: 'Developer Advocate',
- timeInPosition: 2,
- },
- ],
- },
- ],
- },
- {
- id: 5,
- name: 'Anika Vega',
- reportsTo: 1,
- phone: '(910) 714-1802',
- extension: 6353,
- hireDate: new Date(2010, 2, 25),
- fullTime: true,
- position: 'Chief Process Officer',
- timeInPosition: 5,
- employees: [
- {
- id: 10,
- name: 'Vernon Ballard',
- reportsTo: 5,
- phone: '(702) 185-8890',
- extension: 9242,
- hireDate: new Date(2015, 6, 26),
- fullTime: true,
- position: 'Director Facilities',
- timeInPosition: 2,
- employees: [
- {
- id: 16,
- name: 'Ali Guy',
- reportsTo: 10,
- phone: '(429) 912-6578',
- extension: 2225,
- hireDate: new Date(2014, 6, 29),
- fullTime: true,
- position: 'Operations Manager',
- timeInPosition: 4,
- employees: [
- {
- id: 23,
- name: 'Bruce Reilly',
- reportsTo: 16,
- phone: '(995) 243-7302',
- extension: 4815,
- hireDate: new Date(2015, 4, 1),
- fullTime: true,
- position: 'Head of Security',
- timeInPosition: 1,
- employees: [
- {
- id: 26,
- name: 'Rowan Morin',
- reportsTo: 23,
- phone: '(792) 141-4374',
- extension: 1844,
- hireDate: new Date(2015, 7, 30),
- fullTime: true,
- position: 'Building Security',
- timeInPosition: 5,
- },
- {
- id: 44,
- name: 'Benedict Soto',
- reportsTo: 23,
- phone: '(822) 282-5991',
- extension: 6422,
- hireDate: new Date(2012, 6, 1),
- fullTime: false,
- position: 'Building Security',
- timeInPosition: 4,
- },
- ],
- },
- {
- id: 48,
- name: 'Maryam Rios',
- reportsTo: 16,
- phone: '(673) 764-6720',
- extension: 531,
- hireDate: new Date(2014, 3, 3),
- fullTime: true,
- position: 'Team Lead, Personal Assistants',
- timeInPosition: 1,
- employees: [
- {
- id: 58,
- name: 'Rose Mcintyre',
- reportsTo: 48,
- phone: '(771) 615-4590',
- extension: 7094,
- hireDate: new Date(2015, 6, 30),
- fullTime: false,
- position: 'Personal Assistant',
- timeInPosition: 6,
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- {
- id: 7,
- name: 'Nevada Hart',
- reportsTo: 1,
- phone: '(254) 220-1576',
- extension: 6649,
- hireDate: new Date(2015, 8, 17),
- fullTime: true,
- position: 'Chief Financial Officer',
- timeInPosition: 6,
- employees: [
- {
- id: 14,
- name: 'Zena Sanford',
- reportsTo: 7,
- phone: '(437) 568-8160',
- extension: 4452,
- hireDate: new Date(2010, 11, 30),
- fullTime: true,
- position: 'VP, Finance',
- timeInPosition: 4,
- },
- {
- id: 15,
- name: 'Quinlan Howe',
- reportsTo: 7,
- phone: '(464) 334-9748',
- extension: 8722,
- hireDate: new Date(2011, 6, 9),
- fullTime: false,
- position: 'Senior Director, Finance',
- timeInPosition: 0,
- employees: [
- {
- id: 17,
- name: 'Indira Lopez',
- reportsTo: 15,
- phone: '(301) 368-0938',
- extension: 8027,
- hireDate: new Date(2013, 8, 18),
- fullTime: true,
- position: 'ERP Team Lead',
- timeInPosition: 4,
- employees: [
- {
- id: 18,
- name: 'Lareina Lara',
- reportsTo: 17,
- phone: '(233) 457-7482',
- extension: 1996,
- hireDate: new Date(2010, 4, 30),
- fullTime: true,
- position: 'ERP Solutions Consultant',
- timeInPosition: 6,
- },
- {
- id: 19,
- name: 'Maxwell Wise',
- reportsTo: 17,
- phone: '(570) 494-2531',
- extension: 9865,
- hireDate: new Date(2012, 5, 19),
- fullTime: true,
- position: 'Systems Engineer',
- timeInPosition: 0,
- },
- ],
- },
- {
- id: 20,
- name: 'Hunter Mcbride',
- reportsTo: 15,
- phone: '(409) 442-7016',
- extension: 4284,
- hireDate: new Date(2012, 10, 20),
- fullTime: true,
- position: 'Senior Director, Tax',
- timeInPosition: 3,
- },
- {
- id: 21,
- name: 'Jana Serrano',
- reportsTo: 15,
- phone: '(910) 718-4620',
- extension: 6970,
- hireDate: new Date(2010, 4, 2),
- fullTime: true,
- position: 'Financial Planning & Analysis Manager',
- timeInPosition: 2,
- },
- {
- id: 22,
- name: 'Zachery Shelton',
- reportsTo: 15,
- phone: '(310) 240-8675',
- extension: 4527,
- hireDate: new Date(2011, 11, 23),
- fullTime: false,
- position: 'Corporate Finance Controller',
- timeInPosition: 6,
- employees: [
- {
- id: 28,
- name: 'Cullen Freeman',
- reportsTo: 22,
- phone: '(136) 554-8814',
- extension: 9861,
- hireDate: new Date(2014, 3, 15),
- fullTime: true,
- position: 'Treasurer Accountant',
- timeInPosition: 2,
- },
- {
- id: 31,
- name: 'Quinn Dean',
- reportsTo: 22,
- phone: '(152) 613-3507',
- extension: 6621,
- hireDate: new Date(2015, 1, 29),
- fullTime: true,
- position: 'Accountant',
- timeInPosition: 6,
- },
- {
- id: 34,
- name: 'Samantha Brady',
- reportsTo: 22,
- phone: '(206) 398-4328',
- extension: 1157,
- hireDate: new Date(2011, 2, 13),
- fullTime: true,
- position: 'Accountant',
- timeInPosition: 2,
- employees: [
- {
- id: 35,
- name: 'Tamara Green',
- reportsTo: 34,
- phone: '(219) 248-2789',
- extension: 4880,
- hireDate: new Date(2014, 2, 4),
- fullTime: true,
- position: 'Junior Accountant',
- timeInPosition: 6,
- },
- ],
- },
- {
- id: 36,
- name: 'Olympia Coleman',
- reportsTo: 22,
- phone: '(944) 853-6383',
- extension: 2136,
- hireDate: new Date(2013, 7, 31),
- fullTime: true,
- position: 'Collections Manager',
- timeInPosition: 3,
- },
- {
- id: 37,
- name: 'Breanna Goodwin',
- reportsTo: 22,
- phone: '(379) 988-9630',
- extension: 5898,
- hireDate: new Date(2010, 5, 23),
- fullTime: false,
- position: 'Payroll Specialist',
- timeInPosition: 4,
- },
- ],
- },
- {
- id: 27,
- name: 'Curran Travis',
- reportsTo: 15,
- phone: '(438) 135-8033',
- extension: 3841,
- hireDate: new Date(2011, 6, 13),
- fullTime: true,
- position: 'Finance Controller',
- timeInPosition: 5,
- },
- ],
- },
- ],
- },
- {
- id: 8,
- name: 'Hunter Fry',
- reportsTo: 1,
- phone: '(766) 358-9858',
- extension: 3741,
- hireDate: new Date(2011, 2, 12),
- fullTime: false,
- position: 'General Counsel',
- timeInPosition: 3,
- employees: [
- {
- id: 9,
- name: 'Kuame Carrillo',
- reportsTo: 8,
- phone: '(192) 383-1305',
- extension: 9228,
- hireDate: new Date(2011, 2, 22),
- fullTime: true,
- position: 'Associate General Councel',
- timeInPosition: 0,
- },
- {
- id: 13,
- name: 'Stacy Todd',
- reportsTo: 8,
- phone: '(925) 286-3327',
- extension: 8565,
- hireDate: new Date(2014, 7, 5),
- fullTime: true,
- position: 'Councel',
- timeInPosition: 0,
- },
- {
- id: 33,
- name: 'Valentine Wyatt',
- reportsTo: 8,
- phone: '(165) 166-6205',
- extension: 3588,
- hireDate: new Date(2015, 5, 21),
- fullTime: true,
- position: 'Councel',
- timeInPosition: 5,
- },
- {
- id: 86,
- name: 'Daniel Mccarthy',
- reportsTo: 8,
- phone: '(624) 483-6206',
- extension: 9112,
- hireDate: new Date(2013, 12, 3),
- fullTime: false,
- position: 'Staff Attorney',
- timeInPosition: 0,
- },
- ],
- },
- ],
- },
- ];
- export default employees;
-
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/treelist-inline-editing-validation/main.jsx b/docs/knowledge-base/examples/treelist/treelist-inline-editing-validation/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-inline-editing-validation/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/treelist-inline-editing-validation/my-command-cell.jsx b/docs/knowledge-base/examples/treelist/treelist-inline-editing-validation/my-command-cell.jsx
deleted file mode 100644
index d56a3d82..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-inline-editing-validation/my-command-cell.jsx
+++ /dev/null
@@ -1,53 +0,0 @@
-import * as React from 'react';
-export default function MyCommandCell(
- enterEdit,
- remove,
- save,
- cancel,
- addChild,
- editField
-) {
- // eslint-disable-next-line react/display-name
- return class extends React.Component {
- render() {
- const { dataItem } = this.props;
- return dataItem[editField] ? (
-
- save(dataItem)}
- >
- {dataItem.isNew ? 'Add' : 'Update'}
-
- cancel(dataItem)}
- >
- {dataItem.isNew ? 'Discard' : 'Cancel'}
-
-
- ) : (
-
- addChild(dataItem)}
- >
- Add Employee
-
- enterEdit(dataItem)}
- >
- Edit
-
- remove(dataItem)}
- >
- Remove
-
-
- );
- }
- };
-}
diff --git a/docs/knowledge-base/examples/treelist/treelist-locked-columns-resizing/app.jsx b/docs/knowledge-base/examples/treelist/treelist-locked-columns-resizing/app.jsx
deleted file mode 100644
index 80cb362c..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-locked-columns-resizing/app.jsx
+++ /dev/null
@@ -1,108 +0,0 @@
-import * as React from 'react';
-import {
- TreeList,
- mapTree,
- extendDataItem,
-} from '@progress/kendo-react-treelist';
-import employees from './data';
-const subItemsField = 'employees';
-const expandField = 'expanded';
-const columns = [
- {
- field: 'name',
- title: 'Name',
- width: '310px',
- expandable: true,
- key: 1,
- },
- {
- field: 'position',
- title: 'Position',
- width: '260px',
- locked: true,
- key: 2,
- },
- {
- field: 'hireDate',
- title: 'Hire Date',
- width: '160px',
- format: '{0:d}',
- key: 3,
- },
- {
- field: 'timeInPosition',
- title: 'Year(s) in Position',
- width: '160px',
- key: 4,
- },
- {
- field: 'fullTime',
- title: 'Full Time',
- width: '150px',
- key: 5,
- },
-];
-
-const App = () => {
- const [state, setState] = React.useState({
- expanded: [1, 2, 32],
- columns,
- });
- const table = React.useRef();
-
- const onColumnResize = (event) => {
- //setting the sum of all columns width to the table element
- if (table) {
- table.current.element.children[0].style.width = `${event.totalWidth}px`;
- setState({ ...state, columns: event.columns });
- }
-
- if (event.end) {
- setState({ ...state, columns: event.columns });
- }
- };
-
- const onExpandChange = (e) => {
- setState({
- ...state,
- expanded: e.value
- ? state.expanded.filter((id) => id !== e.dataItem.id)
- : [...state.expanded, e.dataItem.id],
- });
- };
-
- const addExpandField = (dataTree) => {
- const expanded = state.expanded;
- return mapTree(dataTree, subItemsField, (item) =>
- extendDataItem(item, subItemsField, {
- [expandField]: expanded.includes(item.id),
- })
- );
- };
-
- return (
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/treelist/treelist-locked-columns-resizing/data.js b/docs/knowledge-base/examples/treelist/treelist-locked-columns-resizing/data.js
deleted file mode 100644
index ab659696..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-locked-columns-resizing/data.js
+++ /dev/null
@@ -1,1020 +0,0 @@
-const employees = [{
- "id": 1,
- "name": "Daryl Sweeney",
- "reportsTo": null,
- "phone": "(555) 924-9726",
- "extension": 8253,
- "hireDate": new Date(2012, 2, 7),
- "fullTime": true,
- "position": "CEO",
- "timeInPosition": 2,
- "employees": [{
- "id": 2,
- "name": "Guy Wooten",
- "reportsTo": 1,
- "phone": "(438) 738-4935",
- "extension": 1155,
- "hireDate": new Date(2010, 3, 3),
- "fullTime": true,
- "position": "Chief Technical Officer",
- "timeInPosition": 1,
- "employees": [{
- "id": 32,
- "name": "Buffy Weber",
- "reportsTo": 2,
- "phone": "(699) 838-6121",
- "extension": 8933,
- "hireDate": new Date(2011, 7, 11),
- "fullTime": true,
- "position": "VP, Engineering",
- "timeInPosition": 2,
- "employees": [{
- "id": 11,
- "name": "Hyacinth Hood",
- "reportsTo": 32,
- "phone": "(889) 345-2438",
- "extension": 8564,
- "hireDate": new Date(2014, 2, 3),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 1,
- "employees": [{
- "id": 60,
- "name": "Akeem Carr",
- "reportsTo": 11,
- "phone": "(738) 136-2814",
- "extension": 9353,
- "hireDate": new Date(2011, 4, 21),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 2
- }, {
- "id": 78,
- "name": "Rinah Simon",
- "reportsTo": 11,
- "phone": "(285) 912-5271",
- "extension": 7795,
- "hireDate": new Date(2012, 10, 11),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }]
- }, {
- "id": 42,
- "name": "Gage Daniels",
- "reportsTo": 32,
- "phone": "(107) 290-6260",
- "extension": 896,
- "hireDate": new Date(2013, 5, 16),
- "fullTime": true,
- "position": "Software Architect",
- "timeInPosition": 5
- }, {
- "id": 43,
- "name": "Constance Vazquez",
- "reportsTo": 32,
- "phone": "(800) 301-1978",
- "extension": 5141,
- "hireDate": new Date(2011, 6, 7),
- "fullTime": true,
- "position": "Director, Engineering",
- "timeInPosition": 1,
- "employees": [{
- "id": 46,
- "name": "Darrel Solis",
- "reportsTo": 43,
- "phone": "(327) 977-0216",
- "extension": 7779,
- "hireDate": new Date(2015, 4, 25),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 47,
- "name": "Brian Yang",
- "reportsTo": 46,
- "phone": "(565) 146-5435",
- "extension": 3885,
- "hireDate": new Date(2012, 9, 27),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 50,
- "name": "Lillian Bradshaw",
- "reportsTo": 46,
- "phone": "(323) 509-3479",
- "extension": 5426,
- "hireDate": new Date(2014, 5, 10),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 2
- }, {
- "id": 51,
- "name": "Christian Palmer",
- "reportsTo": 46,
- "phone": "(490) 421-8718",
- "extension": 3706,
- "hireDate": new Date(2012, 12, 27),
- "fullTime": false,
- "position": "Technical Lead",
- "timeInPosition": 1
- }, {
- "id": 55,
- "name": "Summer Mosley",
- "reportsTo": 46,
- "phone": "(784) 962-2301",
- "extension": 5492,
- "hireDate": new Date(2010, 3, 2),
- "fullTime": true,
- "position": "QA Engineer",
- "timeInPosition": 5
- }, {
- "id": 56,
- "name": "Barry Ayers",
- "reportsTo": 46,
- "phone": "(452) 373-9227",
- "extension": 1308,
- "hireDate": new Date(2011, 10, 11),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }, {
- "id": 59,
- "name": "Keiko Espinoza",
- "reportsTo": 46,
- "phone": "(226) 600-5305",
- "extension": 9363,
- "hireDate": new Date(2011, 9, 18),
- "fullTime": true,
- "position": "Junior QA Engineer",
- "timeInPosition": 4
- }, {
- "id": 61,
- "name": "Candace Pickett",
- "reportsTo": 46,
- "phone": "(120) 117-7475",
- "extension": 5178,
- "hireDate": new Date(2010, 5, 6),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 0
- }]
- }, {
- "id": 63,
- "name": "Mia Caldwell",
- "reportsTo": 43,
- "phone": "(848) 636-6470",
- "extension": 6368,
- "hireDate": new Date(2012, 10, 7),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 65,
- "name": "Thomas Terry",
- "reportsTo": 63,
- "phone": "(764) 831-4248",
- "extension": 3574,
- "hireDate": new Date(2015, 6, 15),
- "fullTime": false,
- "position": "Senior Enterprise Support Officer",
- "timeInPosition": 2
- }, {
- "id": 67,
- "name": "Ruth Downs",
- "reportsTo": 63,
- "phone": "(138) 991-1440",
- "extension": 8067,
- "hireDate": new Date(2013, 7, 13),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 5
- }, {
- "id": 70,
- "name": "Yasir Wilder",
- "reportsTo": 63,
- "phone": "(759) 701-8665",
- "extension": 8350,
- "hireDate": new Date(2010, 11, 8),
- "fullTime": true,
- "position": "Senior QA Enginner",
- "timeInPosition": 3
- }, {
- "id": 71,
- "name": "Flavia Short",
- "reportsTo": 63,
- "phone": "(370) 133-9238",
- "extension": 6390,
- "hireDate": new Date(2013, 2, 21),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 0
- }, {
- "id": 74,
- "name": "Aaron Roach",
- "reportsTo": 63,
- "phone": "(958) 717-9230",
- "extension": 4899,
- "hireDate": new Date(2011, 7, 30),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 6
- }, {
- "id": 75,
- "name": "Eric Russell",
- "reportsTo": 63,
- "phone": "(516) 575-8505",
- "extension": 2224,
- "hireDate": new Date(2012, 10, 28),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 3
- }, {
- "id": 76,
- "name": "Cheyenne Olson",
- "reportsTo": 63,
- "phone": "(241) 645-0257",
- "extension": 9181,
- "hireDate": new Date(2015, 5, 19),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 5
- }, {
- "id": 77,
- "name": "Shaine Avila",
- "reportsTo": 63,
- "phone": "(844) 435-1360",
- "extension": 3374,
- "hireDate": new Date(2010, 1, 31),
- "fullTime": true,
- "position": "UI Designer",
- "timeInPosition": 5
- }, {
- "id": 81,
- "name": "Chantale Long",
- "reportsTo": 63,
- "phone": "(252) 419-6891",
- "extension": 7868,
- "hireDate": new Date(2010, 6, 17),
- "fullTime": true,
- "position": "Senior QA Enginner",
- "timeInPosition": 1
- }, {
- "id": 83,
- "name": "Dane Cruz",
- "reportsTo": 63,
- "phone": "(946) 701-6165",
- "extension": 3828,
- "hireDate": new Date(2014, 10, 8),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 2
- }, {
- "id": 84,
- "name": "Regan Patterson",
- "reportsTo": 63,
- "phone": "(265) 946-1765",
- "extension": 6955,
- "hireDate": new Date(2012, 3, 1),
- "fullTime": true,
- "position": "Technical Writer",
- "timeInPosition": 6
- }, {
- "id": 85,
- "name": "Drew Mckay",
- "reportsTo": 63,
- "phone": "(327) 293-0162",
- "extension": 6904,
- "hireDate": new Date(2011, 3, 25),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 88,
- "name": "Bevis Miller",
- "reportsTo": 63,
- "phone": "(525) 557-0169",
- "extension": 6978,
- "hireDate": new Date(2011, 4, 19),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 5
- }, {
- "id": 89,
- "name": "Bruce Mccarty",
- "reportsTo": 63,
- "phone": "(936) 777-8730",
- "extension": 6552,
- "hireDate": new Date(2014, 3, 28),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 5
- }]
- }, {
- "id": 90,
- "name": "Ocean Blair",
- "reportsTo": 43,
- "phone": "(343) 586-6614",
- "extension": 1424,
- "hireDate": new Date(2011, 4, 27),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 2,
- "employees": [{
- "id": 91,
- "name": "Guinevere Osborn",
- "reportsTo": 90,
- "phone": "(424) 741-0006",
- "extension": 3166,
- "hireDate": new Date(2014, 11, 19),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 3
- }, {
- "id": 92,
- "name": "Olga Strong",
- "reportsTo": 90,
- "phone": "(949) 417-1168",
- "extension": 4568,
- "hireDate": new Date(2015, 5, 28),
- "fullTime": true,
- "position": "Graphic Designer",
- "timeInPosition": 4
- }, {
- "id": 93,
- "name": "Robert Orr",
- "reportsTo": 90,
- "phone": "(977) 341-3721",
- "extension": 9241,
- "hireDate": new Date(2012, 8, 20),
- "fullTime": false,
- "position": "Support Officer",
- "timeInPosition": 6
- }, {
- "id": 95,
- "name": "Odette Sears",
- "reportsTo": 90,
- "phone": "(264) 818-6576",
- "extension": 1914,
- "hireDate": new Date(2013, 7, 5),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }]
- }]
- }, {
- "id": 45,
- "name": "Zelda Medina",
- "reportsTo": 32,
- "phone": "(563) 359-6023",
- "extension": 2600,
- "hireDate": new Date(2012, 11, 6),
- "fullTime": true,
- "position": "QA Architect",
- "timeInPosition": 2
- }]
- }, {
- "id": 52,
- "name": "Skyler Cleveland",
- "reportsTo": 2,
- "phone": "(217) 280-5300",
- "extension": 9655,
- "hireDate": new Date(2014, 11, 10),
- "fullTime": true,
- "position": "VP, Engineering",
- "timeInPosition": 2,
- "employees": [{
- "id": 40,
- "name": "Karleigh Garza",
- "reportsTo": 52,
- "phone": "(370) 983-8796",
- "extension": 4044,
- "hireDate": new Date(2014, 3, 10),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 1,
- "employees": [{
- "id": 49,
- "name": "Elmo Tyson",
- "reportsTo": 40,
- "phone": "(344) 496-9555",
- "extension": 6950,
- "hireDate": new Date(2014, 9, 18),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 4
- }, {
- "id": 72,
- "name": "Stacey Lynn",
- "reportsTo": 40,
- "phone": "(140) 772-7509",
- "extension": 8396,
- "hireDate": new Date(2014, 7, 31),
- "fullTime": false,
- "position": "QA Engineer",
- "timeInPosition": 1,
- "employees": [{
- "id": 80,
- "name": "Meredith Parrish",
- "reportsTo": 72,
- "phone": "(714) 284-2408",
- "extension": 7675,
- "hireDate": new Date(2012, 11, 13),
- "fullTime": true,
- "position": "Junior QA Engineer",
- "timeInPosition": 6
- }]
- }, {
- "id": 96,
- "name": "Cassady Whitley",
- "reportsTo": 40,
- "phone": "(996) 587-8405",
- "extension": 780,
- "hireDate": new Date(2013, 5, 7),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 5
- }, {
- "id": 97,
- "name": "Haviva Campbell",
- "reportsTo": 40,
- "phone": "(263) 887-4689",
- "extension": 2808,
- "hireDate": new Date(2013, 3, 5),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 2
- }, {
- "id": 98,
- "name": "Cameron Ayers",
- "reportsTo": 40,
- "phone": "(470) 709-8030",
- "extension": 2893,
- "hireDate": new Date(2013, 8, 28),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 3
- }, {
- "id": 99,
- "name": "Martha Sargent",
- "reportsTo": 40,
- "phone": "(587) 812-4418",
- "extension": 5099,
- "hireDate": new Date(2014, 2, 27),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 3
- }, {
- "id": 100,
- "name": "Darrel Kinney",
- "reportsTo": 40,
- "phone": "(888) 483-9606",
- "extension": 4779,
- "hireDate": new Date(2014, 3, 24),
- "fullTime": false,
- "position": "Graphic Designer",
- "timeInPosition": 1
- }]
- }, {
- "id": 54,
- "name": "Kuame Frye",
- "reportsTo": 52,
- "phone": "(360) 721-5886",
- "extension": 2730,
- "hireDate": new Date(2010, 11, 17),
- "fullTime": true,
- "position": "Software Architect",
- "timeInPosition": 1,
- "employees": [{
- "id": 64,
- "name": "Ori Wynn",
- "reportsTo": 54,
- "phone": "(366) 342-0166",
- "extension": 7252,
- "hireDate": new Date(2015, 6, 21),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 0,
- "employees": [{
- "id": 6,
- "name": "Moses Duncan",
- "reportsTo": 64,
- "phone": "(421) 611-4814",
- "extension": 669,
- "hireDate": new Date(2010, 5, 24),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 6
- }, {
- "id": 12,
- "name": "Jamalia Wallace",
- "reportsTo": 64,
- "phone": "(611) 391-8016",
- "extension": 1952,
- "hireDate": new Date(2011, 9, 8),
- "fullTime": true,
- "position": "Junior Designer",
- "timeInPosition": 3
- }, {
- "id": 62,
- "name": "Palmer Gregory",
- "reportsTo": 64,
- "phone": "(360) 430-2505",
- "extension": 4337,
- "hireDate": new Date(2014, 8, 30),
- "fullTime": true,
- "position": "Designer",
- "timeInPosition": 4
- }, {
- "id": 68,
- "name": "Mallory Gilliam",
- "reportsTo": 64,
- "phone": "(878) 423-2971",
- "extension": 1341,
- "hireDate": new Date(2014, 7, 24),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 1
- }, {
- "id": 73,
- "name": "Ima Hughes",
- "reportsTo": 64,
- "phone": "(905) 485-8001",
- "extension": 1273,
- "hireDate": new Date(2013, 6, 3),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 0
- }, {
- "id": 79,
- "name": "Duncan Mathews",
- "reportsTo": 64,
- "phone": "(790) 971-9709",
- "extension": 4573,
- "hireDate": new Date(2011, 8, 21),
- "fullTime": false,
- "position": "Software Developer",
- "timeInPosition": 3
- }]
- }]
- }, {
- "id": 69,
- "name": "Sierra Beasley",
- "reportsTo": 52,
- "phone": "(271) 953-1968",
- "extension": 3324,
- "hireDate": new Date(2011, 4, 2),
- "fullTime": true,
- "position": "Team Lead",
- "timeInPosition": 3,
- "employees": [{
- "id": 38,
- "name": "Elton Tucker",
- "reportsTo": 69,
- "phone": "(988) 930-9331",
- "extension": 9216,
- "hireDate": new Date(2015, 6, 4),
- "fullTime": true,
- "position": "Support Officer",
- "timeInPosition": 1
- }, {
- "id": 39,
- "name": "Iona Brennan",
- "reportsTo": 69,
- "phone": "(356) 563-0600",
- "extension": 5634,
- "hireDate": new Date(2010, 9, 23),
- "fullTime": true,
- "position": "Junior Support Officer",
- "timeInPosition": 4
- }, {
- "id": 53,
- "name": "Paul Campos",
- "reportsTo": 69,
- "phone": "(899) 205-1689",
- "extension": 8586,
- "hireDate": new Date(2011, 3, 17),
- "fullTime": true,
- "position": "Interaction Designer",
- "timeInPosition": 4,
- "employees": [{
- "id": 66,
- "name": "Gloria Freeman",
- "reportsTo": 53,
- "phone": "(344) 950-9168",
- "extension": 4738,
- "hireDate": new Date(2013, 5, 6),
- "fullTime": true,
- "position": "Junior Interaction Designer",
- "timeInPosition": 0
- }]
- }, {
- "id": 57,
- "name": "Alyssa Hansen",
- "reportsTo": 69,
- "phone": "(548) 925-4799",
- "extension": 4716,
- "hireDate": new Date(2011, 1, 19),
- "fullTime": true,
- "position": "Junior Software Developer",
- "timeInPosition": 6
- }, {
- "id": 82,
- "name": "Yael Walters",
- "reportsTo": 69,
- "phone": "(311) 489-8191",
- "extension": 6520,
- "hireDate": new Date(2013, 7, 4),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 6
- }, {
- "id": 87,
- "name": "Dahlia Hunt",
- "reportsTo": 69,
- "phone": "(720) 339-5202",
- "extension": 3690,
- "hireDate": new Date(2011, 3, 26),
- "fullTime": true,
- "position": "Senior Software Developer",
- "timeInPosition": 4
- }, {
- "id": 94,
- "name": "Adria Stanley",
- "reportsTo": 69,
- "phone": "(536) 357-6391",
- "extension": 3374,
- "hireDate": new Date(2014, 7, 26),
- "fullTime": true,
- "position": "Software Developer",
- "timeInPosition": 0
- }]
- }]
- }]
- }, {
- "id": 3,
- "name": "Priscilla Frank",
- "reportsTo": 1,
- "phone": "(278) 927-2684",
- "extension": 4183,
- "hireDate": new Date(2014, 11, 30),
- "fullTime": true,
- "position": "Chief Product Officer",
- "timeInPosition": 2,
- "employees": [{
- "id": 4,
- "name": "Ursula Holmes",
- "reportsTo": 3,
- "phone": "(302) 760-2034",
- "extension": 2226,
- "hireDate": new Date(2011, 6, 6),
- "fullTime": true,
- "position": "EVP, Product Strategy",
- "timeInPosition": 4
- }, {
- "id": 24,
- "name": "Melvin Carrillo",
- "reportsTo": 3,
- "phone": "(348) 933-5167",
- "extension": 2482,
- "hireDate": new Date(2014, 7, 21),
- "fullTime": true,
- "position": "Director, Developer Relations",
- "timeInPosition": 6,
- "employees": [{
- "id": 29,
- "name": "Martha Chavez",
- "reportsTo": 24,
- "phone": "(860) 754-3464",
- "extension": 4531,
- "hireDate": new Date(2013, 3, 12),
- "fullTime": true,
- "position": "Developer Advocate",
- "timeInPosition": 0
- }, {
- "id": 30,
- "name": "Oren Fox",
- "reportsTo": 24,
- "phone": "(572) 414-3299",
- "extension": 4849,
- "hireDate": new Date(2013, 5, 14),
- "fullTime": false,
- "position": "Developer Advocate",
- "timeInPosition": 0
- }, {
- "id": 41,
- "name": "Amos Barr",
- "reportsTo": 24,
- "phone": "(470) 381-3718",
- "extension": 7643,
- "hireDate": new Date(2010, 3, 9),
- "fullTime": true,
- "position": "Developer Advocate",
- "timeInPosition": 2
- }]
- }]
- }, {
- "id": 5,
- "name": "Anika Vega",
- "reportsTo": 1,
- "phone": "(910) 714-1802",
- "extension": 6353,
- "hireDate": new Date(2010, 2, 25),
- "fullTime": true,
- "position": "Chief Process Officer",
- "timeInPosition": 5,
- "employees": [{
- "id": 10,
- "name": "Vernon Ballard",
- "reportsTo": 5,
- "phone": "(702) 185-8890",
- "extension": 9242,
- "hireDate": new Date(2015, 6, 26),
- "fullTime": true,
- "position": "Director Facilities",
- "timeInPosition": 2,
- "employees": [{
- "id": 16,
- "name": "Ali Guy",
- "reportsTo": 10,
- "phone": "(429) 912-6578",
- "extension": 2225,
- "hireDate": new Date(2014, 6, 29),
- "fullTime": true,
- "position": "Operations Manager",
- "timeInPosition": 4,
- "employees": [{
- "id": 23,
- "name": "Bruce Reilly",
- "reportsTo": 16,
- "phone": "(995) 243-7302",
- "extension": 4815,
- "hireDate": new Date(2015, 4, 1),
- "fullTime": true,
- "position": "Head of Security",
- "timeInPosition": 1,
- "employees": [{
- "id": 26,
- "name": "Rowan Morin",
- "reportsTo": 23,
- "phone": "(792) 141-4374",
- "extension": 1844,
- "hireDate": new Date(2015, 7, 30),
- "fullTime": true,
- "position": "Building Security",
- "timeInPosition": 5
- }, {
- "id": 44,
- "name": "Benedict Soto",
- "reportsTo": 23,
- "phone": "(822) 282-5991",
- "extension": 6422,
- "hireDate": new Date(2012, 6, 1),
- "fullTime": false,
- "position": "Building Security",
- "timeInPosition": 4
- }]
- }, {
- "id": 48,
- "name": "Maryam Rios",
- "reportsTo": 16,
- "phone": "(673) 764-6720",
- "extension": 531,
- "hireDate": new Date(2014, 3, 3),
- "fullTime": true,
- "position": "Team Lead, Personal Assistants",
- "timeInPosition": 1,
- "employees": [{
- "id": 58,
- "name": "Rose Mcintyre",
- "reportsTo": 48,
- "phone": "(771) 615-4590",
- "extension": 7094,
- "hireDate": new Date(2015, 6, 30),
- "fullTime": false,
- "position": "Personal Assistant",
- "timeInPosition": 6
- }]
- }]
- }]
- }]
- }, {
- "id": 7,
- "name": "Nevada Hart",
- "reportsTo": 1,
- "phone": "(254) 220-1576",
- "extension": 6649,
- "hireDate": new Date(2015, 8, 17),
- "fullTime": true,
- "position": "Chief Financial Officer",
- "timeInPosition": 6,
- "employees": [{
- "id": 14,
- "name": "Zena Sanford",
- "reportsTo": 7,
- "phone": "(437) 568-8160",
- "extension": 4452,
- "hireDate": new Date(2010, 11, 30),
- "fullTime": true,
- "position": "VP, Finance",
- "timeInPosition": 4
- }, {
- "id": 15,
- "name": "Quinlan Howe",
- "reportsTo": 7,
- "phone": "(464) 334-9748",
- "extension": 8722,
- "hireDate": new Date(2011, 6, 9),
- "fullTime": false,
- "position": "Senior Director, Finance",
- "timeInPosition": 0,
- "employees": [{
- "id": 17,
- "name": "Indira Lopez",
- "reportsTo": 15,
- "phone": "(301) 368-0938",
- "extension": 8027,
- "hireDate": new Date(2013, 8, 18),
- "fullTime": true,
- "position": "ERP Team Lead",
- "timeInPosition": 4,
- "employees": [{
- "id": 18,
- "name": "Lareina Lara",
- "reportsTo": 17,
- "phone": "(233) 457-7482",
- "extension": 1996,
- "hireDate": new Date(2010, 4, 30),
- "fullTime": true,
- "position": "ERP Solutions Consultant",
- "timeInPosition": 6
- }, {
- "id": 19,
- "name": "Maxwell Wise",
- "reportsTo": 17,
- "phone": "(570) 494-2531",
- "extension": 9865,
- "hireDate": new Date(2012, 5, 19),
- "fullTime": true,
- "position": "Systems Engineer",
- "timeInPosition": 0
- }]
- }, {
- "id": 20,
- "name": "Hunter Mcbride",
- "reportsTo": 15,
- "phone": "(409) 442-7016",
- "extension": 4284,
- "hireDate": new Date(2012, 10, 20),
- "fullTime": true,
- "position": "Senior Director, Tax",
- "timeInPosition": 3
- }, {
- "id": 21,
- "name": "Jana Serrano",
- "reportsTo": 15,
- "phone": "(910) 718-4620",
- "extension": 6970,
- "hireDate": new Date(2010, 4, 2),
- "fullTime": true,
- "position": "Financial Planning & Analysis Manager",
- "timeInPosition": 2
- }, {
- "id": 22,
- "name": "Zachery Shelton",
- "reportsTo": 15,
- "phone": "(310) 240-8675",
- "extension": 4527,
- "hireDate": new Date(2011, 11, 23),
- "fullTime": false,
- "position": "Corporate Finance Controller",
- "timeInPosition": 6,
- "employees": [{
- "id": 28,
- "name": "Cullen Freeman",
- "reportsTo": 22,
- "phone": "(136) 554-8814",
- "extension": 9861,
- "hireDate": new Date(2014, 3, 15),
- "fullTime": true,
- "position": "Treasurer Accountant",
- "timeInPosition": 2
- }, {
- "id": 31,
- "name": "Quinn Dean",
- "reportsTo": 22,
- "phone": "(152) 613-3507",
- "extension": 6621,
- "hireDate": new Date(2015, 1, 29),
- "fullTime": true,
- "position": "Accountant",
- "timeInPosition": 6
- }, {
- "id": 34,
- "name": "Samantha Brady",
- "reportsTo": 22,
- "phone": "(206) 398-4328",
- "extension": 1157,
- "hireDate": new Date(2011, 2, 13),
- "fullTime": true,
- "position": "Accountant",
- "timeInPosition": 2,
- "employees": [{
- "id": 35,
- "name": "Tamara Green",
- "reportsTo": 34,
- "phone": "(219) 248-2789",
- "extension": 4880,
- "hireDate": new Date(2014, 2, 4),
- "fullTime": true,
- "position": "Junior Accountant",
- "timeInPosition": 6
- }]
- }, {
- "id": 36,
- "name": "Olympia Coleman",
- "reportsTo": 22,
- "phone": "(944) 853-6383",
- "extension": 2136,
- "hireDate": new Date(2013, 7, 31),
- "fullTime": true,
- "position": "Collections Manager",
- "timeInPosition": 3
- }, {
- "id": 37,
- "name": "Breanna Goodwin",
- "reportsTo": 22,
- "phone": "(379) 988-9630",
- "extension": 5898,
- "hireDate": new Date(2010, 5, 23),
- "fullTime": false,
- "position": "Payroll Specialist",
- "timeInPosition": 4
- }]
- }, {
- "id": 27,
- "name": "Curran Travis",
- "reportsTo": 15,
- "phone": "(438) 135-8033",
- "extension": 3841,
- "hireDate": new Date(2011, 6, 13),
- "fullTime": true,
- "position": "Finance Controller",
- "timeInPosition": 5
- }]
- }]
- }, {
- "id": 8,
- "name": "Hunter Fry",
- "reportsTo": 1,
- "phone": "(766) 358-9858",
- "extension": 3741,
- "hireDate": new Date(2011, 2, 12),
- "fullTime": false,
- "position": "General Counsel",
- "timeInPosition": 3,
- "employees": [{
- "id": 9,
- "name": "Kuame Carrillo",
- "reportsTo": 8,
- "phone": "(192) 383-1305",
- "extension": 9228,
- "hireDate": new Date(2011, 2, 22),
- "fullTime": true,
- "position": "Associate General Councel",
- "timeInPosition": 0
- }, {
- "id": 13,
- "name": "Stacy Todd",
- "reportsTo": 8,
- "phone": "(925) 286-3327",
- "extension": 8565,
- "hireDate": new Date(2014, 7, 5),
- "fullTime": true,
- "position": "Councel",
- "timeInPosition": 0
- }, {
- "id": 33,
- "name": "Valentine Wyatt",
- "reportsTo": 8,
- "phone": "(165) 166-6205",
- "extension": 3588,
- "hireDate": new Date(2015, 5, 21),
- "fullTime": true,
- "position": "Councel",
- "timeInPosition": 5
- }, {
- "id": 86,
- "name": "Daniel Mccarthy",
- "reportsTo": 8,
- "phone": "(624) 483-6206",
- "extension": 9112,
- "hireDate": new Date(2013, 12, 3),
- "fullTime": false,
- "position": "Staff Attorney",
- "timeInPosition": 0
- }]
- }]
- }];
- export default employees;
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treelist/treelist-locked-columns-resizing/main.jsx b/docs/knowledge-base/examples/treelist/treelist-locked-columns-resizing/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treelist/treelist-locked-columns-resizing/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treeview/treeview-adding-nodes/app.jsx b/docs/knowledge-base/examples/treeview/treeview-adding-nodes/app.jsx
deleted file mode 100644
index 1b6f6cb1..00000000
--- a/docs/knowledge-base/examples/treeview/treeview-adding-nodes/app.jsx
+++ /dev/null
@@ -1,99 +0,0 @@
-import * as React from 'react';
-import { TreeView } from '@progress/kendo-react-treeview';
-import { Button } from '@progress/kendo-react-buttons';
-import { Window } from '@progress/kendo-react-dialogs';
-import { Input } from '@progress/kendo-react-inputs';
-const tree = [
- {
- text: 'Furniture',
- expanded: true,
- items: [
- {
- text: 'Tables & Chairs',
- },
- {
- text: 'Sofas',
- },
- {
- text: 'Occasional Furniture',
- },
- ],
- },
- {
- text: 'Decor',
- expanded: true,
- items: [
- {
- text: 'Bed Linen',
- },
- {
- text: 'Curtains & Blinds',
- },
- {
- text: 'Carpets',
- },
- ],
- },
-];
-const App = () => {
- const [data, setData] = React.useState(tree);
- const [visible, setVisible] = React.useState(false);
- const [showButton, setShowButton] = React.useState(false);
- const [value, setValue] = React.useState('');
- const [parentName, setParentName] = React.useState('');
-
- const toggleDialog = () => {
- setVisible(!visible);
- };
-
- const handleSubmit = (e, parentName) => {
- const newTree = data;
- newTree.map((item) => {
- if (item.text === parentName) {
- item.items = [
- ...item.items,
- {
- text: value,
- },
- ];
- }
- });
- setData(newTree);
- toggleDialog();
- };
-
- const handleChange = (e) => {
- setTimeout(setValue(e.value), 3000);
- };
-
- const handleNodeClick = (e) => {
- if (e.item.items) {
- setParentName(e.item.text);
- setShowButton(true);
- } else {
- setShowButton(false);
- }
- };
- return (
- <>
-
-
- {showButton && Add {parentName} }
- {visible && (
-
-
- {
- handleSubmit(e, parentName);
- }}
- >
- Submit
-
-
- )}
-
- >
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/treeview/treeview-adding-nodes/main.jsx b/docs/knowledge-base/examples/treeview/treeview-adding-nodes/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treeview/treeview-adding-nodes/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treeview/treeview-deleting/app.jsx b/docs/knowledge-base/examples/treeview/treeview-deleting/app.jsx
deleted file mode 100644
index 2156da15..00000000
--- a/docs/knowledge-base/examples/treeview/treeview-deleting/app.jsx
+++ /dev/null
@@ -1,93 +0,0 @@
-import * as React from 'react';
-import { TreeView } from '@progress/kendo-react-treeview';
-
-const MyContext = React.createContext({
- deleteItem: null,
-});
-
-const tree = [
- {
- text: 'My Documents',
- expanded: true,
- id: 1,
- items: [
- {
- text: 'KendoReact Project',
- expanded: true,
- id: 2,
- items: [
- {
- text: 'about.html',
- id: 3,
- },
- {
- text: 'index.html',
- id: 4,
- },
- {
- text: 'logo.png',
- id: 5,
- },
- ],
- },
- ],
- },
-];
-
-const MyItem = (props) => {
- const currentContext = React.useContext(MyContext);
- return (
- <>
- {props.item.text}
- currentContext.deleteItem(props)}
- >
- >
- );
-};
-
-const App = () => {
- const [treeData, setTreeData] = React.useState(tree);
- const searchRecursivly = (id, items) => {
- let newItems = [];
-
- items.forEach((item) => {
- if (item.id != id) {
- if (item.items && item.items.length > 0) {
- item.items = searchRecursivly(id, item.items);
- }
- newItems.push(item);
- }
- });
- return newItems;
- };
-
- const deleteItem = (props) => {
- let newItems = [];
-
- treeData.forEach((item) => {
- if (item.id != props.item.id) {
- if (item.items && item.items.length > 0) {
- item.items = searchRecursivly(props.item.id, item.items);
- }
- newItems.push(item);
- }
- });
-
- console.log(newItems);
- setTreeData(newItems);
- };
- return (
-
- {' '}
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/treeview/treeview-deleting/main.jsx b/docs/knowledge-base/examples/treeview/treeview-deleting/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treeview/treeview-deleting/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treeview/treeview-editing/app.jsx b/docs/knowledge-base/examples/treeview/treeview-editing/app.jsx
deleted file mode 100644
index 77b9db29..00000000
--- a/docs/knowledge-base/examples/treeview/treeview-editing/app.jsx
+++ /dev/null
@@ -1,80 +0,0 @@
-import * as React from 'react';
-import { TreeView } from '@progress/kendo-react-treeview';
-import '@progress/kendo-react-animation';
-
-const tree = [
- {
- text: 'Furniture',
- expanded: true,
- items: [
- { text: 'Tables & Chairs' },
- { text: 'Sofas' },
- { text: 'Occasional Furniture' },
- ],
- },
- {
- text: 'Decor',
- items: [
- { text: 'Bed Linen' },
- { text: 'Curtains & Blinds' },
- { text: 'Carpets' },
- ],
- },
-];
-
-class App extends React.Component {
- render() {
- return (
-
- );
- }
-
- handleChange = (e, item) => {
- item.text = e.target.value;
- this.forceUpdate();
- };
-
- handleBlur = (e, item) => {
- item.edit = false;
- this.forceUpdate();
- };
-
- itemKeyDown = (e) => {
- if (e.keyCode === 32) {
- e.stopPropagation();
- }
- };
-
- itemRender = (props) => {
- if (props.item.edit) {
- return (
-
- this.handleChange(e, props.item)}
- onBlur={(e) => this.handleBlur(e, props.item)}
- />
-
- );
- }
- return {props.item.text} ;
- };
- onItemClick = (event) => {
- event.item.edit = true;
- this.forceUpdate();
- };
- onExpandChange = (event) => {
- event.item.expanded = !event.item.expanded;
- this.forceUpdate();
- };
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/treeview/treeview-editing/main.jsx b/docs/knowledge-base/examples/treeview/treeview-editing/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treeview/treeview-editing/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/treeview/treeview-search/app.jsx b/docs/knowledge-base/examples/treeview/treeview-search/app.jsx
deleted file mode 100644
index b9510954..00000000
--- a/docs/knowledge-base/examples/treeview/treeview-search/app.jsx
+++ /dev/null
@@ -1,58 +0,0 @@
-import * as React from 'react';
-import { TreeView } from '@progress/kendo-react-treeview'
-import '@progress/kendo-react-animation'
-
-const treeData = [{
- text: 'Furniture', expanded: true, items: [
- { text: 'Tables & Chairs' }, { text: 'Sofas' }, { text: 'Occasional Furniture' }]
-}, {
- text: 'Decor', expanded: true, items: [
- { text: 'Bed Linen' }, { text: 'Curtains & Blinds' }, { text: 'Carpets' }]
-}];
-
-class App extends React.Component {
-
- handleSearch = () => {
- let value = document.querySelector('.k-textbox').value
- let newData = this.search(treeData, value)
- this.setState({ data: newData })
- }
-
- search = (items, term) => {
- return items.reduce((acc, item) => {
- if (this.contains(item.text, term)) {
- acc.push(item);
- } else if (item.items && item.items.length > 0) {
- let newItems = this.search(item.items, term);
- if (newItems && newItems.length > 0) {
- acc.push({ text: item.text, items: newItems, expanded: item.expanded });
- }
- }
- return acc;
- }, []);
- }
-
- contains = (text, term) => {
- return text.toLowerCase().indexOf(term.toLowerCase()) >= 0;
- }
-
- state = {
- data: treeData
- }
-
- render() {
- return (
-
-
-
-
-
- );
- }
-}
-
-export default App;
-
diff --git a/docs/knowledge-base/examples/treeview/treeview-search/main.jsx b/docs/knowledge-base/examples/treeview/treeview-search/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/treeview/treeview-search/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/upload/paste-image/app.jsx b/docs/knowledge-base/examples/upload/paste-image/app.jsx
deleted file mode 100644
index 045495e1..00000000
--- a/docs/knowledge-base/examples/upload/paste-image/app.jsx
+++ /dev/null
@@ -1,86 +0,0 @@
-import * as React from "react";
-import { Upload } from "@progress/kendo-react-upload";
-import { guid } from "@progress/kendo-react-common";
-
-class App extends React.Component {
- constructor(props) {
- super(props);
-
- this.state = {
- files: []
- };
- }
-
- onAdd = event => {
- console.log(event.newState);
- this.setState({
- files: event.newState
- });
- };
-
- onRemove = event => {
- this.setState({
- files: event.newState
- });
- };
-
- onProgress = event => {
- this.setState({
- files: event.newState
- });
- };
-
- onStatusChange = event => {
- this.setState({
- files: event.newState
- });
- };
-
- handlePaste = e => {
- if (e.clipboardData.files.length) {
- const fileObject = e.clipboardData.files[0];
- const file = {
- getRawFile: () => fileObject,
- name: fileObject.name,
- size: fileObject.size,
- uid: guid(),
- status: 2,
- progress: 0
- };
-
- const filesState = this.state.files.map(f => ({ ...f }));
- filesState.push(file);
-
- this.setState({ files: filesState });
- } else {
- alert('No image data was found in your clipboard. Copy an image first or take a screenshot.');
- }
- };
-
- render() {
- return (
-
- );
- }
-}
-
-export default App;
diff --git a/docs/knowledge-base/examples/upload/paste-image/main.jsx b/docs/knowledge-base/examples/upload/paste-image/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/upload/paste-image/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/upload/upload-change-messages/app.jsx b/docs/knowledge-base/examples/upload/upload-change-messages/app.jsx
deleted file mode 100644
index 4bbc38a0..00000000
--- a/docs/knowledge-base/examples/upload/upload-change-messages/app.jsx
+++ /dev/null
@@ -1,58 +0,0 @@
-import * as React from 'react';
-import { Upload } from '@progress/kendo-react-upload';
-import { LocalizationProvider, loadMessages } from '@progress/kendo-react-intl';
-const App = () => {
- const [files, setFiles] = React.useState([]);
-
- const onAdd = (event) => {
- console.log('onAdd: ', event.affectedFiles);
- setFiles(event.newState);
- };
-
- const onRemove = (event) => {
- console.log('onRemove: ', event.affectedFiles);
- setFiles(event.newState);
- };
-
- const onProgress = (event) => {
- console.log('onProgress: ', event.affectedFiles);
- setFiles(event.newState);
- };
-
- const onStatusChange = (event) => {
- console.log('onStatusChange: ', event.affectedFiles);
- setFiles(event.newState);
- };
-
- //Use loadMessages to override the default messages that you want to change and add them to a new language
- loadMessages(
- {
- upload: {
- dropFilesHere: 'Drop file here to upload',
- select: 'SELECT FILE',
- },
- },
- 'myCustomMessages'
- );
-
- return (
-
-
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/upload/upload-change-messages/main.jsx b/docs/knowledge-base/examples/upload/upload-change-messages/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/upload/upload-change-messages/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/examples/upload/upload-icon-for-upload-button/app.jsx b/docs/knowledge-base/examples/upload/upload-icon-for-upload-button/app.jsx
deleted file mode 100644
index cbf372f8..00000000
--- a/docs/knowledge-base/examples/upload/upload-icon-for-upload-button/app.jsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import * as React from 'react';
-import { Upload } from '@progress/kendo-react-upload';
-
-const App = () => {
- return (
-
- Upload }
- multiple={true}
- defaultFiles={[]}
- withCredentials={false}
- saveUrl={'https://demos.telerik.com/kendo-ui/service-v4/upload/save'}
- removeUrl={
- 'https://demos.telerik.com/kendo-ui/service-v4/upload/remove'
- }
- />
- }
- multiple={true}
- defaultFiles={[]}
- withCredentials={false}
- saveUrl={'https://demos.telerik.com/kendo-ui/service-v4/upload/save'}
- removeUrl={
- 'https://demos.telerik.com/kendo-ui/service-v4/upload/remove'
- }
- />
-
- );
-};
-
-export default App;
diff --git a/docs/knowledge-base/examples/upload/upload-icon-for-upload-button/main.jsx b/docs/knowledge-base/examples/upload/upload-icon-for-upload-button/main.jsx
deleted file mode 100644
index 36d8526e..00000000
--- a/docs/knowledge-base/examples/upload/upload-icon-for-upload-button/main.jsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import * as React from 'react';
-import { createRoot } from 'react-dom/client';
-import App from './app'
-
-const root = createRoot(document.querySelector('my-app'));
-root.render( );
\ No newline at end of file
diff --git a/docs/knowledge-base/excel-conditional-cell-styling.md b/docs/knowledge-base/excel-conditional-cell-styling.md
deleted file mode 100644
index 70e6c08d..00000000
--- a/docs/knowledge-base/excel-conditional-cell-styling.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-title: Conditional Cell Styling in ExcelExport
-description: This article provides guidance on how to apply conditional cell styling based on specific data conditions within the ExcelExport
-type: how-to
-page_title: Applying Conditional Cell Styling in the ExcelExport Component
-slug: excel-conditional-cell-styling
-tags: excel-export, conditional-styling, cell-formatting
-res_type: kb
-category: knowledge-base
-ticketid: 1633213
----
-
-## Environment
-
-
-
- Product Version
- 7.0.2
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-
-I want to apply conditional cell styling in the ExcelExport component within my application. Specifically, I need to format cells as bold based on the presence of a `is_total` flag in the row data. However, the `is_total` flag should not be included in the exported Excel data.
-
-## Solution
-
-To achieve conditional cell styling in the ExcelExport, set a flag variable to the exported data and apply the required styles if the flag is set to `true`
-
-{% meta id:index height:330 %}
-{% embed_file excel/excel-conditional-styling.jsx preview %}
-{% endmeta %}
diff --git a/docs/knowledge-base/excel-export-of-both-parent-and-child-grid-data.md b/docs/knowledge-base/excel-export-of-both-parent-and-child-grid-data.md
deleted file mode 100644
index 4c6f27aa..00000000
--- a/docs/knowledge-base/excel-export-of-both-parent-and-child-grid-data.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Export to Excel Both Parent and Child Grid Data
-description: An example on how to export to Excel both parent and child KendoReact Grids.
-type: how-to
-page_title: Excel Export of Both Parent and Child Grid Data - KendoReact Grid
-slug: excel-export-of-both-parent-and-child-grid-data
-position:
-tags: grid, export, excel
-ticketid: 1424691
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 3.0.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-I have a parent Grid with child Grids as details, how to export all to Excel.
-
-## Solution
-This requires using a chain of Promises to request the data for all child Grids and append it to the exported document after each parent row item.
-
-This is an example showcasing this. The example contains comments for the most specific parts:
-
-{% meta id:index height:760 %}
-{% embed_file grid/excel-export-parent-child/app.jsx preview %}
-{% embed_file grid/excel-export-parent-child/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/excel-export-with-column-reorder.md b/docs/knowledge-base/excel-export-with-column-reorder.md
deleted file mode 100644
index 985091f8..00000000
--- a/docs/knowledge-base/excel-export-with-column-reorder.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Export to Excel Grid Reordered Columns
-description: An example on how to export to Excel the Grid columns after they have been reordered.
-type: how-to
-page_title: Export to Excel Grid Reordered Columns - KendoReact Grid
-slug: excel-export-of-both-parent-and-child-grid-data
-position:
-tags: grid, export, excel
-ticketid: 1580886
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.5.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I want to maintain the column orders when I export the Grid to Excel, how can I achieve this?
-
-## Solution
-This requires setting the columns inside the ExcelExport, then sorting and updating the gridColumns inside the onColumnReorder event.
-
-This is an example showcasing this approach:
-
-{% meta id:index height:600 %}
-{% embed_file grid/excel-export-with-column-reorder/app.jsx preview %}
-{% embed_file grid/excel-export-with-column-reorder/main.jsx %}
-{% embed_file grid/excel-export-with-column-reorder/products.json %}
-{% endmeta %}
-
diff --git a/docs/knowledge-base/excel-export-with-custom-header-footer.md b/docs/knowledge-base/excel-export-with-custom-header-footer.md
deleted file mode 100644
index a8d9ee16..00000000
--- a/docs/knowledge-base/excel-export-with-custom-header-footer.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: Export Data to Excel with Custom Header and Footer
-description: An example on how to export data to Excel with a custom header and footer when working with the KendoReact Grid.
-type: how-to
-page_title: Export Data to Excel with Custom Headers and Footers - KendoReact Grid
-slug: excel-export-with-custom-header-footer
-tags: grid, kendoreact, export, excel, header, footer
-ticketid: 1463826
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 3.15.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I add a custom header and footer to the exported data to Excel?
-
-## Solution
-
-This can be done by customizing the [Workbook](https://www.telerik.com/kendo-react-ui/components/excelexport/customization/) that will be exported. In this case, we have to add new rows to the current rows collection.
-
-The following example shows how to:
-
-1. Add a new row at the beginning and at the end of the workbook.
-2. Apply [additional settings](https://www.telerik.com/kendo-react-ui/components/excelexport/api/KendoOoxml/) to the cells.
-3. Freeze the first two rows in order to have the header and the column titles to be visible when scrolling.
-
-{% meta id:index height:640 %}
-{% embed_file grid/excel-export-header-footer/app.jsx preview %}
-{% embed_file grid/excel-export-header-footer/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
-
-
diff --git a/docs/knowledge-base/export-to-excel-multiple-grids.md b/docs/knowledge-base/export-to-excel-multiple-grids.md
deleted file mode 100644
index bb922c8a..00000000
--- a/docs/knowledge-base/export-to-excel-multiple-grids.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-title: Export Multiple Grids to Excel
-description: An example on how to export multiple KendoReact Grids to a single Excel file.
-type: how-to
-page_title: Export Multiple Grids to Excel - KendoReact Grid
-slug: export-to-excel-multiple-grids
-tags: kendoreact, export, multiple, grids, excel
-ticketid: 1408161
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I export multiple KendoReact Grids (tables) upon a single click action?
-
-## Solution
-
-Set the second Grid sheet as the second sheet of the first document and export only the first Grid.
-
-{% meta id:index height:760 %}
-{% embed_file grid/multiple-grid-export-excel/app.jsx preview %}
-{% embed_file grid/multiple-grid-export-excel/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/file-upload-in-form.md b/docs/knowledge-base/file-upload-in-form.md
deleted file mode 100644
index 9e51e052..00000000
--- a/docs/knowledge-base/file-upload-in-form.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Use the KendoReact Upload in the KendoReact Form
-description: An example on how to use the KendoReact Upload component in the KendoReact Form.
-type: how-to
-page_title: Use the KendoReact Upload Component in the KendoReact Form - KendoReact Form
-slug: file-upload-in-form
-tags: form, kendoreact, upload
-ticketid: 1517340
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 4.5.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I use the Upload component inside a Form?
-
-## Solution
-
-In order to achieve this, the Upload files data has to be added to the Form data and then submitted programmatically to the server.
-
-
-{% meta id height:460 %}
-{% embed_file form/file-upload/app.jsx preview %}
-{% embed_file form/file-upload/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/filter-the-grid-with-checkboxes.md b/docs/knowledge-base/filter-the-grid-with-checkboxes.md
deleted file mode 100644
index 10750c97..00000000
--- a/docs/knowledge-base/filter-the-grid-with-checkboxes.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: Filter the Grid with Checkboxes
-description: An example on how to filter the KendoReact Grid by using checkboxes.
-type: how-to
-page_title: Filter the Grid by Using Checkboxes - KendoReact Grid
-slug: filter-the-grid-with-checkboxes
-tags: kendoreact, grid, filter, checkbox
-ticketid: 1410595
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 3.0.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I filter the KendoReact Grid data with checkboxes similar to the Kendo UI for jQuery Grid?
-
-## Solution
-
-This is already a built-in option of the Grid and the example can be observed [here.]({% slug column_menu_grid %}#toc-checkbox-filter)
-
-### Older Solution
-
-In KendoReact, you can programmatically implement the data filtering with checkboxes for the Grid by using the [ColumnMenu]({% slug column_menu_grid %}) component.
-
-{% meta id:index height:580 %}
-{% embed_file grid/grid-filter-checkbox/app.jsx preview %}
-{% embed_file grid/grid-filter-checkbox/main.jsx %}
-{% embed_file grid/grid-filter-checkbox/customColumnMenu.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/form-getting-editor-ref-and-keydown.md b/docs/knowledge-base/form-getting-editor-ref-and-keydown.md
deleted file mode 100644
index 94df3bac..00000000
--- a/docs/knowledge-base/form-getting-editor-ref-and-keydown.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Get ref of an editor within the Form and handle onKeyDown event
-description: An example on how to get reference to a Form editor and handle editor events.
-type: how-to
-page_title: Get reference to a Form editor and events - KendoReact Form
-slug: form-getting-editor-ref-and-keydown
-tags: form, kendoreact, input, ref
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.13.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I get ref of a Form editor and its events in the context of the Form component.
-
-## Solution
-
-Pass custom properties to the Field component and access them within the custom component set to the "component" property of the Field. Within the custom component set the "ref" and the event handler.
-
-Following is an example demonstrating this approach:
-
-
-{% meta id height:360 %}
-{% embed_file form/getting-editor-ref-and-keydown/app.jsx preview %}
-{% embed_file form/getting-editor-ref-and-keydown/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/form-reset-and-change-initial-values.md b/docs/knowledge-base/form-reset-and-change-initial-values.md
deleted file mode 100644
index ade96240..00000000
--- a/docs/knowledge-base/form-reset-and-change-initial-values.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Change the initial values and reset the Form
-description: An example on how to change the initial values and reset the KendoReact Form
-type: how-to
-page_title: Reset The Form To Changed Initial Values - KendoReact Form
-slug: form-reset-and-change-initial-values
-tags: form, kendoreact, reset, initial
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.14.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I reset the Form multiple times to the initial values? Also, can I change the initial values dynamically?
-
-## Solution
-
-To reset the Form to the initial values the component must re-mount. This can be achieved by changing the "key" property of the Form to unique value.
-
-The same technique can be used for changing the initial value by first changing the variable in the state and then changing the "key" property.
-
-Following is an example demonstrating this approach:
-
-
-{% meta id height:460 %}
-{% embed_file form/form-reset-and-change-initial-values/app.jsx preview %}
-{% embed_file form/form-reset-and-change-initial-values/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/gantt-scroll-to-today.md b/docs/knowledge-base/gantt-scroll-to-today.md
deleted file mode 100644
index 3f72cd46..00000000
--- a/docs/knowledge-base/gantt-scroll-to-today.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Scroll to today's date in the GanttWeekView
-description: An example on how scroll the GanttWeekView to today's date.
-type: how-to
-page_title: Scroll to today's date in the WeekView on load - KendoReact Gantt
-slug: gantt-scroll-to-today
-tags: gantt, scroll, today
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.13.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-I want the scroll position of the GanttWeekView to be at the today's date on load
-
-## Solution
-
-For achieving the desired result, define a timelineHeaderCell for the GanttWeekView where a custom class name will be added to the header cell for today's date. Then, within React.useEffect, after the Gantt is rendered, get reference to the scroll and move the scroll to the cell with the custom class name that was added.
-
-Following is an example demonstrating this approach:
-
-
-{% meta id height:660 %}
-{% embed_file gantt/scroll-to-today/app.jsx preview %}
-{% embed_file gantt/scroll-to-today/main.jsx %}
-{% embed_file gantt/scroll-to-today/data.js %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-add-clear-filters-button.md b/docs/knowledge-base/grid-add-clear-filters-button.md
deleted file mode 100644
index 2558bb1e..00000000
--- a/docs/knowledge-base/grid-add-clear-filters-button.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Add button in the Grid's toolbar for clearing all filters
-description: An example on how to add button in the toolbar of the Grid for clearing all filters.
-type: how-to
-page_title: Add button for clearing all filters in the Grid - KendoReact Grid
-slug: grid-add-clear-filters-button
-tags: grid, filter, filtering
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-I want to add button in the Grid's toolbar for clearing all filters
-
-## Solution
-For achieving the desired result a Button component can be placed within the GridToolbar and within its click event the filter object of the DataState stored in the state can be set to null
-
-This is an example showcasing how to limit the value:
-
-{% meta height:360 %}
-{% embed_file grid/grid-add-clear-filters-button/app.jsx preview %}
-{% embed_file grid/grid-add-clear-filters-button/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-add-dirty-indicator.md b/docs/knowledge-base/grid-add-dirty-indicator.md
deleted file mode 100644
index a6c7155a..00000000
--- a/docs/knowledge-base/grid-add-dirty-indicator.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: Add dirty indicator in Grid cells with in-cell editing
-description: An example on how to render dirty indicator for edited cells in Grid with in-cell editing
-type: how-to
-page_title: Adding dirty indicator for edited cells in Grid with in-cell editing - KendoReact Grid
-slug: grid-add-dirty-indicator
-position:
-tags: grid, editing, dirty, indicator, incell
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I want to show dirty indicator for edited cells in Grid with enabled in-cell editing.
-
-## Solution
-This can be achieved by tracking the changes and compare them with the original data. With the stored information about the modified cell values we then can add a class name within the cellRender event of the Grid that we can use for displaying a dirty indicator.
-
-The changes are tracked within the onItemChange event. The dirty collection is cleared after saving or canceling the changes (within saveChanges and cancelChanges).
-
-The custom style for the dirty cells is within the "styles.css" file targeting the TD elements with class "dirty".
-
-This is an example showcasing this approach:
-
-{% meta id:index height:480 %}
-{% embed_file grid/grid-add-dirty-indicator/app.jsx preview %}
-{% embed_file grid/grid-add-dirty-indicator/main.jsx %}
-{% embed_file grid/grid-add-dirty-indicator/sample-products.json %}
-{% embed_file grid/grid-add-dirty-indicator/renderers.jsx %}
-{% embed_file grid/grid-add-dirty-indicator/styles.css %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-add-empty-rows.md b/docs/knowledge-base/grid-add-empty-rows.md
deleted file mode 100644
index 6841e572..00000000
--- a/docs/knowledge-base/grid-add-empty-rows.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: Add empty rows to fill the empty space in the data container
-description: An example of how to add empty rows if the number of rows does not fill the data container of the Grid
-type: how-to
-page_title: Add Empty Rows To Fill The Data Container - KendoReact Grid
-slug: grid-add-empty-rows
-tags: grid, kendoreact, rows, empty
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.14.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-I have Grid with enabled virtual scrolling and when I have fewer items I need to fill the empty space with empty rows.
-
-## Solution
-
-Find the last TR element within the "rowRender" of the Grid and return React.Fragment with the last row and the empty rows that will fill the empty space.
-
-Following is an example demonstrating this approach:
-
-{% meta id height:540 %}
-{% embed_file grid/grid-add-empty-rows/app.jsx preview %}
-{% embed_file grid/grid-add-empty-rows/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-add-new-column.md b/docs/knowledge-base/grid-add-new-column.md
deleted file mode 100644
index e51321c3..00000000
--- a/docs/knowledge-base/grid-add-new-column.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Add New Columns to the Grid
-description: An example of how to add new columns to the KendoReact Grid.
-type: how-to
-page_title: Add New Columns to the Grid - KendoReact Grid
-slug: grid-add-new-column
-tags: grid, kendoreact, column, columns, add, new
-ticketid: 1516858
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 4.5.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I dynamically add new columns to the grid?
-
-## Solution
-
-This can be achieved with logic similar to the one in [`this demo`]({% slug editing_grid %}#toc-getting-started) of our documentation which showcases how to dynamically add new records (rows).
-
-The idea here is to have a button that opens up a Form, which when submitted updates the database that contains all records and adds a new element to all objects in the data. The columns should be rendered dynamically by mapping through the database, which will allow the Grid to visualize any changes made in the database.
-
-
-{% meta id height:760 %}
-{% embed_file grid/add-new-column/app.jsx preview %}
-{% embed_file grid/add-new-column/main.jsx %}
-{% embed_file grid/add-new-column/ColumnForm.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-add-operators-dropdown-for-custom-filtercell.md b/docs/knowledge-base/grid-add-operators-dropdown-for-custom-filtercell.md
deleted file mode 100644
index 12ea8511..00000000
--- a/docs/knowledge-base/grid-add-operators-dropdown-for-custom-filtercell.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Add DropDownList for the operators in a custom filterCell of the Grid
-description: An example on how to implement DropDownList operator in a custom filterCell of the Grid.
-type: how-to
-page_title: Add DropDownList for operators in a custom filterCell - KendoReact Grid
-slug: grid-add-operators-dropdown-for-custom-filtercell
-tags: grid, custom, filtering, operators
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.13.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I add a DropDownList for the operators in a custom filterCell?
-
-## Solution
-
-The GridFilterCellProps passed to the filterCell contain a collection with all operators (props.operators) that can be added to the "data" of the DropDownList. If there is a filter expression for the column, the selected operator is available within props.operator.
-
-Following is an example demonstrating how to add a DropDownList for the operators in a filterCell:
-
-{% meta id:index height:520 %}
-{% embed_file grid/add-operators-dropdown-for-custom-filtercell/app.jsx preview %}
-{% embed_file grid/add-operators-dropdown-for-custom-filtercell/main.jsx %}
-{% embed_file grid/add-operators-dropdown-for-custom-filtercell/InputFilterCell.jsx %}
-{% embed_file grid/add-operators-dropdown-for-custom-filtercell/sample-products.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-alternate-row-colors.md b/docs/knowledge-base/grid-alternate-row-colors.md
deleted file mode 100644
index 3a17af2d..00000000
--- a/docs/knowledge-base/grid-alternate-row-colors.md
+++ /dev/null
@@ -1,89 +0,0 @@
----
-title: Alternate the KendoReact Data Grid row colors with CSS
-description: An example on how to alternate the row colors of the KendoReact Data Grid.
-type: how-to
-page_title: Alternate row colors - KendoReact Grid
-slug: grid-alternate-row-colors
-tags: grid, locked, row color, row, locked column color
-ticketid: 1622261
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 7.3.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-
-I want to alternate the Grid row colors. In addition, I also want to apply this color to the rows that belong to [locked]({% slug api_grid-gridcolumnprops %}#toc-locked) columns.
-
-## Solution
-
-For changing the row, you can use the `.k-grid .k-table-row` class, and `.k-grid .k-table-row.k-table-alt-row` for the alt rows. As for the rows that are in locked columns, use the `.k-grid .k-table .k-grid-content-sticky` and `.k-master-row.k-table-alt-row .k-grid-content-sticky` classes.
-
-As an example, the following will set the background of the alt rows to `red` and the normal rows to `lightblue`. This will also be applied to the rows of the `ProductID` column that is locked because .
-
-```jsx
-
-
-
-
-
-
-
-
-
-
-```
-
-{% meta id:index height:480 %}
-{% embed_file grid-row-colors/alternate-colors/app.jsx preview %}
-{% embed_file grid-row-colors/alternate-colors/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
-
-You can also set the background color to specific rows using the [nth-child](https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-child) pseudo class.
-
-```css
-.k-grid .k-table-row:nth-child(2) {
- background: lightblue;
-}
-```
-
-{% meta id:index height:480 %}
-{% embed_file grid-row-colors/single-row-color/app.jsx preview %}
-{% embed_file grid-row-colors/single-row-color/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-autocomplete-gridcolumnmenufilter.md b/docs/knowledge-base/grid-autocomplete-gridcolumnmenufilter.md
deleted file mode 100644
index 8d64fedd..00000000
--- a/docs/knowledge-base/grid-autocomplete-gridcolumnmenufilter.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: Use AutoComplete in the ColumnMenuFilter of the Grid
-description: An example on how to use the AutoComplete component in the ColumnMenuFilter of KendoReact Grid.
-type: how-to
-page_title: Use AutoComplete in the ColumnMenuFilter of the Grid - KendoReact Grid
-slug: grid-autocomplete-gridcolumnmenufilter
-tags: grid, kendoreact, filter, columnmenu, autocomplete, columnmenufilter
-ticketid: 1516740
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 4.5.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I use the AutoComplete components instead of the default input field in the ColumnMenuFilter of the Grid?
-
-## Solution
-
-This can be achieved using the [`filterUI`]({% slug api_grid_gridcolumnmenufilterprops %}#toc-filterui) property of the Grid ColumnMenuFilter to customize the interface of the ColumnMenuFilter.
-
-The three DropDownLists which contain the logic and filters that will be applied to the Grid should be rendered and the logic and filter operators are available in the props passed to the filterUI handler. The input fields should be replaced with AutoComplete components.
-
-The values of the DropDownLists that contain the filter operators should be kept in the state, because those values need to be passed to the corresponding onChange events from the props (onFirstFilterChange - part of [`firstFilterProps`]({% slug api_grid_gridcolumnmenufilteruiprops %}#toc-firstfilterprops), onSecondFilterChange - part of [`secondFilterProps`]({% slug api_grid_gridcolumnmenufilteruiprops %}#toc-secondfilterprops)). The DropDownList that contains the logic operator ("And" or "Or") should call the [`onLogicChange`]({% slug api_grid_gridcolumnmenufilteruiprops %}#toc-onlogicchange) event from the props. The onChange events from the props will filter the content in the Grid accordingly.
-
-The onChange event handlers of the AutoComplete components will be the ones that call the firstFilterProps.onChange and secondFilterProps.onChange events and will pass the operators from the state and the value from the event.
-
-
-{% meta id height:520 %}
-{% embed_file grid/columnmenufilter-with-autocomplete/app.jsx preview %}
-{% embed_file grid/columnmenufilter-with-autocomplete/main.jsx %}
-{% embed_file grid/columnmenufilter-with-autocomplete/customFilterUI.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-cell-edit-on-enter-press.md b/docs/knowledge-base/grid-cell-edit-on-enter-press.md
deleted file mode 100644
index 58573770..00000000
--- a/docs/knowledge-base/grid-cell-edit-on-enter-press.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Enter the Edit Mode in a Grid Cell by Pressing Enter
-description: An example on how to edit a KendoReact Grid cell by pressing the Enter key.
-type: how-to
-page_title: Enter the Edit Mode in a Grid Cell by Pressing Enter - KendoReact Grid
-slug: grid-cell-edit-on-enter-press
-tags: grid, edit, cell
-ticketid: 1558287
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.1.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I edit a selected grid cell by pressing the Enter key?
-
-## Solution
-
-First we need to make the Grid navigatable by setting the [navigatable](https://www.telerik.com/kendo-react-ui/components/grid/api/GridProps/#toc-navigatable) prop to true.
-
-Create a custom cell component, attach the onKeyDown event and pass it to the [cellRender](https://www.telerik.com/kendo-react-ui/components/grid/api/GridProps/#toc-cellrender) prop:
-
-{% meta id:index height:520 %}
-{% embed_file grid/cell-edit-on-enter-press/app.jsx preview %}
-{% embed_file grid/cell-edit-on-enter-press/main.jsx %}
-{% embed_file grid/cell-edit-on-enter-press/renderers.jsx %}
-{% embed_file grid/cell-edit-on-enter-press/sample-products.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-cell-state-editing.md b/docs/knowledge-base/grid-cell-state-editing.md
deleted file mode 100644
index a4181755..00000000
--- a/docs/knowledge-base/grid-cell-state-editing.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Grid Editing with Stateful Cells
-description: An example on how to edit the Grid with cells that manage their own state
-type: how-to
-page_title: Grid Editing with Stateful Cells - KendoReact Grid
-slug: grid-editing-stateful-cells
-tags: grid, edit, cell, performance, state, stateful cells, stateful grid
-ticketid: 1518255
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.16.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-
-How to update the entire Grid when the user stops editing instead of on each keypress in order to improve performance?
-
-## Solution
-
-This can be achieved by making the cells managing their own state via a custom [cell](https://www.telerik.com/kendo-react-ui/components/grid/api/GridColumnProps/#toc-cell) .
-
-{% meta id:index height:500 %}
-{% embed_file grid/grid-cell-state-editing/app.jsx preview %}
-{% embed_file grid/grid-cell-state-editing/main.jsx %}
-{% embed_file grid/grid-cell-state-editing/products.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-cell-whitespace-textoverflow.md b/docs/knowledge-base/grid-cell-whitespace-textoverflow.md
deleted file mode 100644
index 9c51c301..00000000
--- a/docs/knowledge-base/grid-cell-whitespace-textoverflow.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-title: Set the white-space and text-overflow CSS properties of the KendoReact Grid cells
-description: An example on how to set the white-space and text-overflow CSS properties of the Grid cells
-type: how-to
-page_title: Grid cell white-space and text-overflow - KendoReact Data Grid
-slug: grid-cell-white-space-text-overflow
-tags: grid, data grid, white-space, text-overflow, nowrap, break line, ellipsis
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
-Product Version
-v5.13.1
-
-
-Product
-Progress® KendoReact
-
-
-
-
-
-## Description
-
-By default, the Grid cells have their CSS property `white-space` unset therefore defaulting to `normal`, while the `text-overflow` property is set to `ellipsis`. You can change the the white-space property to `nowrap` to keep the data on the same line, and text-overflow to `clip` to remove the ellipsis.
-
-## Solution
-
-You can achieve this by using either the Grid `cellRender` prop, or the GridCell `cell` prop, or using CSS.
-
-# Using CSS
-
-Setting className property to the Grid and using that class name as a selector to target only that instance.
-
-{% meta height:500 %}
-{% embed_file grid/grid-whitespace-textoverflow/CSS/app.jsx preview %}
-{% embed_file grid/grid-whitespace-textoverflow/CSS/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
-
-# Using cell
-
-Setting custom cell for a column and adding the styles directly to the TD element
-
-{% meta height:500 %}
-{% embed_file grid/grid-whitespace-textoverflow/cell/app.jsx preview %}
-{% embed_file grid/grid-whitespace-textoverflow/cell/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
-
-# Using cellRender
-
-Using the Grid's cellRender for adding the custom styles to all cells
-
-{% meta height:500 %}
-{% embed_file grid/grid-whitespace-textoverflow/cellRender/app.jsx preview %}
-{% embed_file grid/grid-whitespace-textoverflow/cellRender/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-change-boolean-filter-to-yesno.md b/docs/knowledge-base/grid-change-boolean-filter-to-yesno.md
deleted file mode 100644
index e86b8dcb..00000000
--- a/docs/knowledge-base/grid-change-boolean-filter-to-yesno.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Change the boolean operators text in the Grid filtering and the cell value of the column.
-description: An example on how to change the default boolean operators text for the Grid and configuring custom cell.
-type: how-to
-page_title: Set custom text for the boolean operators in the Grid - KendoReact Grid
-slug: grid-change-boolean-filter-to-yesno
-tags: grid, kendoreact, filter, filtering, boolean
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.9.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-I want to change the boolean filter "Is True" and "Is False" with "Yes" and "No". The value in the cells should also show "Yes" and "No" instead of "true" and "false".
-
-## Solution
-
-For changing the text for the boolean operators in the Grid, a LocalizationProvider with custom messages can be used. As for the values in the cells, the "cell" property of the column must be set to a custom cell.
-
-Following is an example demonstrating this approach:
-
-{% meta id:index height:560 %}
-{% embed_file grid/grid-change-boolean-filter-to-yesno/app.jsx preview %}
-{% embed_file grid/grid-change-boolean-filter-to-yesno/main.jsx %}
-{% embed_file grid/grid-change-boolean-filter-to-yesno/sample-products.jsx %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-checkbox-in-view-mode-for-boolean.md b/docs/knowledge-base/grid-checkbox-in-view-mode-for-boolean.md
deleted file mode 100644
index fcbeea4c..00000000
--- a/docs/knowledge-base/grid-checkbox-in-view-mode-for-boolean.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: Custom cell with CheckBox for editing and view
-description: An example on how to create a custom cell for boolean field with CheckBox for editing and viewing in KendoReact Grid.
-type: how-to
-page_title: Render Disabled CheckBox In View Mode Of A Cell - KendoReact Grid
-slug: grid-checkbox-in-view-mode-for-boolean
-tags: custom, editing, cell, kendoreact, grid
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I display a boolean value in CheckBox in view mode and editable CheckBox when the row is in edit mode.
-
-## Solution
-
-Add custom cell for the boolean column and render disabled CheckBox for view mode of the cell and enabled CheckBox when the dataItem is in edit mode.
-
-Here is an example demonstrating this approach:
-
-{% meta id height:760 %}
-{% embed_file grid/checkbox-in-view-mode-for-boolean/app.jsx preview %}
-{% embed_file grid/checkbox-in-view-mode-for-boolean/main.jsx %}
-{% embed_file grid/checkbox-in-view-mode-for-boolean/ExternalGridCell.jsx %}
-{% embed_file grid/checkbox-in-view-mode-for-boolean/sample-products.jsx %}
-{% endmeta %}
-
-The example is using an extended Grid cell (ExternalGridCell) which adds all class names and attributes to the TD elements and allows changing only the content of the cell. This extended Grid cell is useful for every scenario with custom cells.
diff --git a/docs/knowledge-base/grid-checkbox-selection-with-grouping.md b/docs/knowledge-base/grid-checkbox-selection-with-grouping.md
deleted file mode 100644
index 068817fa..00000000
--- a/docs/knowledge-base/grid-checkbox-selection-with-grouping.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: How to use checkbox selection in the Grid with enabled grouping
-description: An example on how to use checkbox selection with grouping - KendoReact Grid
-type: how-to
-page_title: Use checkbox selection with grouping - KendoReact Grid
-slug: grid-checkbox-selection-with-grouping
-tags: grid, kendoreact, selection, grouping
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.9.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-I want to use the checkbox selection in a Grid with enabled grouping.
-
-## Solution
-
-When a group expression is applied to the Grid's data, the parent items in the data will be group items, so the logic for setting the select field value and the logic for determining the state of the "Select all" checkbox in the header must be different than the logic used without grouping.
-
-Following is an example demonstrating this approach:
-
-{% meta id:index height:560 %}
-{% embed_file grid/checkbox-selection-with-grouping/app.jsx preview %}
-{% embed_file grid/checkbox-selection-with-grouping/main.jsx %}
-{% embed_file grid/checkbox-selection-with-grouping/products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-collapse-header-column.md b/docs/knowledge-base/grid-collapse-header-column.md
deleted file mode 100644
index d3ffba10..00000000
--- a/docs/knowledge-base/grid-collapse-header-column.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Collapse Header Column in Grid
-description: An example on how to collapse the columns inside the Grid header.
-type: how-to
-page_title: Collapse Header Column in Grid | KendoReact Chart
-slug: collapse-header-column-in-grid
-tags: grid, header, collapse, column
-ticketid: 1573785
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.5.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I collapse the columns inside the Grid header?
-
-
-
-## Solution
-
-This can be achieved by toggling a flag variable in the state that will determine whether or not the nested columns will render.
-
-{% meta id height:560 %}
-{% embed_file grid/collapse-header-column/app.jsx preview %}
-{% embed_file grid/collapse-header-column/main.jsx %}
-{% embed_file grid/collapse-header-column/products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-column-auto-width.md b/docs/knowledge-base/grid-column-auto-width.md
deleted file mode 100644
index 60c7d2e4..00000000
--- a/docs/knowledge-base/grid-column-auto-width.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Set the Width of the Column Based on the Content
-description: An example on how to set the width of the KendoReact Grid column based on the content.
-type: how-to
-page_title: Set the Width of the Column Based on the Content - KendoReact Grid
-slug: grid-column-auto-width
-tags: grid, kendoreact, width, column, auto
-ticketid: 1469294
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 3.0.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I set the width of the Grid column based on the content. I want the column width to be set based on the longest value in the column.
-
-## Solution
-
-### Using HTML canvas measureText()
-
-In order to automatically calculate the column width, we can suggest using the Canvas API [measureText](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/measureText) function that can calculate the text width based on the font weight, size, and family. Then we can use that information to dynamically set the width of the column.
-
-{% meta id:index height:560 %}
-{% embed_file grid/auto-width/canvas/app.jsx preview %}
-{% embed_file grid/auto-width/canvas/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
-
-### Using calculate-size
-
-Another approach would be to use a package called [calculate-size](https://www.npmjs.com/package/calculate-size) or similar which will calculate the size of the text based on the font.
-
-{% meta id:index height:560 %}
-{% embed_file grid/auto-width/calculate-size/app.jsx preview %}
-{% embed_file grid/auto-width/calculate-size/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-columnmenu-filter-without-operators.md b/docs/knowledge-base/grid-columnmenu-filter-without-operators.md
deleted file mode 100644
index 5bd558ef..00000000
--- a/docs/knowledge-base/grid-columnmenu-filter-without-operators.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Hide the DropDownList with the operators in the columnMenu of the Grid
-description: An example on how to show only the filter in the column menu of the Grid without the filter operators.
-type: how-to
-page_title: Hide The Operators DropDownList From GridColumnMenuFilter In The Column Menu - KendoReact Grid
-slug: grid-columnmenu-filter-without-operators
-tags: grid, kendoreact, columnmenu, filtering, operators
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.14.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-I want to display columnMenu in the Grid columns without the DropDown for changing the operators. Can I achieve this without a custom filter and re-use the filter input?
-
-## Solution
-
-Wrap the GridColumnMenuFilter in a DIV element with specific className and use that class name as a selector to hide all elements within the DIV with ".k-dropdownlist" class.
-
-Following is an example demonstrating this approach
-
-{% meta id:index height:360 %}
-{% embed_file grid/grid-columnmenu-filter-without-operators/app.jsx preview %}
-{% embed_file grid/grid-columnmenu-filter-without-operators/main.jsx %}
-{% embed_file grid/grid-columnmenu-filter-without-operators/columnMenu.jsx %}
-{% embed_file grid/grid-columnmenu-filter-without-operators/styles.css.jsx %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-columnmenu-pass-data-with-context.md b/docs/knowledge-base/grid-columnmenu-pass-data-with-context.md
deleted file mode 100644
index 88e7611f..00000000
--- a/docs/knowledge-base/grid-columnmenu-pass-data-with-context.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Pass data to GridColumnMenuCheckboxFilter from Grid context
-description: An example on how to pass data to GridColumnMenuCheckboxFilter using React Context.
-type: how-to
-page_title: Pass data to the column menu GridColumnMenuCheckboxFilter - KendoReact Grid
-slug: grid-columnmenu-pass-data-with-context
-tags: grid, kendoreact, columnmenu, filtering
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-I have the data for the GridColumnMenuCheckboxFilter within the context of the Grid and I want to pass it to the column menu. How can I re-use the data.
-
-## Solution
-
-For achieving the desired result the React Context can be used by wrapping it around the Grid component and then accessing the references to the data within the column menu.
-
-Following is an example demonstrating this approach
-
-{% meta id:index height:520 %}
-{% embed_file grid/grid-columnmenu-pass-data-with-context/app.jsx preview %}
-{% embed_file grid/grid-columnmenu-pass-data-with-context/main.jsx %}
-{% embed_file grid/grid-columnmenu-pass-data-with-context/columnMenu.jsx %}
-{% embed_file grid/grid-columnmenu-pass-data-with-context/products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-columnmenucheckboxfilter-with-contains.md b/docs/knowledge-base/grid-columnmenucheckboxfilter-with-contains.md
deleted file mode 100644
index 0024e2cc..00000000
--- a/docs/knowledge-base/grid-columnmenucheckboxfilter-with-contains.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: Change the GridColumnMenuCheckboxFilter operator to contains
-description: An example on how to use the GridColumnMenuCheckboxFilter with contains operator
-type: how-to
-page_title: Change GridColumnMenuCheckboxFilter Operator To Contains - KendoReact Grid
-slug: grid-columnmenucheckboxfilter-with-contains
-tags: grid, kendoreact, columnmenu, checkboxfilter, contains
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.14.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-Can I change the filter operator for the GridColumnMenuCheckboxFilter to contains?
-
-## Solution
-
-### Using HTML canvas measureText()
-
-By default the GridColumnMenuCheckboxFilter will use "eq" operator. To change the operator locate the filter descriptor within the onDataStateChange event by using the field name of the column and replace the added operator to "contains"
-
-Following is an example demonstrating this approach:
-
-{% meta id:index height:520 %}
-{% embed_file grid/grid-columnmenucheckboxfilter-with-contains/app.jsx preview %}
-{% embed_file grid/grid-columnmenucheckboxfilter-with-contains/main.jsx %}
-{% embed_file grid/grid-columnmenucheckboxfilter-with-contains/columnMenu.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-conditional-scrollbar.md b/docs/knowledge-base/grid-conditional-scrollbar.md
deleted file mode 100644
index de029afb..00000000
--- a/docs/knowledge-base/grid-conditional-scrollbar.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Enable Grid scrollbar conditionally based on page size
-description: An example on how to conditionally enable Grid's scrollbar
-type: how-to
-page_title: Conditionally enable Grid's scrollable based on page size - KendoReact Grid
-slug: grid-conditional-scrollbar
-position:
-tags: grid, scrollable, scrollbar, scrolling
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I want to enable the scrollable functionality of the Grid if page size is higher than 10
-
-## Solution
-This can be achieved by setting the scrollable property of the Grid from a state variable and update its value based on the current page size (either within the onPageChange or within the onDataStateChange event)
-
-This is an example showcasing this approach:
-
-{% meta id:index height:540 %}
-{% embed_file grid/grid-conditional-scrollbar/app.jsx preview %}
-{% embed_file grid/grid-conditional-scrollbar/main.jsx %}
-{% embed_file grid/grid-conditional-scrollbar/products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-context-menu.md b/docs/knowledge-base/grid-context-menu.md
deleted file mode 100644
index f2ae1502..00000000
--- a/docs/knowledge-base/grid-context-menu.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: Implement a Context Menu in the Grid
-description: "Learn how to add a context menu to a KendoReact Grid."
-type: how-to
-page_title: Add a Context Menu - KendoReact Grid
-slug: grid-context-menu
-tags: grid, kendoreact, contextmenu
-ticketid: 1422874
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 3.15.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How to add a context menu to the Grid?
-
-## Solution
-
-You can implement a context menu in the Grid by using the [KendoReact Popup component]({% slug overview_popup %}) and then and display it on a right click.
-
-1. Attach the `onContextMenu` to the Grid rows and pass the row data to the context menu by utilizing the [`rowRender`]({% slug api_grid_gridprops %}#toc-rowRender) property.
-
- ```tsx-no-run
- rowRender = (trElement, dataItem) => {
- const trProps = {
- ...trElement.props,
- onContextMenu: (e) => {
- e.preventDefault()
- this.handleContextMenuOpen(e, dataItem.dataItem)
- }
- };
- return React.cloneElement(trElement, { ...trProps }, trElement.props.children);
- }
- ```
-
-2. Define the desired content of the context menu in the Popup. As the elements inside the Popup are custom, they execute different actions depending on the desired functionality.
-
- ```tsx-no-run
-
-
-
-
-
-
-
- ```
-
-The following example demonstrates the full implementation of the suggested approach. The context menu provides options for moving the rows up and down, and for deleting an item.
-
-{% meta height:480 %}
-{% embed_file grid/context-menu/app.jsx preview %}
-{% embed_file grid/context-menu/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-custom-cell-with-selection.md b/docs/knowledge-base/grid-custom-cell-with-selection.md
deleted file mode 100644
index cabdcdfa..00000000
--- a/docs/knowledge-base/grid-custom-cell-with-selection.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Use custom cell for a column with enabled selection in the Grid.
-description: An example on how to define custom column cell and keep the selection functionality
-type: how-to
-page_title: Custom Column Cell With Grid Selection - KendoReact Grid
-slug: grid-custom-cell-with-selection
-tags: grid, kendoreact, custom, cell, selection
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.14.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-The row and cell selection stops to work If I define custom cell for a column.
-
-## Solution
-Add the selected class name to the custom cell conditionally based on the "props.isSelected" value. The custom cell should also include the necessary attributes.
-
-Following is an example demonstrating how to keep the Grid selection functionality with custom cell:
-
-{% meta height:480 %}
-{% embed_file grid/grid-custom-cell-with-selection/app.jsx preview %}
-{% embed_file grid/grid-custom-cell-with-selection/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-custom-header-cell-with-sorting-and-columnmenu.md b/docs/knowledge-base/grid-custom-header-cell-with-sorting-and-columnmenu.md
deleted file mode 100644
index 205630c2..00000000
--- a/docs/knowledge-base/grid-custom-header-cell-with-sorting-and-columnmenu.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: Implement custom headerCell in Grid with enabled sorting and columnMenu.
-description: How to define custom headerCell in the Grid with enabled sorting and columnMenu
-type: how-to
-page_title: Use custom headerCell with enabled sorting and columnMenu - KendoReact Grid
-slug: grid-custom-header-cell-with-sorting-and-columnmenu
-tags: grid, kendoreact, columnmenu, sorting, headercell
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.13.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-I use custom headerCell for one of the Grid columns, but the sorting icon and the column menu are not visible.
-
-## Solution
-Following is an example demonstrating the correct headerCell structure for rendering the sort and the columnMenu icons:
-
-{% meta height:420 %}
-{% embed_file grid/custom-header-cell-with-sorting-and-columnmenu/app.jsx preview %}
-{% embed_file grid/custom-header-cell-with-sorting-and-columnmenu/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-date-format.md b/docs/knowledge-base/grid-date-format.md
deleted file mode 100644
index f2bce14b..00000000
--- a/docs/knowledge-base/grid-date-format.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: Modify the Date Format in the Grid
-description: An example on how to format ISO string dates in the KendoReact Grid.
-type: how-to
-page_title: Change the Date Format - KendoReact Grid
-slug: grid-date-format
-tags: grid, kendoreact, dates, format
-ticketid: 1402874
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 2.9.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I change an ISO date string which I have in my KendoReact Grid? Setting a `format` property does not affect the current date format.
-
-## Solution
-
-The KendoReact Grid formats only valid JavaScript `date` objects. To achieve the desired scenario, parse the ISO strings to JavaScript dates as soon as they are received from the server and work with the parsed data. This approach will also ensure that even if the filtering is done on the client, it will work.
diff --git a/docs/knowledge-base/grid-date-ragne-filter.md b/docs/knowledge-base/grid-date-ragne-filter.md
deleted file mode 100644
index 8582d60d..00000000
--- a/docs/knowledge-base/grid-date-ragne-filter.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Create a Date-Range Filter in the Grid
-description: An example on how to create a date-range filter in the KendoReact Grid.
-type: how-to
-page_title: Make a Date-Range Filter in the KendoReact Grid - KendoReact Grid
-slug: grid-date-range-filter
-tags: grid, kendoreact, dates, filter
-ticketid: 1402875
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 4.5.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I filter date ranges in the Grid.
-
-Also, how to make Grid custom range filter working with Odata and show default value and a different format?
-
-## Solution
-
-This requires using the [filterCell]({% slug api_grid_gridcolumnprops %}#toc-filterCell) property of the Grid column to add two DatePickers/DateInputs that will allow the user to select a start and an end date. The format can be changed by configuring the [format]({% slug api_dateinputs_datepickerprops %}#toc-format). Use the [defaultValue]({% slug api_dateinputs_datepickerprops %}#toc-defaultValue) to pass a default value for the custom DatePicker component.
-
-{% meta height:450 %}
-{% embed_file grid/date-range-filter/app.jsx preview %}
-{% embed_file grid/date-range-filter/main.jsx %}
-{% embed_file shared/shared-sample-products.js %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-disable-duplicate-grouping.md b/docs/knowledge-base/grid-disable-duplicate-grouping.md
deleted file mode 100644
index 8371613f..00000000
--- a/docs/knowledge-base/grid-disable-duplicate-grouping.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Only allow unique grouping in the Grid
-description: An example on how to only allow unique grouping for the KendoReact Grid.
-type: how-to
-page_title: Unique grouping - KendoReact Grid
-slug: grid-unique-grouping
-tags: group, grid, unique, duplicate
-ticketid: 1617400
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.16.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I disable duplicate grouping for the Data Grid?
-
-## Solution
-
-In the `onGroupChange` event handler, you can check if the newly added group exists in the `group` state variable. In addition, when the group is added, `event.nativeEvent` is undefined. Since the `onGroupChange` event is also responsible to remove groups (in that case `event.nativeEvent` is defined), therefore, set the `group` and `resultState` only when `event.nativeEvent` is defined and `groupExists` equals false.
-
-This is an example demonstrating the implementation:
-
-{% meta id:index height:680 %}
-{% embed_file grid/unique-groups/app.jsx preview %}
-{% embed_file grid/unique-groups/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-disable-reordering.md b/docs/knowledge-base/grid-disable-reordering.md
deleted file mode 100644
index 2e1f118b..00000000
--- a/docs/knowledge-base/grid-disable-reordering.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Disable reordering of a specific column of the KendoReact Grid
-description: An example on how to disable the reordering of a column of the KendoReact Grid.
-type: how-to
-page_title: Grid disable reordering - KendoReact DateRangePicker
-slug: grid-disable-reordering
-tags: grid, reodering, column, disable, reorder
-ticketid: 1588131
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 6.2.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-I want to disable the reordering of one or more columns of the KendoReact Grid.
-
-
-## Solution
-The [orderIndex]({% slug api_grid_gridcolumnprops %}#toc-orderIndex) property to the GridColumn component allows you to restrict the column position at a specific place. For example, if you set the `orderIndex` prop of the first column to `0`, it will not be possible to neither drag it to another position, or drag another column to it.
-
-The following example demonstrates the above approach:
-
-{% meta id:index height:560 %}
-{% embed_file grid/grid-disable-reordering/app.jsx preview %}
-{% embed_file grid/grid-disable-reordering/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-disable-selection-for-rows-conditionally.md b/docs/knowledge-base/grid-disable-selection-for-rows-conditionally.md
deleted file mode 100644
index 817ea8a1..00000000
--- a/docs/knowledge-base/grid-disable-selection-for-rows-conditionally.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Disable checkbox selection for Grid rows conditionally.
-description: An example on how to disable the checkbox selection for particular rows in the Grid.
-type: how-to
-page_title: Disable checkbox selection for specific rows - KendoReact Grid
-slug: grid-disable-selection-for-rows-conditionally
-tags: grid, kendoreact, selection, checkboxes
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.13.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-I want to disable the checkbox selection for specific rows based on a value in the data item
-
-## Solution
-
-Use the cellRender of the Grid to modify the TD element for the select column when the condition for disabling the checkbox is met. Add additional logic for the "Select all" checkbox in the header to exclude the disabled items.
-
-Following is an example with the described approach:
-
-{% meta height:450 %}
-{% embed_file grid/disable-selection-for-rows-conditionally/app.jsx preview %}
-{% embed_file grid/disable-selection-for-rows-conditionally/main.jsx %}
-{% embed_file grid/disable-selection-for-rows-conditionally/products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-dropdown-filter-for-array-field.md b/docs/knowledge-base/grid-dropdown-filter-for-array-field.md
deleted file mode 100644
index d516e97c..00000000
--- a/docs/knowledge-base/grid-dropdown-filter-for-array-field.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Using DropDownList filter for a field in the Grid containing an array.
-description: An example on how to filter array field with a DropDownList custom filter.
-type: how-to
-page_title: Create custom DropDownList filter for array field - KendoReact Grid
-slug: grid-dropdown-filter-for-array-field
-tags: grid, kendoreact, filter, array
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.13.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-I have a field in the Grid that contains an array. I want to add a DropDownList filter for that column that will filter the array values.
-
-## Solution
-
-The first step is to create a custom filter with a DropDownList for the array column through the "filterCell" property of the column. The selected value from the DropDownList will be added to the filter expressions, but since there is no built-in operator that will search within an array field, a custom operator must be defined. Within the onDataStateChange event of the Grid, find and replace the filter operator for the array field.
-
-Following is an example with the described approach:
-
-{% meta height:450 %}
-{% embed_file grid/dropdown-filter-for-array-field/app.jsx preview %}
-{% embed_file grid/dropdown-filter-for-array-field/main.jsx %}
-{% embed_file grid/dropdown-filter-for-array-field/dropdownFilterCell.jsx %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-edit-one-item-at-a-time.md b/docs/knowledge-base/grid-edit-one-item-at-a-time.md
deleted file mode 100644
index 26820878..00000000
--- a/docs/knowledge-base/grid-edit-one-item-at-a-time.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Edit one item in the Grid at a time with inline editing
-description: An example on how to disable the edit/add of items while an item is edited
-type: how-to
-page_title: Prevent editing or adding new items while an item is opened for editing - KendoReact Grid
-slug: grid-edit-one-item-at-a-time
-tags: grid, editing, inline
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-I want to prevent multiple items to be opened for editing when inline edit mode is used for the Grid. The Add button should also be disabled if there is an item opened for editing.
-
-## Solution
-This could be achieved by setting the disabled property of the command buttons in the CommandCell for the inline editing. The Add button for new items can be controlled through the disabled property as well.
-
-For tracking which item will have enabled buttons we add disableEdit property to all items that are not being edited at the time and we use that value within the CommandCell for disabling the buttons.
-
-This is an example showcasing how to limit the value:
-
-{% meta height:580 %}
-{% embed_file grid/grid-edit-one-item-at-a-time/app.jsx preview %}
-{% embed_file grid/grid-edit-one-item-at-a-time/main.jsx %}
-{% embed_file grid/grid-edit-one-item-at-a-time/myCommandCell.jsx %}
-{% embed_file grid/grid-edit-one-item-at-a-time/sample-products.jsx %}
-{% embed_file grid/grid-edit-one-item-at-a-time/services.js %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-ellipsis-data-cell.md b/docs/knowledge-base/grid-ellipsis-data-cell.md
deleted file mode 100644
index 5b2a4315..00000000
--- a/docs/knowledge-base/grid-ellipsis-data-cell.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Add ellipsis to data cells in Grid after specific number of lines
-description: An example on how to show ellipsis in data cells for long text.
-type: how-to
-page_title: Show ellipsis in data cells for long text after specific number of lines - KendoReact Grid
-slug: grid-ellipsis-data-cell
-tags: grid, appearance, cell, ellipsis
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-How to limit the text in data cells to 2 lines and show ellipsis for longer text
-
-## Solution
-This can be achieved by wrapping the content of the data cells in a DIV element with specific class name that can then be customized to show only two lines and ellipsis for longer text. Adding the DIV element can be achieved within the cellRender of the Grid.
-
-This is an example showcasing how to limit the value:
-
-{% meta height:600 %}
-{% embed_file grid/grid-ellipsis-data-cell/app.jsx preview %}
-{% embed_file grid/grid-ellipsis-data-cell/main.jsx %}
-{% embed_file grid/grid-ellipsis-data-cell/styles.css %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-expand-with-flat-data.md b/docs/knowledge-base/grid-expand-with-flat-data.md
deleted file mode 100644
index 11d6004b..00000000
--- a/docs/knowledge-base/grid-expand-with-flat-data.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Implement expand/collapse in Grid with flat data without grouping
-description: An example on how to create custom expand/collapse with flat data.
-type: how-to
-page_title: Implement custom expand/collapse logic for flat data - KendoReact Grid
-slug: grid-expand-with-flat-data
-tags: grid, expand, hierarchy
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-I have flat data and I want to add expand/collapse functionality for hiding a given set of items by some custom condition.
-
-## Solution
-Add a column with custom "cell" for rendering the expand/collapse icons. Within the Grid's rowRender the 'child' items visibility can be determined by the custom logic in which the items are 'grouped'.
-
-Following is an example demonstrating how to simulate hierarchy with flat data where the order of the items in the 'data' are in the correct order and the parent items have ParentID equal to 0.
-
-{% meta height:480 %}
-{% embed_file grid/expand-with-flat-data/app.jsx preview %}
-{% embed_file grid/expand-with-flat-data/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-export-csv.md b/docs/knowledge-base/grid-export-csv.md
deleted file mode 100644
index f71d3fb8..00000000
--- a/docs/knowledge-base/grid-export-csv.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: Export Grid data to a CSV format
-description: An example on how to export the Grid data to a CSV format
-type: how-to
-page_title: Grid CSV Export - KendoReact Grid
-slug: grid-csv-export
-tags: grid, csv, export
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 6.1.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I want to export the Grid data to a CSV format. Currently, the Grid does not have built-in functionality to achieve this.
-
-## Solution
-You can export the Grid data to a CSV format using the [react-csv](https://www.npmjs.com/package/react-csv) library or a similar one which downloads the json data to CSV.
-
-This is an example showcasing this approach:
-
-{% meta id:index height:700 %}
-{% embed_file grid/grid-csv-export/app.jsx preview %}
-{% embed_file grid/grid-csv-export/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-external-dropdownlist-filter.md b/docs/knowledge-base/grid-external-dropdownlist-filter.md
deleted file mode 100644
index b05576d5..00000000
--- a/docs/knowledge-base/grid-external-dropdownlist-filter.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Filter KendoReact Grid with external DropDownList
-description: An example on how to use external component for filtering Grid's data
-type: how-to
-page_title: Using external DropDownList for filtering data - KendoReact Grid
-slug: grid-external-dropdownlist-filter
-position:
-tags: grid, filtering
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I want to filter the Grid from an external DropDownList bound to one of the fields.
-
-## Solution
-All data operations in the Grid are handled manually, so including a filter expression in the Grid's DataState within the onChange event of an external DropDownList can be used for filtering the data.
-
-This is an example showcasing this approach:
-
-{% meta id:index height:700 %}
-{% embed_file grid/grid-external-dropdownlist-filter/app.jsx preview %}
-{% embed_file grid/grid-external-dropdownlist-filter/main.jsx %}
-{% embed_file grid/grid-external-dropdownlist-filter/products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-filtering-api.md b/docs/knowledge-base/grid-filtering-api.md
deleted file mode 100644
index ce50afe7..00000000
--- a/docs/knowledge-base/grid-filtering-api.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: Filter KendoReact Grid with data from an API
-description: An example on how to filter the Grid data that is passed from an API
-type: how-to
-page_title: Filtering the Grid with data from an API - KendoReact Grid
-slug: grid-filtering-api
-tags: grid, filtering, api
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 7.3.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-
-How do I filter the Grid using `useEffect` with dummy API endpoint using JSON place holder?
-
-## Solution
-
-This can be achieved by fetching the data inside the `useEffect` hook and then filtering it using the `filterBy` helper function and passing the filtered collection to the [`data`]({% slug api_grid_gridprops %}#toc-data) prop.
-
-{% meta id:index height:700 %}
-{% embed_file grid-filtering-api/app.tsx preview %}
-{% embed_file grid-filtering-api/main.tsx %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-filtering-disable-diacritics.md b/docs/knowledge-base/grid-filtering-disable-diacritics.md
deleted file mode 100644
index 5b1692ea..00000000
--- a/docs/knowledge-base/grid-filtering-disable-diacritics.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Ignore diacritics in the Grid filtering
-description: An example on how to ignore diacritics when filtering the KendoReact Grid.
-type: how-to
-page_title: Ignore diacritics - KendoReact Grid
-slug: grid-ignore-diacritics
-tags: diacritics, grid, ignore
-ticketid: 1617433
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.16.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I ignore the diacritics in the Grid filtering?
-
-## Solution
-
-You can achieve this by rendering a custom filter cell and normalizing the passed value. First, pass a custom filter cell to the `filterCell` prop of a GridColumn. In the custom filter cell, render the needed component which will apply the filtering, and in `props.onChange` which controls the input value, remove the diacritics from `event.target.value` using [normalize](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize).
-
-This is an example demonstrating this implementation:
-
-{% meta id:index height:560 %}
-{% embed_file grid/ignore-diacritics/app.jsx preview %}
-{% embed_file grid/ignore-diacritics/main.jsx %}
-{% embed_file grid/ignore-diacritics/inputFilterCell.jsx %}
-{% embed_file shared/shared-sample-products.js %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-fix-editors-popup-position-issue.md b/docs/knowledge-base/grid-fix-editors-popup-position-issue.md
deleted file mode 100644
index 83739d79..00000000
--- a/docs/knowledge-base/grid-fix-editors-popup-position-issue.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Fix Grid editors Popup position issue on scrolling
-description: An example on how to fix the Popup position issue on scrolling in Grid editors
-type: how-to
-page_title: Fix Editors Popup Position Issue On Scrolling - KendoReact Grid
-slug: grid-fix-editors-popup-position-issue
-position:
-tags: grid, editors, scrolling, issue
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.13.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-Opening a popup of any editor in the Grid and scrolling it causes the popup to be shown outside of the scrollable container.
-
-## Solution
-The issue in question is caused by the fact that all Popup components are rendered in the "body" element, which causes them to be displayed outside of the scrollable container of the Grid on scrolling. To avoid this, wrap the Grid in PopupPropsContext and change the "appendTo" property to all Popup components within the data container of the Grid to the scrollable container.
-
-This is an example showcasing this approach:
-
-{% meta id:index height:760 %}
-{% embed_file grid/fix-editors-popup-position-issue/app.jsx preview %}
-{% embed_file grid/fix-editors-popup-position-issue/main.jsx %}
-{% embed_file grid/fix-editors-popup-position-issue/myCommandCell.jsx %}
-{% embed_file grid/fix-editors-popup-position-issue/myDropDownCell.jsx %}
-{% embed_file grid/fix-editors-popup-position-issue/services.js %}
-{% embed_file shared/shared-sample-products.js %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-hide-expand-icon-conditionally.md b/docs/knowledge-base/grid-hide-expand-icon-conditionally.md
deleted file mode 100644
index a49d72b4..00000000
--- a/docs/knowledge-base/grid-hide-expand-icon-conditionally.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Hide conditionally the expand icon for some items
-description: An example on how to conditionally hide the expand icon for some items
-type: how-to
-page_title: Hide The Expand Button For DataItems Conditionally - KendoReact Grid
-slug: grid-hide-expand-icon-conditionally
-position:
-tags: grid, details, expand, hide
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.14.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I want to hide the expand icon for some rows based on a condition from the dataItems values.
-
-## Solution
-Within the cellRender of the Grid check if the field for the cell is the expand field and use the props.dataItem to return an empty TD element if the condition for the expand icon is not met.
-
-This is an example showcasing this approach:
-
-{% meta id:index height:660 %}
-{% embed_file grid/grid-hide-expand-icon-conditionally/app.jsx preview %}
-{% embed_file grid/grid-hide-expand-icon-conditionally/main.jsx %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-hide-grouped-columns.md b/docs/knowledge-base/grid-hide-grouped-columns.md
deleted file mode 100644
index a480ff23..00000000
--- a/docs/knowledge-base/grid-hide-grouped-columns.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Hide grouped columns from the Grid
-description: An example on how hide grouped columns
-type: how-to
-page_title: Hiding grouped columns - KendoReact Grid
-slug: grid-hide-grouped-columns
-position:
-tags: grid, grouping
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I want to hide the columns that I have added to the grouping of the Grid
-
-## Solution
-Columns in the Grid can be dynamically removed if we have the columns collection stored in the state and we have a way for determining which columns should be added to the columns collection of the Grid. In this example we are adding "show" property to the columns and its value is set to false if within the onDataStateChange event of the Grid there is a group expression with the field of the column.
-
-This is an example showcasing this approach:
-
-{% meta id:index height:760 %}
-{% embed_file grid/grid-hide-grouped-columns/app.jsx preview %}
-{% embed_file grid/grid-hide-grouped-columns/main.jsx %}
-{% embed_file grid/grid-hide-grouped-columns/products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-horizontal.md b/docs/knowledge-base/grid-horizontal.md
deleted file mode 100644
index dcb44963..00000000
--- a/docs/knowledge-base/grid-horizontal.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: How to create a horizontal Grid.
-description: An example on how to display a horizontal KendoReact Grid.
-type: how-to
-page_title: Horizontal Grid - KendoReact Grid
-slug: grid-horizontal
-tags: grid, horizontal, transpose, vertical
-ticketid: 1608513
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.17.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-I want to create a horizontal Grid where the column headers are displayed in the first column on separate rows. In addition, the corresponding cell data of each column header should be displayed on the same row of the header.
-
-## Solution
-
-The Grid is designed to display the data in a vertical way but you can still achieve this by transforming the data (by transposing it) in a format expected by the Grid.
-
-The following example showcases this approach:
-
-{% meta height:760 %}
-{% embed_file grid/transpose-data/app.jsx preview %}
-{% embed_file grid/transpose-data/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-limit-numeric-filter-value.md b/docs/knowledge-base/grid-limit-numeric-filter-value.md
deleted file mode 100644
index 5f31567f..00000000
--- a/docs/knowledge-base/grid-limit-numeric-filter-value.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Limit Value in a Numeric Filter
-description: An example on how to limit the value in the numeric filter of the KendoReact NumericTextBox.
-type: how-to
-page_title: Limit the Value in a Numeric Filter - KendoReact NumericTextBox
-slug: limit-numeric-filter-value
-tags: grid, NumericTextBox, filter, limit value
-ticketid: 1547408
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 4.13.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-How to limit the value in a numeric filter cell in order to prevent negative values?
-
-## Solution
-Creating a custom component that uses NumericTextBox as a filter and setting the min prop to zero.
-
-This is an example showcasing how to limit the value:
-
-{% meta height:480 %}
-{% embed_file grid/limit-numeric-filter-value/app.jsx preview %}
-{% embed_file grid/limit-numeric-filter-value/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-loading-indicator.md b/docs/knowledge-base/grid-loading-indicator.md
deleted file mode 100644
index 710a301f..00000000
--- a/docs/knowledge-base/grid-loading-indicator.md
+++ /dev/null
@@ -1,113 +0,0 @@
----
-title: Render a Loading Indicator
-description: "Learn how to implement a loading indicator panel for showing the loading state of the KendoReact Grid."
-type: how-to
-page_title: Render a Loading Indicator - KendoReact Grid
-slug: grid-loading-indicator
-tags: grid, kendoreact, loading
-ticketid: 1402875
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 4.5.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How to show a loading indication when loading data.
-
-## Solution
-
-### Rendering Loading Indicator
-
-When the KendoReact Data Grid contains a huge amount of records and depending on the browser, the component might take longer to load its data.
-
-In such cases, a loading indicator is suitable to indicate that the Grid is properly functioning and that its data will soon be displayed.
-
-The following example demonstrates how to render a loading indicator once a request is made and hide it when the request is finished successfully.
-
-{% meta id:loading-indicator height:650 %}
-{% embed_file grid/odata-server-operations/app.jsx preview %}
-{% embed_file grid/odata-server-operations/main.jsx %}
-{% embed_file shared/shared-products-loader.jsx %}
-{% endmeta %}
-
-#### Setup
-
-1. Create a component that will manage the data operations and the requests. This component will separate the data request and response logic from the declaration of the Grid.
-
- ```jsx-no-run
-
-
-
- dataReceived = (products) => {
- this.setState({
- ...this.state,
- products: products
- });
- }
- ```
-
-1. Inside the ProductLoader component, indicate to the Grid when to display the loading indicator. The time when the loading indicator will be rendered depends on the logic of the application.
-
- ```jsx-no-run
- this.pending = toODataString(this.props.dataState);
- fetch(this.baseUrl + this.pending, this.init)
- .then(response => response.json())
- .then(json => {
- this.lastSuccess = this.pending;
- this.pending = '';
- if (toODataString(this.props.dataState) === this.lastSuccess) {
- this.props.onDataReceived.call(undefined, {
- data: json.value,
- total: json['@odata.count']
- });
- } else {
- this.requestDataIfNeeded();
- }
- });
- }
- ```
-
- ```jsx-no-run
- render() {
- this.requestDataIfNeeded();
- return this.pending && ;
- }
- ```
-
-1. Create a component that will show the `k-loading-mask` over the Grid container.
-
- ```jsx-no-run
- class LoadingPanel extends React.Component {
- render() {
- const loadingPanel = (
-
- );
-
- const gridContent = document && document.querySelector('.k-grid-content');
- return gridContent ? ReactDOM.createPortal(loadingPanel, gridContent) : loadingPanel;
- }
- }
- ```
diff --git a/docs/knowledge-base/grid-lock-row-headers.md b/docs/knowledge-base/grid-lock-row-headers.md
deleted file mode 100644
index 61e34ea3..00000000
--- a/docs/knowledge-base/grid-lock-row-headers.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: Dynamically Lock Row Section Headers
-description: An example on how to dynamically lock row based on a data group in the KendoReact Grid.
-type: how-to
-page_title: Dynamically Lock Row Section Headers - KendoReact Grid
-slug: grid-lock-row-headers
-tags: grid, kendoreact, dates, format
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 4.10.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I add a locked section header that changes when I scroll through the data similar to the ComboBox grouping headers.
-
-## Solution
-
-This will required the following:
-
-1. The section/header rows have to be part of the data.
-1. We can add a field in those data items and lock the rows based on that. The locked row of the current section/group will be locked at the top.
-
-> This approach is working with flat data and grouping on only one level. As the section/group data is part of the flat data we have to filter it based on that section value in order to collapse/expand the sections.
-
-The following example showcase this in action:
-
-{% meta id height:760 %}
-{% embed_file grid/lock-row-headers/app.jsx preview %}
-{% embed_file grid/lock-row-headers/main.jsx %}
-{% embed_file shared/shared-products-with-sections.json %}
-{% endmeta %}
-
diff --git a/docs/knowledge-base/grid-merge-cells-and-rows-data.md b/docs/knowledge-base/grid-merge-cells-and-rows-data.md
deleted file mode 100644
index 99ac57a7..00000000
--- a/docs/knowledge-base/grid-merge-cells-and-rows-data.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Merge Rows in the Grid
-description: An example on how to merge cells and rows data in the KendoReact Grid.
-type: how-to
-page_title: Merge Rows and Cells Data in the Grid - KendoReact Grid
-slug: merge-row-and-cell-in-the-grid
-tags: grid, rows, merge, cells
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 7.0.2
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I merge or group duplicate cells and rows data in the KendoReact Data Grid?
-
-## Solution
-
-For simple scenarios where the data needs to be merged for single column, rowSpan can be set to the TD elements within the cellRender of the Grid. However, due to limitations in how HTML table can rowSpan/colSpan, it is not possible to have different colSpan for rows that already have set rowSpan, so using colSpan and rowSpan for merging duplicate rows and cells data will not be possible and different approach must be used.
-
-For this scenario, use a [`cellRender`]({% slug api_grid_gridprops %}#toc-cellrender) and compare the previous cell and previous row data to remove the content of the cell if it duplicate. You can also add different colors of the cell based on the values (suitable for boolean values for example), so they can be distinguished visually.
-
-{% meta id:index height:760 %}
-{% embed_file grid/merge-rows-and-cells/app.jsx preview %}
-{% embed_file grid/merge-rows-and-cells/main.jsx %}
-{% embed_file grid/merge-rows-and-cells/products.json %}
-{% endmeta %}
-
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-multiple-functionalities.md b/docs/knowledge-base/grid-multiple-functionalities.md
deleted file mode 100644
index b75e9bae..00000000
--- a/docs/knowledge-base/grid-multiple-functionalities.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: Add Paging, Sorting, and Filtering to a Grid with Form-Editing Features
-description: An example of how to have the pagination, sorting, and filtering functionalities of a KendoReact Grid with form-editing features.
-type: how-to
-page_title: Have Paging, Sorting, and Filtering Functionalities in a Grid with Form-Editing Features - KendoReact Grid
-slug: grid-multiple-functionalities
-tags: grid, kendoreact, paging, sorting, filtering, page, sort, filter, form, edit
-ticketid: 1512657
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 4.6.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I have paging, sorting and filtering functionality of a Grid with form editing features?
-
-## Solution
-
-This can be achieved by building upon [`this demo`]({% slug external_editing_grid %}) of our documentation which showcases how to achieve a Grid with form editing features.
-
-By following the steps in the articles in our documentation regarding how to apply [`sorting`]({% slug sorting_grid %}#toc-getting-started), [`filtering`]({% slug filtering_grid %}#toc-getting-started) and [`paging`]({% slug paging_grid %}#toc-getting-started), those functionalities are then included to result in the following scenario shown in the demo below.
-
-
-
-{% meta id height:650 %}
-{% embed_file grid/multiple-functionalities/app.jsx preview %}
-{% embed_file grid/multiple-functionalities/main.jsx %}
-{% embed_file grid/multiple-functionalities/editForm.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-multiselect-filter-cell.md b/docs/knowledge-base/grid-multiselect-filter-cell.md
deleted file mode 100644
index b14bf683..00000000
--- a/docs/knowledge-base/grid-multiselect-filter-cell.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Add custom filterCell with MultiSelect filter in Grid
-description: An example on how to create MultiSelect filter with filterCell for a column in KendoReact Grid.
-type: how-to
-page_title: Add MultiSelect Filter By Customizing The FilterCell Of A Column - KendoReact Grid
-slug: grid-multiselect-filter-cell
-tags: custom, filtering, filtercell, kendoreact, grid
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I use MultiSelect for filtering a column?
-
-## Solution
-
-Configure custom filterCell for the column where you want to use the MultiSelect. Either pass the data that will populate the MultiSelect from the main component or load it within the custom filterCell. Since there is no built-in filter operator for handling the array with multiple value that the MultiSelect will return, a custom operator must be defined.
-
-Here is an example demonstrating this approach:
-
-{% meta id height:650 %}
-{% embed_file grid/multiselect-filter-cell/app.jsx preview %}
-{% embed_file grid/multiselect-filter-cell/main.jsx %}
-{% embed_file grid/multiselect-filter-cell/multiSelectFilterCell.jsx %}
-{% embed_file grid/multiselect-filter-cell/products.json %}
-{% endmeta %}
-
diff --git a/docs/knowledge-base/grid-paste-from-excel.md b/docs/knowledge-base/grid-paste-from-excel.md
deleted file mode 100644
index c18f4a4a..00000000
--- a/docs/knowledge-base/grid-paste-from-excel.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Paste Data From Excel
-description: An example on how to paste data from Excel in the KendoReact Grid.
-type: how-to
-page_title: Paste Data From Excel - KendoReact Grid
-slug: grid-paste-from-excel
-tags: grid, kendoreact, excel, paste
-ticketid: 1481168
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 3.15.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-I need to provide mechanism for pasting data into my KendoReact Grid, from Excel sheets.
-
-## Solution
-
-This will require wrapping the Grid in a div element and attaching an `onPaste` event. Then on that event:
-1. Take the data.
-1. Transform it into JSON based on the Grid fields.
-1. Set that JSON array as Grid data.
-
-This can be seen in the following example:
-
-{% meta id:index height:700 %}
-{% embed_file grid/paste-from-excel/app.jsx preview %}
-{% embed_file grid/paste-from-excel/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-pdf-export-watermark.md b/docs/knowledge-base/grid-pdf-export-watermark.md
deleted file mode 100644
index 8647410f..00000000
--- a/docs/knowledge-base/grid-pdf-export-watermark.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Export Grid Data With Watermark
-description: An example on how to export to PDF the Grid data with a watermark
-type: how-to
-page_title: Export Grid Data With Watermark - KendoReact Grid
-slug: grid-pdf-export-watermark
-position:
-tags: grid, export, PDF, watermark
-ticketid: 1580886
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.5.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I want my exported PDF document to have a watermark.
-
-## Solution
-This can be achieved by using the drawDom and exportPDF from the @progress/kendo-drawing package and then passing a template.
-
-This is an example showcasing this approach:
-
-{% meta id:index height:500 %}
-{% embed_file grid/grid-pdf-export-with-watermark/app.jsx preview %}
-{% embed_file grid/grid-pdf-export-with-watermark/main.jsx %}
-{% embed_file grid/grid-pdf-export-with-watermark/products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-progressbar-cell.md b/docs/knowledge-base/grid-progressbar-cell.md
deleted file mode 100644
index 998e5d45..00000000
--- a/docs/knowledge-base/grid-progressbar-cell.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Add ProgressBar to Grid cell
-description: An example on how to display a progress bar in KendoReact Grid cell
-type: how-to
-page_title: Add ProgressBar cell to the Grid - KendoReact Grid
-slug: grid-progressbar-cell
-position:
-tags: grid, cell, progressbar, customization
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I want to add ProgressBar component as a custom cell in the Grid.
-
-## Solution
-This can be achieved by defining custom cell for the column and rendering a ProgressBar component with the value from the data item for that column. For using the ProgressBar the @progress/kendo-react-progressbars package must be included.
-
-This is an example showcasing this approach:
-
-{% meta id:index height:500 %}
-{% embed_file grid/grid-progressbar-cell/app.jsx preview %}
-{% embed_file grid/grid-progressbar-cell/main.jsx %}
-{% embed_file grid/grid-progressbar-cell/products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-remove-select-all.md b/docs/knowledge-base/grid-remove-select-all.md
deleted file mode 100644
index 12f4ff05..00000000
--- a/docs/knowledge-base/grid-remove-select-all.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Remove the "Select all" checkbox in the Grid's header for checkbox selection
-description: An example on how to remove the "Select all" checkbox in the header
-type: how-to
-page_title: Remove the "Select all" checkbox in the header - KendoReact Grid
-slug: grid-remove-select-all
-position:
-tags: grid, selection, checkbox
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.13.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I want to remote the "Select all" checkbox in the Grid's header when using checkbox selection
-
-## Solution
-Handle the "headerCellRender" of the Grid to customize the header cells and if the "props.field" is the select field, return an empty TD element with the default properties only. For all of the other fields, return the default TD element.
-
-This is an example showcasing this approach:
-
-{% meta id:index height:500 %}
-{% embed_file grid/remove-select-all/app.jsx preview %}
-{% embed_file grid/remove-select-all/main.jsx %}
-{% embed_file grid/remove-select-all/products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-save-scroll-position-in-tabstrip.md b/docs/knowledge-base/grid-save-scroll-position-in-tabstrip.md
deleted file mode 100644
index 3f99e66d..00000000
--- a/docs/knowledge-base/grid-save-scroll-position-in-tabstrip.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Save the scroll position of the Grid placed within a TabStrip
-description: An example on how to store and restore the scroll position of a Grid placed inside a TabStrip
-type: how-to
-page_title: Save And Restore The Scroll Position - KendoReact Grid
-slug: grid-save-scroll-position-in-tabstrip
-position:
-tags: grid, scroll, tabstrip, scrolling
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.13.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I have a Grid placed in TabStrip, but after changing the tabs, the scroll position of the Grid is lost. How can I save and restore it?
-
-## Solution
-For saving the scroll position, handle the onScroll event of the Grid and save the scrollTop value of the scrollable container (ev.nativeEvent.target.scrollTop). Then, within React.useEffect, every time when the selected tab of the TabStrip is changed, either set the scrollTop position of the scrollable container (to restore the exact same position) or use the scrollIntoView method of the Grid's API to restore the scroll position to the same item. For the second approach, set the rowHeight of the Grid and using the scrollTop value and the rowHeight value you will be able to determine which row index must be passed to the scrollIntoView method.
-
-This is an example showcasing this approach:
-
-{% meta id:index height:500 %}
-{% embed_file grid/save-scroll-position-in-tabstrip/app.jsx preview %}
-{% embed_file grid/save-scroll-position-in-tabstrip/main.jsx %}
-{% embed_file grid/save-scroll-position-in-tabstrip/products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-scheduler-drag-and-drop-mobile.md b/docs/knowledge-base/grid-scheduler-drag-and-drop-mobile.md
deleted file mode 100644
index 189bf4ea..00000000
--- a/docs/knowledge-base/grid-scheduler-drag-and-drop-mobile.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: Drag and Drop Items From the KendoReact Grid to the KendoReact Scheduler
-description: An example on how to drag and drop items from the KendoReact Grid to the KendoReact Scheduler.
-type: how-to
-page_title: Drag and Drop Items From the KendoReact Grid to the KendoReact Scheduler - KendoReact Grid KendoReact Scheduler
-slug: grid-scheduler-drag-and-drop
-tags: grid, kendoreact, scheduler, drag, drop
-ticketid: 1478702
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 6.0.2
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-Looking for a drag and drop between KendoReact Grid and KendoReact Scheduler. I want to transfer items from the Grid to the Scheduler.
-
-## Solution
-
-This will required the following setup:
-
-1. Use the [rowRender](https://www.telerik.com/kendo-react-ui/components/grid/api/GridProps/#toc-rowrender) prop of the Grid to make the row draggable and to get the currently dragged item.
-1. Then we need add a onDropEvent to the Scheduler container using the [component ref](https://reactjs.org/docs/refs-and-the-dom.html#creating-refs).
-1. When the user drops an item we add it to the Scheduler data updating the state.
-
-{% meta id:index height:900 %}
-{% embed_file scheduler/dnd-from-grid/app.jsx preview %}
-{% embed_file scheduler/dnd-from-grid/main.jsx %}
-{% embed_file shared/shared-data.js %}
-{% endmeta %}
-
-## Enabling the drag and drop on mobile devices
-
-This can be achieved by using the KendoReact [Drag&Drop](https://www.telerik.com/kendo-react-ui/components/utils/drag-and-drop/) utility with a custom `DragHandleCell` with touchAction set to `none`:
-
-{% meta id:index height:900 %}
-{% embed_file scheduler/dnd-from-grid-mobile/draggable/app.jsx preview %}
-{% embed_file scheduler/dnd-from-grid-mobile/draggable/main.jsx %}
-{% embed_file scheduler/dnd-from-grid-mobile/draggable/drag-handle-cell.jsx %}
-{% embed_file scheduler/dnd-from-grid-mobile/draggable/draggable-row.jsx %}
-{% embed_file shared/shared-data.js %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
-
-
-The native Drag & Drop API does not support touch events by default. It is possible to enable the drag and drop functionality on mobile devices by using a polyfill as well:
-
-{% meta id:index height:900 %}
-{% embed_file scheduler/dnd-from-grid-mobile/polyfill/app.jsx preview %}
-{% embed_file scheduler/dnd-from-grid-mobile/polyfill/main.jsx %}
-{% embed_file shared/shared-data.js %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-scheduler-drag-and-drop.md b/docs/knowledge-base/grid-scheduler-drag-and-drop.md
deleted file mode 100644
index 382dbb56..00000000
--- a/docs/knowledge-base/grid-scheduler-drag-and-drop.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Drag and Drop Items From the KendoReact Grid to the KendoReact Scheduler
-description: An example on how to drag and drop items from the KendoReact Grid to the KendoReact Scheduler.
-type: how-to
-page_title: Drag and Drop Items From the KendoReact Grid to the KendoReact Scheduler - KendoReact Grid KendoReact Scheduler
-slug: grid-scheduler-drag-and-drop
-tags: grid, kendoreact, scheduler, drag, drop
-ticketid: 1478702
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 3.15.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-Looking for a drag and drop between KendoReact Grid and KendoReact Scheduler. I want to transfer items from the Grid to the Scheduler.
-
-## Solution
-
-This will required the following setup:
-
-1. Use the [rowRender](https://www.telerik.com/kendo-react-ui/components/grid/api/GridProps/#toc-rowrender) prop of the Grid to make the row draggable and to get the currently dragged item.
-1. Then we need add a onDropEvent to the Scheduler container using the [component ref](https://reactjs.org/docs/refs-and-the-dom.html#creating-refs).
-1. When the user drops an item we add it to the Scheduler data updating the state.
-
-{% meta id:index height:900 %}
-{% embed_file scheduler/dnd-from-grid/app.jsx preview %}
-{% embed_file scheduler/dnd-from-grid/main.jsx %}
-{% embed_file shared/shared-data.js %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-search.md b/docs/knowledge-base/grid-search.md
deleted file mode 100644
index 7941c303..00000000
--- a/docs/knowledge-base/grid-search.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Grid Search Bar
-description: An example on how to implement a search bar in the Grid.
-type: how-to
-page_title: Grid Search Bar | KendoReact Chart
-slug: grid-search-bar
-tags: grid, search, bar
-ticketid: 1573969
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.5.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-
-How can I implement a search bar in the Grid?
-
-## Solution
-
-This can be achieved by creating a custom input.
-
-{% meta id height:500 %}
-{% embed_file grid/grid-search-bar/app.tsx preview %}
-{% embed_file grid/grid-search-bar/main.tsx %}
-{% embed_file grid/grid-search-bar/sample-products.tsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-selection-mobile-scrolling.md b/docs/knowledge-base/grid-selection-mobile-scrolling.md
deleted file mode 100644
index c285f26d..00000000
--- a/docs/knowledge-base/grid-selection-mobile-scrolling.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Grid with selection that supports scrolling on mobile
-description: An example on how to allow mobile scrolling for a selectable Grid
-type: how-to
-page_title: Grid with selection that supports mobile scrolling - KendoReact Grid
-slug: grid-selectable-mobile-scrolling
-tags: grid, select, checkbox, mobile scrolling, grid selectable
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 7.0.2
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-When enabling selection for the Grid using the [selectable](https://www.telerik.com/kendo-react-ui/components/grid/api/GridProps/#toc-selectable/) prop, scrolling does not work using mobile. This is because screen scrolling will trigger the selection.
-
-
-## Solution
-Use checkbox selection instead. You can enable checkbox selection only when the Grid is used in a mobile machine. This will allow using the built-in `selectable` property when using a desktop or laptop, and only checkbox selection with a mobile machine.
-
-Here is an example with the described approach, where we are importing the `useDeviceType` method from the `isMobile.jsx` file. This method is used when setting the `selectable` property of the Grid such that it is set to `null` when the device type is either a mobile or tablet. This leaves us with only the checkbox selection:
-
-{% meta id height:550 %}
-{% embed_file grid/grid-selection-mobile-scrolling/app.jsx preview %}
-{% embed_file grid/grid-selection-mobile-scrolling/main.jsx %}
-{% embed_file grid/grid-selection-mobile-scrolling/isMobile.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
-
-For more information about enabling checkbox selection, check the following example from the Grid Selection article:
-- https://www.telerik.com/kendo-react-ui/components/grid/selection/#toc-customizing-the-selection
-
diff --git a/docs/knowledge-base/grid-show-details-in-popover.md b/docs/knowledge-base/grid-show-details-in-popover.md
deleted file mode 100644
index 7ce72f07..00000000
--- a/docs/knowledge-base/grid-show-details-in-popover.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Show details info from data item in Popover on button click
-description: An example on how to show Popover with details on button click
-type: how-to
-page_title: Add command button to show additional information for the row - KendoReact Grid
-slug: grid-show-details-in-popover
-position:
-tags: grid, command, details
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I want to add command button for each row to show additional information from the data item.
-
-## Solution
-For achieving the desired result, the dataItem for which the button is clicked must be passed to a state variable, so it can then be accessible within the Popover template. React Context is used for passing reference to the function showing the Popover to the command button.
-
-This is an example showcasing this approach:
-
-{% meta id:index height:480 %}
-{% embed_file grid/grid-show-details-in-popover/app.jsx preview %}
-{% embed_file grid/grid-show-details-in-popover/main.jsx %}
-{% embed_file grid/grid-show-details-in-popover/myCommandCell.jsx %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-show-different-field-in-group.md b/docs/knowledge-base/grid-show-different-field-in-group.md
deleted file mode 100644
index f7f97586..00000000
--- a/docs/knowledge-base/grid-show-different-field-in-group.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Show different field in group headers
-description: An example on how to show different field within the group header
-type: how-to
-page_title: Showing different field value within the group headers - KendoReact Grid
-slug: grid-show-different-field-in-group
-position:
-tags: grid, grouping
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I want to show different than the group field value within the group headers
-
-## Solution
-For achieving the desired result we need to ensure that all items grouped by field A will have equal field B (the field that we want to display in the group header). As for the actual implementation, we need to handle the cellRender of the Grid and change the rendering of the group header cell for the group field that we want to change. The next step is to find the first data item in that group and get the value of the other field.
-
-This is an example showcasing this approach:
-
-{% meta id:index height:520 %}
-{% embed_file grid/grid-show-different-field-in-group/app.jsx preview %}
-{% embed_file grid/grid-show-different-field-in-group/main.jsx %}
-{% embed_file grid/grid-show-different-field-in-group/products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grid-show-hide-columns.md b/docs/knowledge-base/grid-show-hide-columns.md
deleted file mode 100644
index 45a395ea..00000000
--- a/docs/knowledge-base/grid-show-hide-columns.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: Dynamically Show/Hide Columns in the Grid
-description: An example on how to dynamically show or hide the columns in the KendoReact Grid.
-type: how-to
-page_title: Show/Hide Columns Dynamically in the Grid - KendoReact Grid
-slug: grid-show-hide-columns
-tags: grid, kendoreact, show, hide, columns, column
-ticketid: 1514629
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 4.5.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I dynamically show or hide the columns in the grid?
-
-## Solution
-
-In order to achieve this, the Columns of the Grid should be rendered dynamically and the data for the Columns should be kept in the state, so that the changes in the Grid can be visualized. In the example below, each Column has a show property which determines whether that Column is shown. There are checkboxes above the Grid whose onChange event handlers cause the state change and thus cause the re-rendering of the Grid with the corresponding columns missing/added.
-
-
-{% meta id height:650 %}
-{% embed_file grid/show-hide-columns/app.jsx preview %}
-{% embed_file grid/show-hide-columns/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-show-placeholder-for-filters.md b/docs/knowledge-base/grid-show-placeholder-for-filters.md
deleted file mode 100644
index 2ecbb05c..00000000
--- a/docs/knowledge-base/grid-show-placeholder-for-filters.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Show placeholder in the KendoReact Grid filter components
-description: An example on how to show placeholder for the filters - KendoReact Grid.
-type: how-to
-page_title: Set placeholders for the filters - KendoReact Grid
-slug: grid-show-placeholder-for-filters
-tags: grid, kendoreact, filtering, placeholder
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I add "Search" text in the Grid filters when they are empty?
-
-## Solution
-
-For setting a placeholder text for the built-in Grid filters a combination of using PropsContext (for the DatePicker and the NumericTextBox) for changing the "placeholder" property and pure JavaScript for setting the "placeholder" attribute for simple inputs can be used.
-
-Following is an example demonstrating how to set a placeholder for NumericTextBox, DatePicker and simple inputs for the filter components in the Grid:
-
-
-{% meta id height:480 %}
-{% embed_file grid/grid-show-placeholder-for-filters/app.jsx preview %}
-{% embed_file grid/grid-show-placeholder-for-filters/main.jsx %}
-{% embed_file grid/grid-show-placeholder-for-filters/grid-with-filtering.jsx %}
-{% embed_file grid/grid-show-placeholder-for-filters/sample-products.js %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-stateful.md b/docs/knowledge-base/grid-stateful.md
deleted file mode 100644
index cc96cf7c..00000000
--- a/docs/knowledge-base/grid-stateful.md
+++ /dev/null
@@ -1,121 +0,0 @@
----
-title: Configure Stateful Grids
-description: "Learn how to configure a stateful KendoReact Grid allowing you to perform paging, sorting, filtering, grouping, and editing, and to reuse it across apps."
-type: how-to
-page_title: Configure Stateful Grids - KendoReact Grid
-slug: grid-stateful
-tags: grid, kendoreact, stateful
-ticketid: 1403874
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 3.15.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How to make a stateful and reusable Grid?
-
-## Solution
-
-#### Configuring Stateful Grids
-
-[Stateful components](https://code.tutsplus.com/tutorials/stateful-vs-stateless-functional-components-in-react--cms-29541) are class components that have a state which gets initialized in the constructor.
-
-You can configure a stateful KendoReact Data Grid to perform paging, sorting, filtering, grouping, and editing, and also reuse it in multiple applications and pages by setting its columns and desired data operations.
-
-#### Data Operations
-
-The stateful Grid performs its data operations by using the `process` method of the [`DataQuery`]({% slug overview_dataquery %}) library. To apply the changes and to save the current state of the grid data when a data operation is performed, handle the [`onDataStateChange`]({% slug api_grid_gridprops %}#toc-ondatachange) event.
-
-```jsx-no-run
- const onDataStateChange = (event) => {
- const updatedState = {
- ...gridState,
- skip: event.dataState?.skip,
- take: event.dataState?.take,
- sort: event.dataState?.sort,
- filter: event.dataState?.filter,
- };
- setGridState(updatedState);
- };
-```
-
-#### Editing
-
-To configure the stateful Grid for editing:
-
-1. Set two different data collections. The first data collection will be displayed in the Grid after the data operations are applied. The second data collection will be used to edit and add items to the collection.
-
- > If the stateful Grid is not intended to be groupable, you can use only one data collection.
-
- ```jsx-no-run
- const [state, setState] = useState({
- result: process(props.data, {skip: 0}),
- dataState: { skip: 0 },
- unprocessedData: props.data
- });
- ```
-
-1. Handle the [`onItemChange`]({% slug api_grid_gridprops %}#toc-onitemchange) event which will fire each time the user updates any of the editors.
-
- ```jsx-no-run
- const onItemChange = (event) => {
- let data = [...state.unprocessedData]; // Clone to avoid direct mutation
- let currentDataState = { ...state.dataState };
-
- if (event.field === props.editField && event.value === 'delete') {
- data.splice(data.findIndex(d => d === event.dataItem), 1);
- } else {
- const index = data.findIndex(d => d === event.dataItem);
- data[index] = { ...data[index], [event.field]: event.value };
- }
-
- setState({
- ...state,
- result: process(data, currentDataState),
- unprocessedData: data
- });
- };
- ```
-
-1. Add items to the collection by using a function which you can call from a button click either inside the Grid toolbar or outside the Grid.
-
- ```jsx-no-run
- const addNew = () => {
- let data = [...state.unprocessedData];
- data.unshift({ [props.editField]: true, Discontinued: false, ProductID: 0 });
- setState({
- ...state,
- result: process(data, state.dataState),
- unprocessedData: data
- });
- };
- ```
-
-#### Local Data Operations with HOC
-
-You can sort, filter, or page the local data to which the KendoReact Data Grid is bound by using the Kendo UI Data Query component.
-
-The following example demonstrates how to create a [higher-order component (HOC)](https://reactjs.org/docs/higher-order-components.html) which uses the `process()` Data Query method to manage the local data operations. The HOC has its own state and adds the `filter`, `sort`, `total`, and `skip` props to the Grid to handle its [`onDataStateChange`]({% slug api_grid_gridprops %}#toc-ondatastatechange) event. The HOC function is then applied for binding two Grids to different sets of data without the need for you to write any logic for the filtering, sorting, and paging operations.
-
-{% meta id:stateful height:700 %}
-{% embed_file grid/stateful/app.jsx preview %}
-{% embed_file grid/stateful/main.jsx %}
-{% embed_file grid/stateful/with-state.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-store-columns-width-and-order.md b/docs/knowledge-base/grid-store-columns-width-and-order.md
deleted file mode 100644
index c6601399..00000000
--- a/docs/knowledge-base/grid-store-columns-width-and-order.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Store Grid columns width and order in the localStorage
-description: An example on how to store the width and the order of the Grid columns.
-type: how-to
-page_title: Store the width and the order of the columns - KendoReact Grid
-slug: grid-store-columns-width-and-order
-tags: grid, kendoreact, store, columns, width
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.9.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-I want to store the order and the width of the Grid columns on resizing and reordering.
-
-## Solution
-
-Handle the onColumnResize and onColumnReorder to get reference to the updated columns collection and store it in a localStorage variable. The columns definition of the Grid can then be loaded from that collection.
-
-Following is an example demonstrating this approach:
-
-
-{% meta id height:500 %}
-{% embed_file grid/store-columns-width-and-order/app.jsx preview %}
-{% embed_file grid/store-columns-width-and-order/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-store-state-in-localstorage.md b/docs/knowledge-base/grid-store-state-in-localstorage.md
deleted file mode 100644
index 787af49f..00000000
--- a/docs/knowledge-base/grid-store-state-in-localstorage.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Persisting The KendoReact Grid's DataState Between Page Reloads
-description: An example on how to preserve the state of the KendoReact Grid.
-type: how-to
-page_title: Save State - KendoReact Grid
-slug: grid-save-state-to-localstorage
-tags: grid, kendoreact, state, localstorage, refresh
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
-Product Version
-v5.12.1
-
-
-Product
-Progress® KendoReact
-
-
-
-
-
-## Description
-
-I want to preserve the Grid state between page reloads.
-
-## Solution
-
-You can achieve this by saving the DataState to the localStorage. When the dataState changes, store it in the localStore, and when the component loads, set the previously saved dataState from the localStorage.
-
-{% meta id:index height:480 %}
-{% embed_file grid/grid-save-datastate-to-localstorage/app.jsx preview %}
-{% embed_file grid/grid-save-datastate-to-localstorage/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-using-fitColumns-method.md b/docs/knowledge-base/grid-using-fitColumns-method.md
deleted file mode 100644
index 660c975a..00000000
--- a/docs/knowledge-base/grid-using-fitColumns-method.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Using fitColumns method to change the width of a column to fit its content
-description: An example on how to use the fitColumns method for fitting content in a column - KendoReact Grid.
-type: how-to
-page_title: Use fitColumns method for changing the width of a column to fit its content - KendoReact Grid
-slug: grid-using-fitColumns-method
-tags: grid, kendoreact, fitColumns, width
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.9.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-I want to change the width of the columns to fit the content.
-
-## Solution
-
-The Grid's API has fitColumns method that will change the width of a given column to fit its content.
-
-Following is an example demonstrating this approach:
-
-
-{% meta id height:450 %}
-{% embed_file grid/using-fitColumns-method/app.jsx preview %}
-{% embed_file grid/using-fitColumns-method/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/grid-virtual-scrolling-pagechange-event.md b/docs/knowledge-base/grid-virtual-scrolling-pagechange-event.md
deleted file mode 100644
index 5be0b8d6..00000000
--- a/docs/knowledge-base/grid-virtual-scrolling-pagechange-event.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Determine which scrollbar have triggered the onPageChange event with virtual scrolling in the Grid
-description: An example on how to determine which scrollbar was moved to fire onPageChange - KendoReact Grid.
-type: how-to
-page_title: Find which scrollbar have trigged the onPageChange event when virtual scrolling is enabled - KendoReact Grid
-slug: grid-virtual-scrolling-pagechange-event
-tags: grid, kendoreact, virtualization, scrolling
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.9.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-When virtual scrolling is enabled for the Grid, the onPageChange event fires even if the horizontal scrollbar is moved. How can I determine if the onPageChange is triggered from the vertical scrollbar?
-
-## Solution
-
-The onPageChange event contains the nativeEvent and storing its target scrollTop and scrollLeft values can be used for determining which scrollbar have triggered the event.
-
-Following is an example demonstrating this approach:
-
-
-{% meta id height:500 %}
-{% embed_file grid/virtual-scrolling-pagechange-event/app.jsx preview %}
-{% embed_file grid/virtual-scrolling-pagechange-event/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/gridcolumnmenucheckboxfilter-outside-grid.md b/docs/knowledge-base/gridcolumnmenucheckboxfilter-outside-grid.md
deleted file mode 100644
index 9935bb33..00000000
--- a/docs/knowledge-base/gridcolumnmenucheckboxfilter-outside-grid.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Render the GridColumnMenuCheckBoxFilter component outside the Grid
-description: An example on how to render the GridColumnMenuCheckBoxFilter component outside the Grid
-type: how-to
-page_title: GridColumnMenuCheckBoxFilter outside the Grid - KendoReact Grid
-slug: grid-columnmenucheckboxfilter-outside-grid
-tags: grid, columnmenu, checkboxfilter, outside grid
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 6.1.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-I want to render the GridColumnMenuCheckBoxFilter component as a standalone component without integrating it inside the KendoReact Grid.
-
-## Solution
-You can use the GridColumnMenuCheckboxFilter as a separate component for returning filter expressions. For using the GridColumnMenuCheckboxFilter, you will have to pass a "column" object with a "field" and the "data".
-
-This is an example showcasing this approach where the filter expression is logged to the console:
-
-{% meta id:index height:700 %}
-{% embed_file grid/checkboxfilter-outside-grid/app.jsx preview %}
-{% embed_file grid/checkboxfilter-outside-grid/main.jsx %}
-{% embed_file grid/checkboxfilter-outside-grid/columnMenu.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/grouping-with-custom-cell.md b/docs/knowledge-base/grouping-with-custom-cell.md
deleted file mode 100644
index 48237cf0..00000000
--- a/docs/knowledge-base/grouping-with-custom-cell.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Create a Grid with Grouping and a Custom Cell
-description: An example on how to use the KendoReact Grid with grouping and custom cells.
-type: how-to
-page_title: Create a Grid with Grouping and a Custom Cell - KendoReact Grid
-slug: kendoreact-grid-with-grouping-and-a-custom-cell
-tags: grid, rows, cell, grouping,
-ticketid: 1385369
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 3.0.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-KendoReact Grid looses cell alignment when using the cell prop with grouping.
-
-## Solution
-
-In this case, the issue occurs because when the `rowType` is `groupHeader` the cell has to return null.
-
-{% meta id:index height:600 %}
-{% embed_file grid/grouping-with-custom-cell/app.jsx preview %}
-{% embed_file grid/grouping-with-custom-cell/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/hide-kendoreact-notification-after-a-timeout.md b/docs/knowledge-base/hide-kendoreact-notification-after-a-timeout.md
deleted file mode 100644
index 84116d51..00000000
--- a/docs/knowledge-base/hide-kendoreact-notification-after-a-timeout.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: Hide KendoReact Notifications after a Timeout
-description: An example on how to hide the KendoReact Notification after a timeout.
-type: how-to
-page_title: Hide KendoReact Notifications after a Timeout - KendoReact Notification
-slug: hide-kendoreact-notification-after-a-timeout
-position:
-tags: notification
-ticketid: 1422282
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 3.0.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-How to hide the Notification component automatically after a specific timeout.
-
-## Solution
-Currently, this can be done using the setTimeout function as shown in the example below.
-
-{% meta id:index height:300 %}
-{% embed_file notification/hide-after/app.jsx preview %}
-{% embed_file notification/hide-after/main.jsx %}
-{% endmeta %}
-
-Also, there is a feature request for this in our portal and I can suggest voting for it as it will increase its chances to be implemented as a built-in feature:
-
-https://feedback.telerik.com/kendo-react-ui/1413293-add-hideafter-prop-to-the-notification-component
diff --git a/docs/knowledge-base/how-to-retain-checkbox-selection-with-server-paging.md b/docs/knowledge-base/how-to-retain-checkbox-selection-with-server-paging.md
deleted file mode 100644
index e0719b01..00000000
--- a/docs/knowledge-base/how-to-retain-checkbox-selection-with-server-paging.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Retain Checkbox Selection with Server Paging
-description: An example on how to retain checkbox selection in the KendoReact Grid with server paging.
-type: how-to
-page_title: Retain Checkbox Selection with Server Paging - KendoReact Grid
-slug: how-to-retain-checkbox-selection-with-server-paging
-tags: grid, checkbox, selection, sever-paging
-ticketid: 1413958
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 3.0.0.
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I retain the selection of checkbox in the KendoReact Grid when I navigate across different pages when the data comes from API server-side paging and sorting are configured?
-
-## Solution
-
-Keep the selected items by their ids inside the state.
-
-{% meta id:index height:500 %}
-{% embed_file grid/checkbox-selection-server-side/app.jsx preview %}
-{% embed_file grid/checkbox-selection-server-side/main.jsx %}
-{% embed_file grid/checkbox-selection-server-side/products-loader.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/inputs-delayed-value-change.md b/docs/knowledge-base/inputs-delayed-value-change.md
deleted file mode 100644
index 96a7d4d4..00000000
--- a/docs/knowledge-base/inputs-delayed-value-change.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Add delayed value for the Input component that will change after a period of time of no typing
-description: An example on how to have delayed value after a period of no typing
-type: how-to
-page_title: Adding an option for a delayed value that will change only after a period of time without typing - KendoReact Input
-slug: inputs-delayed-value-change
-tags: input, inputs, pickers
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-I want the value of the Input to change only after the user stops typing for some time.
-
-## Solution
-Having a delayed value is possible by introducing a second state variable and tracking the time for the last change. Such implementation might be suitable for filtering, where triggering the filtering can be initiated only when the user stops typing.
-
-This is an example showcasing how to limit the value:
-
-{% meta height:300 %}
-{% embed_file inputs/inputs-delayed-value-change/app.jsx preview %}
-{% embed_file inputs/inputs-delayed-value-change/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/listbox-keyboard-navigation.md b/docs/knowledge-base/listbox-keyboard-navigation.md
deleted file mode 100644
index d15884b1..00000000
--- a/docs/knowledge-base/listbox-keyboard-navigation.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Implement Keyboard Navigation for the KendoReact ListBox
-description: An example on how to achieve keyboard navigation for the KendoReact ListBox
-type: how-to
-page_title: KeyBoard Navigation - KendoReact ListBox
-slug: listbox-keyboard-navigation
-tags: listbox, keyboard, navigation, keyboard navigation, key, list
-ticketid: 1608113
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
-Product Version
-v5.13.1
-
-
-Product
-Progress® KendoReact
-
-
-
-
-
-## Description
-
-I want to implement keyboard navigation for the ListBox component.
-
-## Solution
-
-In order to implement the keyboard navigation functionality for the ListBox, wrap it with a `div` element and handle the `onKeyDown` event of the `div`. Inside the `onKeyDown` event handler, move the items and change their selection based on the pressed keys.
-
-{% meta height:500 %}
-{% embed_file listbox/listbox-keyboard-navigation/app.jsx preview %}
-{% embed_file listbox/listbox-keyboard-navigation/main.jsx %}
-{% endmeta %}
\ No newline at end of file
diff --git a/docs/knowledge-base/listbox-show-drag-clue.md b/docs/knowledge-base/listbox-show-drag-clue.md
deleted file mode 100644
index 3e3cf2de..00000000
--- a/docs/knowledge-base/listbox-show-drag-clue.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Show clue indicator when dragging an item in the ListBox
-description: An example on how to show clue indicator when an item is dragged in the ListBox
-type: how-to
-page_title: Show indicator for the drop position of an item while dragging - KendoReact ListBox
-slug: listbox-show-drag-clue
-tags: listbox, grouping, customization, appearance
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-I want to show an indicator for the drop position of an item in the ListBox while dragging.
-
-## Solution
-For displaying a clue indicator for the drop position the onDragOver event should be used for adding a class name to the item where the dragged item will be dropped. Based on the position on the target item and the target ListBox, a top or a bottom border can be displayed to show the correct position where the item will be inserted.
-
-Within the onDrop and on each onDragOver we are clearing the class name that was previously added.
-
-{% meta height:500 %}
-{% embed_file listbox/show-drag-clue/app.jsx preview %}
-{% embed_file listbox/show-drag-clue/main.jsx %}
-{% embed_file listbox/show-drag-clue/products.json %}
-{% embed_file listbox/show-drag-clue/styles.css %}
-{% endmeta %}
diff --git a/docs/knowledge-base/listview-grouping.md b/docs/knowledge-base/listview-grouping.md
deleted file mode 100644
index a82d0876..00000000
--- a/docs/knowledge-base/listview-grouping.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Add grouping functionality for the ListView
-description: An example on how to render grouped items in ListView
-type: how-to
-page_title: Grouping functionality - KendoReact ListView
-slug: listview-grouping
-tags: listview, grouping, customization, appearance
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.12.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-I want to have grouping functionality in KendoReact ListView
-
-## Solution
-The ListView is a template component and it allows complex rendering of the items.
-
-The first step for achieving the desired result will be to group the items by using the groupBy helper method. This will create an array where the parent items will be group items holding the group value and an items collection with the data items of that group.
-
-The second step will be to create a template that will take advantage of the new data structure and render the parent items (group items) as the main containers and the child items (the data items for each group) within that container.
-
-This is an example showcasing how to limit the value:
-
-{% meta height:760 %}
-{% embed_file listview/listview-grouping/app.jsx preview %}
-{% embed_file listview/listview-grouping/main.jsx %}
-{% embed_file listview/listview-grouping/products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/listview-scheduler-drag-and-drop.md b/docs/knowledge-base/listview-scheduler-drag-and-drop.md
deleted file mode 100644
index 5ff05a8c..00000000
--- a/docs/knowledge-base/listview-scheduler-drag-and-drop.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Drag and Drop Items from KendoReact ListView to KendoReact Scheduler
-description: Learn how to enable drag and drop functionality between KendoReact ListView and Scheduler components.
-type: how-to
-page_title: How to Enable Drag and Drop between KendoReact ListView and Scheduler
-slug: drag-drop-kendoreact-listview-scheduler
-tags: react, kendoReact, drag and drop, ListView, Scheduler
-res_type: kb
----
-
-## Environment
-
-| Property | Value |
-| --- | --- |
-| Product | KendoReact |
-| Version | 7.0.2|
-
-## Description
-
-Looking for a drag and drop between KendoReact ListView and KendoReact Scheduler. I want to transfer items from the ListView to the Scheduler.
-
-## Solution
-
-To enable drag and drop functionality between a KendoReact ListView and a KendoReact Scheduler, follow these steps:
-
-1. Render a custom ListView item by using the [`item`](https://www.telerik.com/kendo-react-ui/components/listview/api/ListViewProps/#toc-item) prop. This allows you to make the row draggable and obtain the currently dragged item.
-1. Add an `onDropEvent` to the Scheduler container using the [component ref](https://react.dev/reference/react/useRef).
-1. When the user drops an item, add it to the Scheduler data by updating the state.
-
-{% meta id:index height:900 %}
-{% embed_file scheduler/dnd-from-listview/app.jsx preview %}
-{% embed_file scheduler/dnd-from-listview/main.jsx %}
-{% embed_file shared/shared-data.js %}
-{% endmeta %}
-
-## Notes
-
-- Make sure to install the required dependencies, such as `react-dnd`, `@progress/kendo-react-listview`, and `@progress/kendo-react-scheduler`.
-- Refer to the official documentation for more information on the `DragSource` and `useRef` APIs.
-- Adjust the code according to your specific use case and requirements.
-
-## See Also
-
-- [KendoReact ListView Documentation](https://www.telerik.com/kendo-react-ui/components/listview/)
-- [KendoReact Scheduler Documentation](https://www.telerik.com/kendo-react-ui/components/scheduler/)
diff --git a/docs/knowledge-base/localization-use-variable-in-messages.md b/docs/knowledge-base/localization-use-variable-in-messages.md
deleted file mode 100644
index ce591611..00000000
--- a/docs/knowledge-base/localization-use-variable-in-messages.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Add support for variable in localization messages
-description: An example on how to use variable with LocalizationProvider
-type: how-to
-page_title: Extending LocalizationProvider To Support Variables - KendoReact ListView
-slug: localization-use-variable-in-messages
-tags: localization, messages, variable, custom
-ticketid:
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
- Product Version
- 5.14.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-I want to display state variable in the messages from the LocalizationProvider.
-
-## Solution
-Extend the LocalizationProvider by providing an option for executing a ${variable} syntax within the messages.
-
-This is an example showcasing this approach:
-
-{% meta height:320 %}
-{% embed_file localization/use-variable-in-messages/app.jsx preview %}
-{% embed_file localization/use-variable-in-messages/main.jsx %}
-{% embed_file localization/use-variable-in-messages/Chooser.jsx %}
-{% embed_file localization/use-variable-in-messages/Message.jsx %}
-{% embed_file localization/use-variable-in-messages/messages.js %}
-{% embed_file localization/use-variable-in-messages/MyLocalizationProvider.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/map-add-shape-titles.md b/docs/knowledge-base/map-add-shape-titles.md
deleted file mode 100644
index 020c783b..00000000
--- a/docs/knowledge-base/map-add-shape-titles.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Add Titles to Map Shapes
-description: Learn how to add titles to shapes in the KendoReact Map.
-type: how-to
-page_title: Add Titles to Map Shapes - KendoReact Map
-slug: map_add_shape_titles
-tags: telerik, kendoreact, map, shapes, draw, title
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.5.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-
-How can I add some title text for the shapes in the Map?
-
-## Solution
-
-1. Add a [shape layer]({% slug shape_layers_map %}) to the Map configuration.
-1. Attach a handler to the [`shapeCreated` event]({% slug events_map %}) of the Map.
-1. Create a method that will create a label for a given shape.
-1. Inside the method, retrieve the shape center using the [element bounding box]({% slug api_kendo-drawing_element %}#toc-bbox).
-1. Get a reference to the shape layer so you can draw on its surface.
-1. Draw the label by using the [Text element]({% slug api_kendo-drawing_text %}).
-
-The following example demonstrates how to add title text for Map shapes that are loaded from GeoJSON.
-
-{% meta height:700 %}
-{% embed_file map/add-shape-titles/app.jsx preview %}
-{% embed_file map/add-shape-titles/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/map-custom-bubble-symbols.md b/docs/knowledge-base/map-custom-bubble-symbols.md
deleted file mode 100644
index 39a5349b..00000000
--- a/docs/knowledge-base/map-custom-bubble-symbols.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Render Custom Symbols for Map Bubble Layers
-description: "Learn how to render custom symbols on a Bubble layer in the KendoReact Map."
-type: how-to
-page_title: Render Custom Symbols for Map Bubble Layers - KendoReact Map
-slug: map_add_shape_titles
-tags: telerik, kendoreact, map, shapes, bubble
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.5.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-
-How can I add some custom symbols to the Bubble layer of the Map?
-
-## Solution
-
-The [Bubble Layer]({% slug bubble_layers_map %}) allows you to define the way symbols are rendered.
-This approach works by defining a symbol function that uses the [Drawing API]({% slug overview_drawing %}) to define the shape. The symbol is typically a Group of shapes.
-
-The following example demonstrates how to render 200-kilometer lines in West-East direction as a symbol.
-
-> The lines get longer the farther you go North, which is due to that fact that the example uses the [Mercator Projection](https://en.wikipedia.org/wiki/Mercator_projection).
-
-{% meta height:700 %}
-{% embed_file map/custom-bubble-symbols/app.tsx preview %}
-{% embed_file map/custom-bubble-symbols/main.tsx %}
-{% embed_file map/custom-bubble-symbols/urban-areas.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/map-link-markers.md b/docs/knowledge-base/map-link-markers.md
deleted file mode 100644
index 809a7f74..00000000
--- a/docs/knowledge-base/map-link-markers.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Link Map Markers to Locations
-description: "Learn how to draw location pointers for markers in the KendoReact Map."
-type: how-to
-page_title: Link Map Markers to Locations - KendoReact Map
-slug: map_link_markers
-tags: telerik, kendoreact, map, markers, draw, link, line
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.5.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-
-How can I draw a straight line between a marker and a location?
-
-## Solution
-
-1. Add [shape and marker layers]({% slug overview_layers_map %}) to the Map configuration.
-1. Attach a handler to the [reset event]({% slug events_map %}) of the Map.
-1. Create a method that will draw a line between a marker and a specified position.
-1. Inside the method, retrieve the from and to coordinates for the line by using the [locationToView method]({% slug api_map_map %}#toc-locationtoview).
-1. Get a reference to the shape layer so you can draw on its surface.
-1. Draw the line by using the [Path element]({% slug api_kendo-drawing_path %}).
-
-The following example demonstrates how to draw a straight line between a marker and a location.
-
-{% meta height:700 %}
-{% embed_file map/link-markers/app.tsx preview %}
-{% embed_file map/link-markers/main.tsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/merge-row-in-the-grid.md b/docs/knowledge-base/merge-row-in-the-grid.md
deleted file mode 100644
index a5a203bb..00000000
--- a/docs/knowledge-base/merge-row-in-the-grid.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Merge Rows in the Grid
-description: An example on how to merge rows in the KendoReact Grid.
-type: how-to
-page_title: Merge Rows in the Grid - KendoReact Grid
-slug: merge-row-in-the-grid
-tags: grid, rows, merge
-ticketid: 1414492
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 3.0.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-How can I merge rows in the KendoReact Data Grid?
-
-## Solution
-
-Use a [`cellRender`]({% slug api_grid_gridprops %}#toc-cellrender) and add `rowSpan` to the cells that need it.
-
-{% meta id:index height:760 %}
-{% embed_file grid/merge-rows/app.jsx preview %}
-{% embed_file grid/merge-rows/main.jsx %}
-{% embed_file shared/shared-products.json %}
-{% endmeta %}
diff --git a/docs/knowledge-base/multiselect-color-tags.md b/docs/knowledge-base/multiselect-color-tags.md
deleted file mode 100644
index 5832c974..00000000
--- a/docs/knowledge-base/multiselect-color-tags.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Change the colors of the selected MultiSelect tags based on a condition
-description: Learn how to set the colors of the selected MultiSelect tags based on a condition
-type: how-to
-page_title: Change the colors of the selected MultiSelect tags based on a condition - KendoReact MultiSelect
-slug: multiselect-color-tags
-tags: multiselect, kendoreact, tags, colors, conditionally
-ticketid: 1611089
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.14.1
-
-
- Product
- Progress® KendoReact
-
-
-
-
-## Description
-
-How to color the selected tags of the MultiSelect based on a condition?
-
-## Solution
-
-This can be achieved by using the [`tagRender`]({% slug api_dropdowns_multiselectprops %}#toc-tagrender) property and setting the background color based on the required condition.
-
-{% meta id:index height:320 %}
-{% embed_file multiselect/multiselect-color-tags/app.jsx preview %}
-{% embed_file multiselect/multiselect-color-tags/main.jsx %}
-{% endmeta %}
diff --git a/docs/knowledge-base/multiselect-disable-items.md b/docs/knowledge-base/multiselect-disable-items.md
deleted file mode 100644
index 12acc34c..00000000
--- a/docs/knowledge-base/multiselect-disable-items.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: Disable list items in the MultiSelect component.
-description: An example on how to disable list items in the KendoReact MultiSelect.
-type: how-to
-page_title: Disable items - KendoReact MultiSelect
-slug: multiselect-disable-items
-tags: disable, list, multiselect
-ticketid: 1620902
-res_type: kb
-category: knowledge-base
----
-
-## Environment
-
-
-
-
- Product Version
- 5.17.0
-
-
- Product
- Progress® KendoReact
-
-
-
-
-
-## Description
-
-I want disable specific items based on a certain condition? For example, I want to disable the items which their text starts with the letter A, disable a specific item based on its whole text value, or disabled an item based on its id value.
-
-## Solution
-
-> This is an alternative solution for the approach used in the [documentation](https://www.telerik.com/kendo-react-ui/components/dropdowns/multiselect/disabled-item/). The following implementation also shows how to keep the Popup open when the disabled item is clicked.
-
-You can achieve this using the `itemRender` property where you can set the CSS styles `pointer-events: none` and `opacity: 0.7` for certain items.
-In addition, when clicking on a disabled item, the click event will happen on the