diff --git a/GraphQLAdaptor/GraphQLServer/build/index.js b/GraphQLAdaptor/GraphQLServer/build/index.js new file mode 100644 index 0000000..b49fda4 --- /dev/null +++ b/GraphQLAdaptor/GraphQLServer/build/index.js @@ -0,0 +1,2132 @@ +module.exports = +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/graphpack/config/index.js": +/*!************************************************!*\ + !*** ./node_modules/graphpack/config/index.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +const cosmiconfig = __webpack_require__(/*! cosmiconfig */ "cosmiconfig"); +const webpack = __webpack_require__(/*! webpack */ "webpack"); +const defaultConfig = __webpack_require__(/*! ./webpack.config */ "./node_modules/graphpack/config/webpack.config.js"); +const explorer = cosmiconfig('graphpack').search(); +const loadServerConfig = async () => { + const result = await explorer; + const userConfig = result ? typeof result.config === 'function' ? result.config(defaultConfig.mode) : result.config : {}; + return { + port: Number(process.env.PORT), + ...userConfig.server + }; +}; +const loadWebpackConfig = async () => { + const result = await explorer; + const userConfig = result ? typeof result.config === 'function' ? result.config(defaultConfig.mode) : result.config : {}; + if (typeof userConfig.webpack === 'function') { + return userConfig.webpack({ + config: defaultConfig, + webpack + }); + } + return { + ...defaultConfig, + ...userConfig.webpack + }; +}; +exports.loadServerConfig = loadServerConfig; +exports.loadWebpackConfig = loadWebpackConfig; + +/***/ }), + +/***/ "./node_modules/graphpack/config/webpack.config.js": +/*!*********************************************************!*\ + !*** ./node_modules/graphpack/config/webpack.config.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +const FriendlyErrorsWebpackPlugin = __webpack_require__(/*! friendly-errors-webpack-plugin */ "friendly-errors-webpack-plugin"); +const fs = __webpack_require__(/*! fs */ "fs"); +const path = __webpack_require__(/*! path */ "path"); +const webpack = __webpack_require__(/*! webpack */ "webpack"); +const nodeExternals = __webpack_require__(/*! webpack-node-externals */ "webpack-node-externals"); +const isDev = "development" !== 'production'; +const isWebpack = typeof __webpack_require__.m === 'object'; +const hasBabelRc = fs.existsSync(path.resolve('babel.config.js')); +if (hasBabelRc && !isWebpack) { + console.info('🐠 Using babel.config.js defined in your app root'); +} +module.exports = { + devtool: 'source-map', + entry: { + // We take care of setting up entry file under lib/index.js + index: ['graphpack'] + }, + // When bundling with Webpack for the backend you usually don't want to bundle + // its node_modules dependencies. This creates an externals function that + // ignores node_modules when bundling in Webpack. + externals: [nodeExternals({ + whitelist: [/^graphpack$/] + })], + mode: isDev ? 'development' : 'production', + module: { + rules: [{ + test: /\.(gql|graphql)/, + use: 'graphql-tag/loader' + }, { + test: /\.(js|ts)$/, + use: [{ + loader: /*require.resolve*/(/*! babel-loader */ "babel-loader"), + options: { + babelrc: true, + cacheDirectory: true, + presets: hasBabelRc ? undefined : [/*require.resolve*/(/*! babel-preset-graphpack */ "babel-preset-graphpack")] + } + }] + }, { + test: /\.mjs$/, + type: 'javascript/auto' + }] + }, + node: { + __filename: true, + __dirname: true + }, + optimization: { + noEmitOnErrors: true + }, + output: { + filename: '[name].js', + libraryTarget: 'commonjs2', + path: path.join(process.cwd(), './build'), + sourceMapFilename: '[name].map' + }, + performance: { + hints: false + }, + plugins: [new webpack.optimize.LimitChunkCountPlugin({ + maxChunks: 1 + }), new webpack.EnvironmentPlugin({ + DEBUG: false, + GRAPHPACK_SRC_DIR: path.resolve(process.cwd(), 'src'), + NODE_ENV: 'development' + }), new FriendlyErrorsWebpackPlugin({ + clearConsole: isDev + })], + resolve: { + extensions: ['.ts', '.js'] + }, + stats: 'minimal', + target: 'node' +}; + +/***/ }), + +/***/ "./node_modules/graphpack/lib/server.js": +/*!**********************************************!*\ + !*** ./node_modules/graphpack/lib/server.js ***! + \**********************************************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var apollo_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! apollo-server */ "apollo-server"); +/* harmony import */ var apollo_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(apollo_server__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var apollo_server_express__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! apollo-server-express */ "apollo-server-express"); +/* harmony import */ var apollo_server_express__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(apollo_server_express__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _srcFiles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./srcFiles */ "./node_modules/graphpack/lib/srcFiles.js"); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ "./node_modules/graphpack/config/index.js"); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_config__WEBPACK_IMPORTED_MODULE_3__); + + + + +if (!(_srcFiles__WEBPACK_IMPORTED_MODULE_2__["resolvers"] && Object.keys(_srcFiles__WEBPACK_IMPORTED_MODULE_2__["resolvers"]).length > 0)) { + throw Error(`Couldn't find any resolvers. Please add resolvers to your src/resolvers.js`); +} +const createServer = config => { + const { + applyMiddleware, + port: serverPort, + ...options + } = config; + const port = Number(process.env.PORT) || serverPort || 4000; + // Pull out fields that are not relevant for the apollo server + + // Use apollo-server-express when middleware detected + if (applyMiddleware && applyMiddleware.app && typeof applyMiddleware.app.listen === 'function') { + const server = new apollo_server_express__WEBPACK_IMPORTED_MODULE_1__["ApolloServer"](options); + server.applyMiddleware(applyMiddleware); + return applyMiddleware.app.listen({ + port + }, () => console.log(`🚀 Server ready at http://localhost:${port}${server.graphqlPath}`)); + } + + // Use apollo-server + const server = new apollo_server__WEBPACK_IMPORTED_MODULE_0__["ApolloServer"](options); + return server.listen({ + port + }).then(({ + url + }) => console.log(`🚀 Server ready at ${url}`)); +}; +const startServer = async () => { + // Load server config from graphpack.config.js + const config = await Object(_config__WEBPACK_IMPORTED_MODULE_3__["loadServerConfig"])(); + createServer({ + ...config, + context: _srcFiles__WEBPACK_IMPORTED_MODULE_2__["context"], + resolvers: _srcFiles__WEBPACK_IMPORTED_MODULE_2__["resolvers"], + typeDefs: _srcFiles__WEBPACK_IMPORTED_MODULE_2__["typeDefs"] + }); +}; +startServer(); + +/***/ }), + +/***/ "./node_modules/graphpack/lib/srcFiles.js": +/*!************************************************!*\ + !*** ./node_modules/graphpack/lib/srcFiles.js ***! + \************************************************/ +/*! exports provided: importFirst, context, resolvers, typeDefs */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "importFirst", function() { return importFirst; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "context", function() { return context; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resolvers", function() { return resolvers; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "typeDefs", function() { return typeDefs; }); +const importFirst = req => req.keys().map(mod => req(mod).default || req(mod))[0]; + +// Optionally import modules +const context = importFirst(__webpack_require__("./src sync recursive ^\\.\\/(context|context\\/index)\\.(js|ts)$")); +const resolvers = importFirst(__webpack_require__("./src sync recursive ^\\.\\/(resolvers|resolvers\\/index)\\.(js|ts)$")); +const typeDefs = importFirst(__webpack_require__("./src sync recursive ^\\.\\/(schema|schema\\/index)\\.(gql|graphql|js|ts)$")); + +/***/ }), + +/***/ "./src sync recursive ^\\.\\/(context|context\\/index)\\.(js|ts)$": +/*!**********************************************************!*\ + !*** ./src sync ^\.\/(context|context\/index)\.(js|ts)$ ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function webpackEmptyContext(req) { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; +} +webpackEmptyContext.keys = function() { return []; }; +webpackEmptyContext.resolve = webpackEmptyContext; +module.exports = webpackEmptyContext; +webpackEmptyContext.id = "./src sync recursive ^\\.\\/(context|context\\/index)\\.(js|ts)$"; + +/***/ }), + +/***/ "./src sync recursive ^\\.\\/(resolvers|resolvers\\/index)\\.(js|ts)$": +/*!**************************************************************!*\ + !*** ./src sync ^\.\/(resolvers|resolvers\/index)\.(js|ts)$ ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var map = { + "./resolvers.js": "./src/resolvers.js" +}; + + +function webpackContext(req) { + var id = webpackContextResolve(req); + return __webpack_require__(id); +} +function webpackContextResolve(req) { + if(!__webpack_require__.o(map, req)) { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; + } + return map[req]; +} +webpackContext.keys = function webpackContextKeys() { + return Object.keys(map); +}; +webpackContext.resolve = webpackContextResolve; +module.exports = webpackContext; +webpackContext.id = "./src sync recursive ^\\.\\/(resolvers|resolvers\\/index)\\.(js|ts)$"; + +/***/ }), + +/***/ "./src sync recursive ^\\.\\/(schema|schema\\/index)\\.(gql|graphql|js|ts)$": +/*!********************************************************************!*\ + !*** ./src sync ^\.\/(schema|schema\/index)\.(gql|graphql|js|ts)$ ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var map = { + "./schema.graphql": "./src/schema.graphql" +}; + + +function webpackContext(req) { + var id = webpackContextResolve(req); + return __webpack_require__(id); +} +function webpackContextResolve(req) { + if(!__webpack_require__.o(map, req)) { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; + } + return map[req]; +} +webpackContext.keys = function webpackContextKeys() { + return Object.keys(map); +}; +webpackContext.resolve = webpackContextResolve; +module.exports = webpackContext; +webpackContext.id = "./src sync recursive ^\\.\\/(schema|schema\\/index)\\.(gql|graphql|js|ts)$"; + +/***/ }), + +/***/ "./src/db.js": +/*!*******************!*\ + !*** ./src/db.js ***! + \*******************/ +/*! exports provided: users, OrderData, virtualData, dataSource, employeeData */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "users", function() { return users; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OrderData", function() { return OrderData; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "virtualData", function() { return virtualData; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dataSource", function() { return dataSource; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "employeeData", function() { return employeeData; }); +let users = [{ + id: 1, + name: "John Doe", + email: "john@gmail.com", + age: 22 +}, { + id: 2, + name: "Jane Doe", + email: "jane@gmail.com", + age: 23 +}]; +let OrderData = [{ + OrderID: 10248, + CustomerID: 'VINET', + EmployeeID: 5, + OrderDate: new Date("07 12 1996 02:00:23"), + ShipName: 'Vins et alcools Chevalier', + ShipCity: 'Reims', + ShipAddress: '59 rue de l Abbaye', + ShipRegion: 'CJ', + ShipPostalCode: '51100', + ShipCountry: 'France', + Freight: 32.38, + Verified: !0 +}, { + OrderID: 10249, + CustomerID: 'TOMSP', + EmployeeID: 6, + OrderDate: new Date("07 12 1996 00:03:23"), + ShipName: 'Toms Spezialitäten', + ShipCity: 'Münster', + ShipAddress: 'Luisenstr. 48', + ShipRegion: 'CJ', + ShipPostalCode: '44087', + ShipCountry: 'Germany', + Freight: 11.61, + Verified: !1 +}, { + OrderID: 10250, + CustomerID: 'HANAR', + EmployeeID: 4, + OrderDate: new Date("07 12 1996 00:00:23"), + ShipName: 'Hanari Carnes', + ShipCity: 'Rio de Janeiro', + ShipAddress: 'Rua do Paço, 67', + ShipRegion: 'RJ', + ShipPostalCode: '05454-876', + ShipCountry: 'Brazil', + Freight: 65.83, + Verified: !0 +}, { + OrderID: 10251, + CustomerID: 'VICTE', + EmployeeID: 3, + OrderDate: new Date(8367642e5), + ShipName: 'Victuailles en stock', + ShipCity: 'Lyon', + ShipAddress: '2, rue du Commerce', + ShipRegion: 'CJ', + ShipPostalCode: '69004', + ShipCountry: 'France', + Freight: 41.34, + Verified: !0 +}, { + OrderID: 10252, + CustomerID: 'SUPRD', + EmployeeID: 4, + OrderDate: new Date(8368506e5), + ShipName: 'Suprêmes délices', + ShipCity: 'Charleroi', + ShipAddress: 'Boulevard Tirou, 255', + ShipRegion: 'CJ', + ShipPostalCode: 'B-6000', + ShipCountry: 'Belgium', + Freight: 51.3, + Verified: !0 +}, { + OrderID: 10253, + CustomerID: 'HANAR', + EmployeeID: 3, + OrderDate: new Date(836937e6), + ShipName: 'Hanari Carnes', + ShipCity: 'Rio de Janeiro', + ShipAddress: 'Rua do Paço, 67', + ShipRegion: 'RJ', + ShipPostalCode: '05454-876', + ShipCountry: 'Brazil', + Freight: 58.17, + Verified: !0 +}, { + OrderID: 10254, + CustomerID: 'CHOPS', + EmployeeID: 5, + OrderDate: new Date(8370234e5), + ShipName: 'Chop-suey Chinese', + ShipCity: 'Bern', + ShipAddress: 'Hauptstr. 31', + ShipRegion: 'CJ', + ShipPostalCode: '3012', + ShipCountry: 'Switzerland', + Freight: 22.98, + Verified: !1 +}, { + OrderID: 10255, + CustomerID: 'RICSU', + EmployeeID: 9, + OrderDate: new Date(8371098e5), + ShipName: 'Richter Supermarkt', + ShipCity: 'Genève', + ShipAddress: 'Starenweg 5', + ShipRegion: 'CJ', + ShipPostalCode: '1204', + ShipCountry: 'Switzerland', + Freight: 148.33, + Verified: !0 +}, { + OrderID: 10256, + CustomerID: 'WELLI', + EmployeeID: 3, + OrderDate: new Date(837369e6), + ShipName: 'Wellington Importadora', + ShipCity: 'Resende', + ShipAddress: 'Rua do Mercado, 12', + ShipRegion: 'SP', + ShipPostalCode: '08737-363', + ShipCountry: 'Brazil', + Freight: 13.97, + Verified: !1 +}, { + OrderID: 10257, + CustomerID: 'HILAA', + EmployeeID: 4, + OrderDate: new Date(8374554e5), + ShipName: 'HILARION-Abastos', + ShipCity: 'San Cristóbal', + ShipAddress: 'Carrera 22 con Ave. Carlos Soublette #8-35', + ShipRegion: 'Táchira', + ShipPostalCode: '5022', + ShipCountry: 'Venezuela', + Freight: 81.91, + Verified: !0 +}, { + OrderID: 10258, + CustomerID: 'ERNSH', + EmployeeID: 1, + OrderDate: new Date(8375418e5), + ShipName: 'Ernst Handel', + ShipCity: 'Graz', + ShipAddress: 'Kirchgasse 6', + ShipRegion: 'CJ', + ShipPostalCode: '8010', + ShipCountry: 'Austria', + Freight: 140.51, + Verified: !0 +}, { + OrderID: 10259, + CustomerID: 'CENTC', + EmployeeID: 4, + OrderDate: new Date(8376282e5), + ShipName: 'Centro comercial Moctezuma', + ShipCity: 'México D.F.', + ShipAddress: 'Sierras de Granada 9993', + ShipRegion: 'CJ', + ShipPostalCode: '05022', + ShipCountry: 'Mexico', + Freight: 3.25, + Verified: !1 +}, { + OrderID: 10260, + CustomerID: 'OTTIK', + EmployeeID: 4, + OrderDate: new Date(8377146e5), + ShipName: 'Ottilies Käseladen', + ShipCity: 'Köln', + ShipAddress: 'Mehrheimerstr. 369', + ShipRegion: 'CJ', + ShipPostalCode: '50739', + ShipCountry: 'Germany', + Freight: 55.09, + Verified: !0 +}, { + OrderID: 10261, + CustomerID: 'QUEDE', + EmployeeID: 4, + OrderDate: new Date(8377146e5), + ShipName: 'Que Delícia', + ShipCity: 'Rio de Janeiro', + ShipAddress: 'Rua da Panificadora, 12', + ShipRegion: 'RJ', + ShipPostalCode: '02389-673', + ShipCountry: 'Brazil', + Freight: 3.05, + Verified: !1 +}, { + OrderID: 10262, + CustomerID: 'RATTC', + EmployeeID: 8, + OrderDate: new Date(8379738e5), + ShipName: 'Rattlesnake Canyon Grocery', + ShipCity: 'Albuquerque', + ShipAddress: '2817 Milton Dr.', + ShipRegion: 'NM', + ShipPostalCode: '87110', + ShipCountry: 'USA', + Freight: 48.29, + Verified: !0 +}, { + OrderID: 10263, + CustomerID: 'ERNSH', + EmployeeID: 9, + OrderDate: new Date(8380602e5), + ShipName: 'Ernst Handel', + ShipCity: 'Graz', + ShipAddress: 'Kirchgasse 6', + ShipRegion: null, + ShipPostalCode: '8010', + ShipCountry: 'Austria', + Freight: 146.06, + Verified: !0 +}, { + OrderID: 10264, + CustomerID: 'FOLKO', + EmployeeID: 6, + OrderDate: new Date(8381466e5), + ShipName: 'Folk och fä HB', + ShipCity: 'Bräcke', + ShipAddress: 'Åkergatan 24', + ShipRegion: null, + ShipPostalCode: 'S-844 67', + ShipCountry: 'Sweden', + Freight: 3.67, + Verified: !1 +}, { + OrderID: 10265, + CustomerID: 'BLONP', + EmployeeID: 2, + OrderDate: new Date(838233e6), + ShipName: 'Blondel père et fils', + ShipCity: 'Strasbourg', + ShipAddress: '24, place Kléber', + ShipRegion: null, + ShipPostalCode: '67000', + ShipCountry: 'France', + Freight: 55.28, + Verified: !0 +}, { + OrderID: 10266, + CustomerID: 'WARTH', + EmployeeID: 3, + OrderDate: new Date(8383194e5), + ShipName: 'Wartian Herkku', + ShipCity: 'Oulu', + ShipAddress: 'Torikatu 38', + ShipRegion: null, + ShipPostalCode: '90110', + ShipCountry: 'Finland', + Freight: 25.73, + Verified: !1 +}, { + OrderID: 10267, + CustomerID: 'FRANK', + EmployeeID: 4, + OrderDate: new Date(8385786e5), + ShipName: 'Frankenversand', + ShipCity: 'München', + ShipAddress: 'Berliner Platz 43', + ShipRegion: null, + ShipPostalCode: '80805', + ShipCountry: 'Germany', + Freight: 208.58, + Verified: !0 +}, { + OrderID: 10268, + CustomerID: 'GROSR', + EmployeeID: 8, + OrderDate: new Date(838665e6), + ShipName: 'GROSELLA-Restaurante', + ShipCity: 'Caracas', + ShipAddress: '5ª Ave. Los Palos Grandes', + ShipRegion: 'DF', + ShipPostalCode: '1081', + ShipCountry: 'Venezuela', + Freight: 66.29, + Verified: !0 +}, { + OrderID: 10269, + CustomerID: 'WHITC', + EmployeeID: 5, + OrderDate: new Date(8387514e5), + ShipName: 'White Clover Markets', + ShipCity: 'Austria', + ShipAddress: '1029 - 12th Ave. S.', + ShipRegion: 'WA', + ShipPostalCode: '98124', + ShipCountry: 'USA', + Freight: 4.56, + Verified: !1 +}, { + OrderID: 10270, + CustomerID: 'WARTH', + EmployeeID: 1, + OrderDate: new Date(8388378e5), + ShipName: 'Wartian Herkku', + ShipCity: 'Oulu', + ShipAddress: 'Torikatu 38', + ShipRegion: null, + ShipPostalCode: '90110', + ShipCountry: 'Finland', + Freight: 136.54, + Verified: !0 +}, { + OrderID: 10271, + CustomerID: 'SPLIR', + EmployeeID: 6, + OrderDate: new Date(8388378e5), + ShipName: 'Split Rail Beer & Ale', + ShipCity: 'Lander', + ShipAddress: 'P.O. Box 555', + ShipRegion: 'WY', + ShipPostalCode: '82520', + ShipCountry: 'USA', + Freight: 4.54, + Verified: !1 +}, { + OrderID: 10272, + CustomerID: 'RATTC', + EmployeeID: 6, + OrderDate: new Date(8389242e5), + ShipName: 'Rattlesnake Canyon Grocery', + ShipCity: 'Albuquerque', + ShipAddress: '2817 Milton Dr.', + ShipRegion: 'NM', + ShipPostalCode: '87110', + ShipCountry: 'USA', + Freight: 98.03, + Verified: !0 +}, { + OrderID: 10273, + CustomerID: 'QUICK', + EmployeeID: 3, + OrderDate: new Date(8391834e5), + ShipName: 'QUICK-Stop', + ShipCity: 'Cunewalde', + ShipAddress: 'Taucherstraße 10', + ShipRegion: null, + ShipPostalCode: '01307', + ShipCountry: 'Germany', + Freight: 76.07, + Verified: !0 +}, { + OrderID: 10274, + CustomerID: 'VINET', + EmployeeID: 6, + OrderDate: new Date(8392698e5), + ShipName: 'Vins et alcools Chevalier', + ShipCity: 'Reims', + ShipAddress: '59 rue de l Abbaye', + ShipRegion: null, + ShipPostalCode: '51100', + ShipCountry: 'France', + Freight: 6.01, + Verified: !1 +}, { + OrderID: 10275, + CustomerID: 'MAGAA', + EmployeeID: 1, + OrderDate: new Date(8393562e5), + ShipName: 'Magazzini Alimentari Riuniti', + ShipCity: 'Bergamo', + ShipAddress: 'Via Ludovico il Moro 22', + ShipRegion: null, + ShipPostalCode: '24100', + ShipCountry: 'Italy', + Freight: 26.93, + Verified: !1 +}, { + OrderID: 10276, + CustomerID: 'TORTU', + EmployeeID: 8, + OrderDate: new Date(8394426e5), + ShipName: 'Tortuga Restaurante', + ShipCity: 'México D.F.', + ShipAddress: 'Avda. Azteca 123', + ShipRegion: null, + ShipPostalCode: '05033', + ShipCountry: 'Mexico', + Freight: 13.84, + Verified: !1 +}, { + OrderID: 10277, + CustomerID: 'MORGK', + EmployeeID: 2, + OrderDate: new Date(839529e6), + ShipName: 'Morgenstern Gesundkost', + ShipCity: 'Leipzig', + ShipAddress: 'Heerstr. 22', + ShipRegion: null, + ShipPostalCode: '04179', + ShipCountry: 'Germany', + Freight: 125.77, + Verified: !0 +}, { + OrderID: 10278, + CustomerID: 'BERGS', + EmployeeID: 8, + OrderDate: new Date(8397882e5), + ShipName: 'Berglunds snabbköp', + ShipCity: 'Luleå', + ShipAddress: 'Berguvsvägen 8', + ShipRegion: null, + ShipPostalCode: 'S-958 22', + ShipCountry: 'Sweden', + Freight: 92.69, + Verified: !0 +}, { + OrderID: 10279, + CustomerID: 'LEHMS', + EmployeeID: 8, + OrderDate: new Date(8398746e5), + ShipName: 'Lehmanns Marktstand', + ShipCity: 'Frankfurt a.M.', + ShipAddress: 'Magazinweg 7', + ShipRegion: null, + ShipPostalCode: '60528', + ShipCountry: 'Germany', + Freight: 25.83, + Verified: !1 +}, { + OrderID: 10280, + CustomerID: 'BERGS', + EmployeeID: 2, + OrderDate: new Date(839961e6), + ShipName: 'Berglunds snabbköp', + ShipCity: 'Luleå', + ShipAddress: 'Berguvsvägen 8', + ShipRegion: null, + ShipPostalCode: 'S-958 22', + ShipCountry: 'Sweden', + Freight: 8.98, + Verified: !1 +}, { + OrderID: 10281, + CustomerID: 'ROMEY', + EmployeeID: 4, + OrderDate: new Date(839961e6), + ShipName: 'Romero y tomillo', + ShipCity: 'Madrid', + ShipAddress: 'Gran Vía, 1', + ShipRegion: null, + ShipPostalCode: '28001', + ShipCountry: 'Spain', + Freight: 2.94, + Verified: !1 +}, { + OrderID: 10282, + CustomerID: 'ROMEY', + EmployeeID: 4, + OrderDate: new Date(8400474e5), + ShipName: 'Romero y tomillo', + ShipCity: 'Madrid', + ShipAddress: 'Gran Vía, 1', + ShipRegion: null, + ShipPostalCode: '28001', + ShipCountry: 'Spain', + Freight: 12.69, + Verified: !1 +}, { + OrderID: 10283, + CustomerID: 'LILAS', + EmployeeID: 3, + OrderDate: new Date(8401338e5), + ShipName: 'LILA-Supermercado', + ShipCity: 'Barquisimeto', + ShipAddress: 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', + ShipRegion: 'Lara', + ShipPostalCode: '3508', + ShipCountry: 'Venezuela', + Freight: 84.81, + Verified: !0 +}, { + OrderID: 10284, + CustomerID: 'LEHMS', + EmployeeID: 4, + OrderDate: new Date(840393e6), + ShipName: 'Lehmanns Marktstand', + ShipCity: 'Frankfurt a.M.', + ShipAddress: 'Magazinweg 7', + ShipRegion: null, + ShipPostalCode: '60528', + ShipCountry: 'Germany', + Freight: 76.56, + Verified: !0 +}, { + OrderID: 10285, + CustomerID: 'QUICK', + EmployeeID: 1, + OrderDate: new Date(8404794e5), + ShipName: 'QUICK-Stop', + ShipCity: 'Cunewalde', + ShipAddress: 'Taucherstraße 10', + ShipRegion: null, + ShipPostalCode: '01307', + ShipCountry: 'Germany', + Freight: 76.83, + Verified: !0 +}, { + OrderID: 10286, + CustomerID: 'QUICK', + EmployeeID: 8, + OrderDate: new Date(8405658e5), + ShipName: 'QUICK-Stop', + ShipCity: 'Cunewalde', + ShipAddress: 'Taucherstraße 10', + ShipRegion: null, + ShipPostalCode: '01307', + ShipCountry: 'Germany', + Freight: 229.24, + Verified: !0 +}, { + OrderID: 10287, + CustomerID: 'RICAR', + EmployeeID: 8, + OrderDate: new Date(8406522e5), + ShipName: 'Ricardo Adocicados', + ShipCity: 'Rio de Janeiro', + ShipAddress: 'Av. Copacabana, 267', + ShipRegion: 'RJ', + ShipPostalCode: '02389-890', + ShipCountry: 'Brazil', + Freight: 12.76, + Verified: !1 +}, { + OrderID: 10288, + CustomerID: 'REGGC', + EmployeeID: 4, + OrderDate: new Date(8407386e5), + ShipName: 'Reggiani Caseifici', + ShipCity: 'Reggio Emilia', + ShipAddress: 'Strada Provinciale 124', + ShipRegion: null, + ShipPostalCode: '42100', + ShipCountry: 'Italy', + Freight: 7.45, + Verified: !1 +}, { + OrderID: 10289, + CustomerID: 'BSBEV', + EmployeeID: 7, + OrderDate: new Date(8409978e5), + ShipName: 'Bs Beverages', + ShipCity: 'Brazil', + ShipAddress: 'Fauntleroy Circus', + ShipRegion: null, + ShipPostalCode: 'EC2 5NT', + ShipCountry: 'UK', + Freight: 22.77, + Verified: !1 +}, { + OrderID: 10290, + CustomerID: 'COMMI', + EmployeeID: 8, + OrderDate: new Date(8410842e5), + ShipName: 'Comércio Mineiro', + ShipCity: 'Sao Paulo', + ShipAddress: 'Av. dos Lusíadas, 23', + ShipRegion: 'SP', + ShipPostalCode: '05432-043', + ShipCountry: 'Brazil', + Freight: 79.7, + Verified: !0 +}, { + OrderID: 10291, + CustomerID: 'QUEDE', + EmployeeID: 6, + OrderDate: new Date(8410842e5), + ShipName: 'Que Delícia', + ShipCity: 'Rio de Janeiro', + ShipAddress: 'Rua da Panificadora, 12', + ShipRegion: 'RJ', + ShipPostalCode: '02389-673', + ShipCountry: 'Brazil', + Freight: 6.4, + Verified: !1 +}, { + OrderID: 10292, + CustomerID: 'TRADH', + EmployeeID: 1, + OrderDate: new Date(8411706e5), + ShipName: 'Tradiçao Hipermercados', + ShipCity: 'Sao Paulo', + ShipAddress: 'Av. Inês de Castro, 414', + ShipRegion: 'SP', + ShipPostalCode: '05634-030', + ShipCountry: 'Brazil', + Freight: 1.35, + Verified: !1 +}, { + OrderID: 10293, + CustomerID: 'TORTU', + EmployeeID: 1, + OrderDate: new Date(841257e6), + ShipName: 'Tortuga Restaurante', + ShipCity: 'México D.F.', + ShipAddress: 'Avda. Azteca 123', + ShipRegion: null, + ShipPostalCode: '05033', + ShipCountry: 'Mexico', + Freight: 21.18, + Verified: !1 +}, { + OrderID: 10294, + CustomerID: 'RATTC', + EmployeeID: 4, + OrderDate: new Date(8413434e5), + ShipName: 'Rattlesnake Canyon Grocery', + ShipCity: 'Albuquerque', + ShipAddress: '2817 Milton Dr.', + ShipRegion: 'NM', + ShipPostalCode: '87110', + ShipCountry: 'USA', + Freight: 147.26, + Verified: !0 +}, { + OrderID: 10295, + CustomerID: 'VINET', + EmployeeID: 2, + OrderDate: new Date(8416026e5), + ShipName: 'Vins et alcools Chevalier', + ShipCity: 'Reims', + ShipAddress: '59 rue de l Abbaye', + ShipRegion: null, + ShipPostalCode: '51100', + ShipCountry: 'France', + Freight: 1.15, + Verified: !1 +}, { + OrderID: 10296, + CustomerID: 'LILAS', + EmployeeID: 6, + OrderDate: new Date(841689e6), + ShipName: 'LILA-Supermercado', + ShipCity: 'Barquisimeto', + ShipAddress: 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', + ShipRegion: 'Lara', + ShipPostalCode: '3508', + ShipCountry: 'Venezuela', + Freight: .12, + Verified: !1 +}, { + OrderID: 10297, + CustomerID: 'BLONP', + EmployeeID: 5, + OrderDate: new Date(8417754e5), + ShipName: 'Blondel père et fils', + ShipCity: 'Strasbourg', + ShipAddress: '24, place Kléber', + ShipRegion: null, + ShipPostalCode: '67000', + ShipCountry: 'France', + Freight: 5.74, + Verified: !1 +}, { + OrderID: 10298, + CustomerID: 'HUNGO', + EmployeeID: 6, + OrderDate: new Date(8418618e5), + ShipName: 'Hungry Owl All-Night Grocers', + ShipCity: 'Cork', + ShipAddress: '8 Johnstown Road', + ShipRegion: 'Co. Cork', + ShipPostalCode: null, + ShipCountry: 'Ireland', + Freight: 168.22, + Verified: !0 +}, { + OrderID: 10299, + CustomerID: 'RICAR', + EmployeeID: 4, + OrderDate: new Date(8419482e5), + ShipName: 'Ricardo Adocicados', + ShipCity: 'Rio de Janeiro', + ShipAddress: 'Av. Copacabana, 267', + ShipRegion: 'RJ', + ShipPostalCode: '02389-890', + ShipCountry: 'Brazil', + Freight: 29.76, + Verified: !1 +}, { + OrderID: 10300, + CustomerID: 'MAGAA', + EmployeeID: 2, + OrderDate: new Date(8422074e5), + ShipName: 'Magazzini Alimentari Riuniti', + ShipCity: 'Bergamo', + ShipAddress: 'Via Ludovico il Moro 22', + ShipRegion: null, + ShipPostalCode: '24100', + ShipCountry: 'Italy', + Freight: 17.68, + Verified: !1 +}, { + OrderID: 10301, + CustomerID: 'WANDK', + EmployeeID: 8, + OrderDate: new Date(8422074e5), + ShipName: 'Die Wandernde Kuh', + ShipCity: 'Stuttgart', + ShipAddress: 'Adenauerallee 900', + ShipRegion: null, + ShipPostalCode: '70563', + ShipCountry: 'Germany', + Freight: 45.08, + Verified: !0 +}, { + OrderID: 10302, + CustomerID: 'SUPRD', + EmployeeID: 4, + OrderDate: new Date(8422938e5), + ShipName: 'Suprêmes délices', + ShipCity: 'Charleroi', + ShipAddress: 'Boulevard Tirou, 255', + ShipRegion: null, + ShipPostalCode: 'B-6000', + ShipCountry: 'Belgium', + Freight: 6.27, + Verified: !1 +}, { + OrderID: 10303, + CustomerID: 'GODOS', + EmployeeID: 7, + OrderDate: new Date(8423802e5), + ShipName: 'Godos Cocina Típica', + ShipCity: 'Sevilla', + ShipAddress: 'C/ Romero, 33', + ShipRegion: null, + ShipPostalCode: '41101', + ShipCountry: 'Spain', + Freight: 107.83, + Verified: !0 +}, { + OrderID: 10304, + CustomerID: 'TORTU', + EmployeeID: 1, + OrderDate: new Date(8424666e5), + ShipName: 'Tortuga Restaurante', + ShipCity: 'México D.F.', + ShipAddress: 'Avda. Azteca 123', + ShipRegion: null, + ShipPostalCode: '05033', + ShipCountry: 'Mexico', + Freight: 63.79, + Verified: !0 +}, { + OrderID: 10305, + CustomerID: 'OLDWO', + EmployeeID: 8, + OrderDate: new Date(842553e6), + ShipName: 'Old World Delicatessen', + ShipCity: 'Anchorage', + ShipAddress: '2743 Bering St.', + ShipRegion: 'AK', + ShipPostalCode: '99508', + ShipCountry: 'USA', + Freight: 257.62, + Verified: !0 +}, { + OrderID: 10306, + CustomerID: 'ROMEY', + EmployeeID: 1, + OrderDate: new Date(8428122e5), + ShipName: 'Romero y tomillo', + ShipCity: 'Madrid', + ShipAddress: 'Gran Vía, 1', + ShipRegion: null, + ShipPostalCode: '28001', + ShipCountry: 'Spain', + Freight: 7.56, + Verified: !1 +}, { + OrderID: 10307, + CustomerID: 'LONEP', + EmployeeID: 2, + OrderDate: new Date(8428986e5), + ShipName: 'Lonesome Pine Restaurant', + ShipCity: 'Portland', + ShipAddress: '89 Chiaroscuro Rd.', + ShipRegion: 'OR', + ShipPostalCode: '97219', + ShipCountry: 'USA', + Freight: .56, + Verified: !1 +}, { + OrderID: 10308, + CustomerID: 'ANATR', + EmployeeID: 7, + OrderDate: new Date(842985e6), + ShipName: 'Ana Trujillo Emparedados y helados', + ShipCity: 'México D.F.', + ShipAddress: 'Avda. de la Constitución 2222', + ShipRegion: null, + ShipPostalCode: '05021', + ShipCountry: 'Mexico', + Freight: 1.61, + Verified: !1 +}, { + OrderID: 10309, + CustomerID: 'HUNGO', + EmployeeID: 3, + OrderDate: new Date(8430714e5), + ShipName: 'Hungry Owl All-Night Grocers', + ShipCity: 'Cork', + ShipAddress: '8 Johnstown Road', + ShipRegion: 'Co. Cork', + ShipPostalCode: null, + ShipCountry: 'Ireland', + Freight: 47.3, + Verified: !0 +}, { + OrderID: 10310, + CustomerID: 'THEBI', + EmployeeID: 8, + OrderDate: new Date(8431578e5), + ShipName: 'The Big Cheese', + ShipCity: 'Portland', + ShipAddress: '89 Jefferson Way Suite 2', + ShipRegion: 'OR', + ShipPostalCode: '97201', + ShipCountry: 'USA', + Freight: 17.52, + Verified: !1 +}, { + OrderID: 10311, + CustomerID: 'DUMON', + EmployeeID: 1, + OrderDate: new Date(8431578e5), + ShipName: 'Du monde entier', + ShipCity: 'Nantes', + ShipAddress: '67, rue des Cinquante Otages', + ShipRegion: null, + ShipPostalCode: '44000', + ShipCountry: 'France', + Freight: 24.69, + Verified: !1 +}, { + OrderID: 10312, + CustomerID: 'WANDK', + EmployeeID: 2, + OrderDate: new Date(843417e6), + ShipName: 'Die Wandernde Kuh', + ShipCity: 'Stuttgart', + ShipAddress: 'Adenauerallee 900', + ShipRegion: null, + ShipPostalCode: '70563', + ShipCountry: 'Germany', + Freight: 40.26, + Verified: !0 +}, { + OrderID: 10313, + CustomerID: 'QUICK', + EmployeeID: 2, + OrderDate: new Date(8435034e5), + ShipName: 'QUICK-Stop', + ShipCity: 'Cunewalde', + ShipAddress: 'Taucherstraße 10', + ShipRegion: null, + ShipPostalCode: '01307', + ShipCountry: 'Germany', + Freight: 1.96, + Verified: !1 +}, { + OrderID: 10314, + CustomerID: 'RATTC', + EmployeeID: 1, + OrderDate: new Date(8435898e5), + ShipName: 'Rattlesnake Canyon Grocery', + ShipCity: 'Albuquerque', + ShipAddress: '2817 Milton Dr.', + ShipRegion: 'NM', + ShipPostalCode: '87110', + ShipCountry: 'USA', + Freight: 74.16, + Verified: !0 +}, { + OrderID: 10315, + CustomerID: 'ISLAT', + EmployeeID: 4, + OrderDate: new Date(8436762e5), + ShipName: 'Island Trading', + ShipCity: 'Cowes', + ShipAddress: 'Garden House Crowther Way', + ShipRegion: 'Isle of Wight', + ShipPostalCode: 'PO31 7PJ', + ShipCountry: 'UK', + Freight: 41.76, + Verified: !0 +}, { + OrderID: 10316, + CustomerID: 'RATTC', + EmployeeID: 1, + OrderDate: new Date(8437626e5), + ShipName: 'Rattlesnake Canyon Grocery', + ShipCity: 'Albuquerque', + ShipAddress: '2817 Milton Dr.', + ShipRegion: 'NM', + ShipPostalCode: '87110', + ShipCountry: 'USA', + Freight: 150.15, + Verified: !0 +}, { + OrderID: 10317, + CustomerID: 'LONEP', + EmployeeID: 6, + OrderDate: new Date(8440218e5), + ShipName: 'Lonesome Pine Restaurant', + ShipCity: 'Portland', + ShipAddress: '89 Chiaroscuro Rd.', + ShipRegion: 'OR', + ShipPostalCode: '97219', + ShipCountry: 'USA', + Freight: 12.69, + Verified: !1 +}, { + OrderID: 10318, + CustomerID: 'ISLAT', + EmployeeID: 8, + OrderDate: new Date(8441082e5), + ShipName: 'Island Trading', + ShipCity: 'Cowes', + ShipAddress: 'Garden House Crowther Way', + ShipRegion: 'Isle of Wight', + ShipPostalCode: 'PO31 7PJ', + ShipCountry: 'UK', + Freight: 4.73, + Verified: !1 +}]; +let virtualData = []; +function dataSource() { + let names = ['VINET', 'TOMSP', 'HANAR', 'VICTE', 'SUPRD', 'HANAR', 'CHOPS', 'RICSU', 'WELLI', 'HILAA', 'ERNSH', 'CENTC', 'OTTIK', 'QUEDE', 'RATTC', 'ERNSH', 'FOLKO', 'BLONP', 'WARTH', 'FRANK', 'GROSR', 'WHITC', 'WARTH', 'SPLIR', 'RATTC', 'QUICK', 'VINET', 'MAGAA', 'TORTU', 'MORGK', 'BERGS', 'LEHMS', 'BERGS', 'ROMEY', 'ROMEY', 'LILAS', 'LEHMS', 'QUICK', 'QUICK', 'RICAR', 'REGGC', 'BSBEV', 'COMMI', 'QUEDE', 'TRADH', 'TORTU', 'RATTC', 'VINET', 'LILAS', 'BLONP', 'HUNGO', 'RICAR', 'MAGAA', 'WANDK', 'SUPRD', 'GODOS', 'TORTU', 'OLDWO', 'ROMEY', 'LONEP', 'ANATR', 'HUNGO', 'THEBI', 'DUMON', 'WANDK', 'QUICK', 'RATTC', 'ISLAT', 'RATTC', 'LONEP', 'ISLAT', 'TORTU', 'WARTH', 'ISLAT', 'PERIC', 'KOENE', 'SAVEA', 'KOENE', 'BOLID', 'FOLKO', 'FURIB', 'SPLIR', 'LILAS', 'BONAP', 'MEREP', 'WARTH', 'VICTE', 'HUNGO', 'PRINI', 'FRANK', 'OLDWO', 'MEREP', 'BONAP', 'SIMOB', 'FRANK', 'LEHMS', 'WHITC', 'QUICK', 'RATTC', 'FAMIA']; + const sport = ['Cricket', 'Football', 'Tennis', 'Golf', 'Chess', 'Dodgeball', 'Racket', 'Archery', 'Climbing', 'Hunting', 'Carrom', 'Tag', 'Novuss', 'Subbuteo', 'Baseball', 'Madden NFL', 'Shuffleboard', 'Badminton', 'Hockey', 'Volleyball', 'Table Tennis', 'Golf', 'Cycling', 'Running', 'Walking', 'Wireball', 'Town ball', 'Tee ball', 'Stool ball', 'Stick ball']; + const country = ['India', 'Australia', 'Ballesteros', 'Belgium', 'Brazil', 'England', 'Ethiopia', 'Finland', 'France', 'Germany', 'Britain', 'Argentina', 'Jamaica', 'Kenya', 'Morocco', 'Ireland', 'Norway', 'Philippines', 'Portugal', 'Romania', 'Russia', 'Scotland', 'Scottish', 'Serbia', 'Spain', 'Sweden', 'Switzerland', 'Netherlands', 'UK', 'Ukraine', 'US', 'Wales', 'West Indies', 'China', 'Hong Kong', 'Italy', 'Philippines', 'Turkey', 'Botswana', 'Sri Lanka', 'Algeria', 'Bangladesh', 'Egypt', 'Malaysia']; + for (let i = 0; i < 100000; i++) { + virtualData.push({ + 'SNo': i + 1, + 'FIELD1': names[Math.floor(Math.random() * names.length)], + 'FIELD2': 1967 + i % 10, + 'FIELD3': sport[Math.floor(Math.random() * sport.length)], + 'FIELD4': country[Math.floor(Math.random() * country.length)], + 'FIELD5': Math.floor(Math.random() * 2000), + 'FIELD6': Math.floor(Math.random() * 1000), + 'FIELD7': Math.floor(Math.random() * 100), + 'FIELD8': Math.floor(Math.random() * 10), + 'FIELD9': Math.floor(Math.random() * 10), + 'FIELD10': Math.floor(Math.random() * 100), + 'FIELD11': Math.floor(Math.random() * 100), + 'FIELD12': Math.floor(Math.random() * 1000), + 'FIELD13': Math.floor(Math.random() * 10), + 'FIELD14': Math.floor(Math.random() * 10), + 'FIELD15': Math.floor(Math.random() * 1000), + 'FIELD16': Math.floor(Math.random() * 200), + 'FIELD17': Math.floor(Math.random() * 300), + 'FIELD18': Math.floor(Math.random() * 400), + 'FIELD19': Math.floor(Math.random() * 500), + 'FIELD20': Math.floor(Math.random() * 700), + 'FIELD21': Math.floor(Math.random() * 800), + 'FIELD22': Math.floor(Math.random() * 1000), + 'FIELD23': Math.floor(Math.random() * 2000), + 'FIELD24': Math.floor(Math.random() * 150), + 'FIELD25': Math.floor(Math.random() * 1000), + 'FIELD26': Math.floor(Math.random() * 100), + 'FIELD27': Math.floor(Math.random() * 400), + 'FIELD28': Math.floor(Math.random() * 600), + 'FIELD29': Math.floor(Math.random() * 500), + 'FIELD30': Math.floor(Math.random() * 300) + }); + } +} +let employeeData = [{ + 'EmployeeID': 1, + 'Name': { + 'LastName': 'abc' + }, + 'FirstName': 'Nancy', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-664743600000), + 'HireDate': new Date(704692800000), + 'Address': '507 - 20th Ave. E.\r\nApt. 2A', + 'City': 'Austria', + 'Region': 'WA', + 'PostalCode': '98122', + 'Country': 'USA', + 'HomePhone': '(206) 555-9857', + 'Extension': '5467', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Education includes a BA in psychology from Colorado State University in 1970. She also completed\ + \'The Art of the Cold Call.\' Nancy is a member of Toastmasters International.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, { + 'EmployeeID': 2, + 'Name': { + 'LastName': 'cde' + }, + 'FirstName': 'Andrew', + 'Title': 'Vice President, Sales', + 'TitleOfCourtesy': 'Dr.', + 'BirthDate': new Date(-563828400000), + 'HireDate': new Date(713764800000), + 'Address': '908 W. Capital Way', + 'City': 'Germany', + 'Region': 'WA', + 'PostalCode': '98401', + 'Country': 'USA', + 'HomePhone': '(206) 555-9482', + 'Extension': '3457', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of \ + Dallas in 1981. He is fluent in French and Italian and reads German. He joined the company as a sales representative, \ + was promoted to sales manager in January 1992 and to vice president of sales in March 1993. Andrew is a member of the \ + Sales Management Roundtable, the Austria Chamber of Commerce, and the Pacific Rim Importers Association.', + 'ReportsTo': 0, + 'PhotoPath': 'http://accweb/emmployees/fuller.bmp' +}, { + 'EmployeeID': 3, + 'Name': { + 'LastName': 'wqe' + }, + 'FirstName': 'Janet', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-200088000000), + 'HireDate': new Date(702104400000), + 'Address': '722 Moss Bay Blvd.', + 'City': 'France', + 'Region': 'WA', + 'PostalCode': '98033', + 'Country': 'USA', + 'HomePhone': '(206) 555-3412', + 'Extension': '3355', + 'Photo': { + 'Length': 21722 + }, + 'Notes': 'Janet has a BS degree in chemistry from Boston College (1984). \ + She has also completed a certificate program in food retailing management.\ + Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/leverling.bmp' +}, { + 'EmployeeID': 4, + 'Name': { + 'LastName': 'yte' + }, + 'FirstName': 'Margaret', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Mrs.', + 'BirthDate': new Date(-1018814400000), + 'HireDate': new Date(736401600000), + 'Address': '4110 Old Switzerland Rd.', + 'City': 'Switzerland', + 'Region': 'WA', + 'PostalCode': '98052', + 'Country': 'USA', + 'HomePhone': '(206) 555-8122', + 'Extension': '5176', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American \ + Institute of Culinary Arts (1966). She was assigned to the Brazil office temporarily from July through November 1992.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/peacock.bmp' +}, { + 'EmployeeID': 5, + 'Name': { + 'LastName': 'qwe' + }, + 'FirstName': 'Steven', + 'Title': 'Sales Manager', + 'TitleOfCourtesy': 'Mr.', + 'BirthDate': new Date(-468010800000), + 'HireDate': new Date(750830400000), + 'Address': '14 Garrett Hill', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'SW1 8JR', + 'Country': 'UK', + 'HomePhone': '(71) 555-4848', + 'Extension': '3453', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Steven Buchanan graduated from St. Andrews University, Scotland, with a BSC degree in 1976. Upon joining the company as \ + a sales representative in 1992, he spent 6 months in an orientation program at the Austria office and then returned to his permanent \ + post in Brazil. He was promoted to sales manager in March 1993. Mr. Buchanan has completed the courses \'Successful \ + Telemarketing\' and \'International Sales Management.\' He is fluent in French.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/buchanan.bmp' +}, { + 'EmployeeID': 6, + 'Name': { + 'LastName': 'trw' + }, + 'FirstName': 'Michael', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Mr.', + 'BirthDate': new Date(-205185600000), + 'HireDate': new Date(750830400000), + 'Address': 'Coventry House\r\nMiner Rd.', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'EC2 7JR', + 'Country': 'UK', + 'HomePhone': '(71) 555-7773', + 'Extension': '428', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Michael is a graduate of Sussex University (MA, economics, 1983) and the University of California at Los Angeles \ + (MBA, marketing, 1986). He has also taken the courses \'Multi-Cultural Selling\' and \'Time Management for the Sales Professional.\' \ + He is fluent in Japanese and can read and write French, Portuguese, and Spanish.', + 'ReportsTo': 5, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, { + 'EmployeeID': 7, + 'Name': { + 'LastName': 'cbe' + }, + 'FirstName': 'Robert', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Mr.', + 'BirthDate': new Date(-302731200000), + 'HireDate': new Date(757486800000), + 'Address': 'Edgeham Hollow\r\nWinchester Way', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'RG1 9SP', + 'Country': 'UK', + 'HomePhone': '(71) 555-5598', + 'Extension': '465', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the \ + University of Michigan in 1992, the year he joined the company. After completing a course entitled \'Selling in Europe,\' \ + he was transferred to the Brazil office in March 1993.', + 'ReportsTo': 5, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, { + 'EmployeeID': 8, + 'Name': { + 'LastName': 'dbc' + }, + 'FirstName': 'Laura', + 'Title': 'Inside Sales Coordinator', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-377982000000), + 'HireDate': new Date(762843600000), + 'Address': '4726 - 11th Ave. N.E.', + 'City': 'Austria', + 'Region': 'WA', + 'PostalCode': '98105', + 'Country': 'USA', + 'HomePhone': '(206) 555-1189', + 'Extension': '2344', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Laura received a BA in psychology from the University of Washington. She has also completed a course in business \ + French. She reads and writes French.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, { + 'EmployeeID': 9, + 'Name': { + 'LastName': 'xyz' + }, + 'FirstName': 'Anne', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-123966000000), + 'HireDate': new Date(784875600000), + 'Address': '7 Houndstooth Rd.', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'WG2 7LT', + 'Country': 'UK', + 'HomePhone': '(71) 555-4444', + 'Extension': '452', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Anne has a BA degree in English from St. Lawrence College. She is fluent in French and German.', + 'ReportsTo': 5, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, { + 'EmployeeID': 10, + 'Name': { + 'LastName': 'abc' + }, + 'FirstName': 'Nancy', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-664743600000), + 'HireDate': new Date(704692800000), + 'Address': '507 - 20th Ave. E.\r\nApt. 2A', + 'City': 'Austria', + 'Region': 'WA', + 'PostalCode': '98122', + 'Country': 'USA', + 'HomePhone': '(206) 555-9857', + 'Extension': '5467', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Education includes a BA in psychology from Colorado State University in 1970. She also completed\ + \'The Art of the Cold Call.\' Nancy is a member of Toastmasters International.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, { + 'EmployeeID': 11, + 'Name': { + 'LastName': 'cde' + }, + 'FirstName': 'Andrew', + 'Title': 'Vice President, Sales', + 'TitleOfCourtesy': 'Dr.', + 'BirthDate': new Date(-563828400000), + 'HireDate': new Date(713764800000), + 'Address': '908 W. Capital Way', + 'City': 'Germany', + 'Region': 'WA', + 'PostalCode': '98401', + 'Country': 'USA', + 'HomePhone': '(206) 555-9482', + 'Extension': '3457', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of \ + Dallas in 1981. He is fluent in French and Italian and reads German. He joined the company as a sales representative, \ + was promoted to sales manager in January 1992 and to vice president of sales in March 1993. Andrew is a member of the \ + Sales Management Roundtable, the Austria Chamber of Commerce, and the Pacific Rim Importers Association.', + 'ReportsTo': 0, + 'PhotoPath': 'http://accweb/emmployees/fuller.bmp' +}, { + 'EmployeeID': 12, + 'Name': { + 'LastName': 'wqe' + }, + 'FirstName': 'Janet', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-200088000000), + 'HireDate': new Date(702104400000), + 'Address': '722 Moss Bay Blvd.', + 'City': 'France', + 'Region': 'WA', + 'PostalCode': '98033', + 'Country': 'USA', + 'HomePhone': '(206) 555-3412', + 'Extension': '3355', + 'Photo': { + 'Length': 21722 + }, + 'Notes': 'Janet has a BS degree in chemistry from Boston College (1984). \ + She has also completed a certificate program in food retailing management.\ + Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/leverling.bmp' +}, { + 'EmployeeID': 13, + 'Name': { + 'LastName': 'xyz' + }, + 'FirstName': 'Peacock', + 'Title': 'Sales Manager', + 'TitleOfCourtesy': 'Mrs.', + 'BirthDate': new Date(-1018814400000), + 'HireDate': new Date(736401600000), + 'Address': '4110 Old Switzerland Rd.', + 'City': 'Germany', + 'Region': 'WA', + 'PostalCode': '98052', + 'Country': 'USA', + 'HomePhone': '(206) 555-8122', + 'Extension': '5176', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American \ + Institute of Culinary Arts (1966). She was assigned to the Brazil office temporarily from July through November 1992.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/peacock.bmp' +}, { + 'EmployeeID': 14, + 'Name': { + 'LastName': 'yte' + }, + 'FirstName': 'Margaret', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Mrs.', + 'BirthDate': new Date(-1018814400000), + 'HireDate': new Date(736401600000), + 'Address': '4110 Old Switzerland Rd.', + 'City': 'Switzerland', + 'Region': 'WA', + 'PostalCode': '98052', + 'Country': 'USA', + 'HomePhone': '(206) 555-8122', + 'Extension': '5176', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American \ + Institute of Culinary Arts (1966). She was assigned to the Brazil office temporarily from July through November 1992.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/peacock.bmp' +}, { + 'EmployeeID': 15, + 'Name': { + 'LastName': 'qwe' + }, + 'FirstName': 'Steven', + 'Title': 'Sales Manager', + 'TitleOfCourtesy': 'Mr.', + 'BirthDate': new Date(-468010800000), + 'HireDate': new Date(750830400000), + 'Address': '14 Garrett Hill', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'SW1 8JR', + 'Country': 'UK', + 'HomePhone': '(71) 555-4848', + 'Extension': '3453', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Steven Buchanan graduated from St. Andrews University, Scotland, with a BSC degree in 1976. Upon joining the company as \ + a sales representative in 1992, he spent 6 months in an orientation program at the Austria office and then returned to his permanent \ + post in Brazil. He was promoted to sales manager in March 1993. Mr. Buchanan has completed the courses \'Successful \ + Telemarketing\' and \'International Sales Management.\' He is fluent in French.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/buchanan.bmp' +}, { + 'EmployeeID': 16, + 'Name': { + 'LastName': 'trw' + }, + 'FirstName': 'Michael', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Mr.', + 'BirthDate': new Date(-205185600000), + 'HireDate': new Date(750830400000), + 'Address': 'Coventry House\r\nMiner Rd.', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'EC2 7JR', + 'Country': 'UK', + 'HomePhone': '(71) 555-7773', + 'Extension': '428', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Michael is a graduate of Sussex University (MA, economics, 1983) and the University of California at Los Angeles \ + (MBA, marketing, 1986). He has also taken the courses \'Multi-Cultural Selling\' and \'Time Management for the Sales Professional.\' \ + He is fluent in Japanese and can read and write French, Portuguese, and Spanish.', + 'ReportsTo': 5, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, { + 'EmployeeID': 17, + 'Name': { + 'LastName': 'cbe' + }, + 'FirstName': 'Robert', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Mr.', + 'BirthDate': new Date(-302731200000), + 'HireDate': new Date(757486800000), + 'Address': 'Edgeham Hollow\r\nWinchester Way', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'RG1 9SP', + 'Country': 'UK', + 'HomePhone': '(71) 555-5598', + 'Extension': '465', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the \ + University of Michigan in 1992, the year he joined the company. After completing a course entitled \'Selling in Europe,\' \ + he was transferred to the Brazil office in March 1993.', + 'ReportsTo': 5, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, { + 'EmployeeID': 18, + 'Name': { + 'LastName': 'dbc' + }, + 'FirstName': 'Laura', + 'Title': 'Inside Sales Coordinator', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-377982000000), + 'HireDate': new Date(762843600000), + 'Address': '4726 - 11th Ave. N.E.', + 'City': 'Austria', + 'Region': 'WA', + 'PostalCode': '98105', + 'Country': 'USA', + 'HomePhone': '(206) 555-1189', + 'Extension': '2344', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Laura received a BA in psychology from the University of Washington. She has also completed a course in business \ + French. She reads and writes French.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, { + 'EmployeeID': 19, + 'Name': { + 'LastName': 'xyz' + }, + 'FirstName': 'Anne', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-123966000000), + 'HireDate': new Date(784875600000), + 'Address': '7 Houndstooth Rd.', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'WG2 7LT', + 'Country': 'UK', + 'HomePhone': '(71) 555-4444', + 'Extension': '452', + 'Photo': { + 'Length': 21626 + }, + 'Notes': 'Anne has a BA degree in English from St. Lawrence College. She is fluent in French and German.', + 'ReportsTo': 5, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}]; + +/***/ }), + +/***/ "./src/resolvers.js": +/*!**************************!*\ + !*** ./src/resolvers.js ***! + \**************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _db__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./db */ "./src/db.js"); +/* harmony import */ var _syncfusion_ej2_data__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @syncfusion/ej2-data */ "@syncfusion/ej2-data"); +/* harmony import */ var _syncfusion_ej2_data__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_syncfusion_ej2_data__WEBPACK_IMPORTED_MODULE_1__); + + +_syncfusion_ej2_data__WEBPACK_IMPORTED_MODULE_1__["DataUtil"].serverTimezoneOffset = 0; +const resolvers = { + Query: { + getOrders: (parent, { + datamanager + }, context, info) => { + console.log(datamanager); + let orders = [..._db__WEBPACK_IMPORTED_MODULE_0__["OrderData"]]; + const query = new _syncfusion_ej2_data__WEBPACK_IMPORTED_MODULE_1__["Query"](); + const performFiltering = filterString => { + const filter = JSON.parse(filterString); + // Iterating over each predicate + filter[0].predicates.forEach(predicate => { + const field = predicate.field; + const operator = predicate.operator; + const value = predicate.value; + query.where(field, operator, value); + }); + }; + const performSearching = searchParam => { + const { + fields, + key + } = JSON.parse(searchParam)[0]; + query.search(key, fields); + }; + const performSorting = sorted => { + for (let i = 0; i < sorted.length; i++) { + const { + name, + direction + } = sorted[i]; + query.sortBy(name, direction); + } + }; + + // Perform filtering + if (datamanager.where) { + performFiltering(datamanager.where); + } + + // Perform Searching + if (datamanager.search) { + performSearching(datamanager.search); + } + + // Perform sorting + if (datamanager.sorted) { + performSorting(datamanager.sorted); + } + orders = new _syncfusion_ej2_data__WEBPACK_IMPORTED_MODULE_1__["DataManager"](orders).executeLocal(query); + var count = orders.length; + + // Perform paging + if (datamanager.skip && datamanager.take) { + const pageSkip = datamanager.skip / datamanager.take + 1; + const pageTake = datamanager.take; + query.page(pageSkip, pageTake); + } else if (datamanager.skip === 0 && datamanager.take) { + query.page(1, datamanager.take); + } + const currentResult = new _syncfusion_ej2_data__WEBPACK_IMPORTED_MODULE_1__["DataManager"](orders).executeLocal(query); + return { + result: currentResult, + count: count + }; // Return result and count separately + } + }, + Mutation: { + createOrder: (parent, { + value + }, context, info) => { + const newOrder = value; + _db__WEBPACK_IMPORTED_MODULE_0__["OrderData"].push(newOrder); + return newOrder; + }, + updateOrder: (parent, { + key, + keyColumn, + value + }, context, info) => { + let updatedOrder = _db__WEBPACK_IMPORTED_MODULE_0__["OrderData"].find(order => order.OrderID === parseInt(key)); + updatedOrder.CustomerID = value.CustomerID; + updatedOrder.EmployeeID = value.EmployeeID; + updatedOrder.Freight = value.Freight; + updatedOrder.ShipCity = value.ShipCity; + updatedOrder.ShipCountry = value.ShipCountry; + return updatedOrder; // Make sure to return the updated order. + }, + deleteOrder: (parent, { + key, + keyColumn, + value + }, context, info) => { + const orderIndex = _db__WEBPACK_IMPORTED_MODULE_0__["OrderData"].findIndex(order => order.OrderID === parseInt(key)); + if (orderIndex === -1) throw new Error("Order not found." + value); + const deletedOrders = _db__WEBPACK_IMPORTED_MODULE_0__["OrderData"].splice(orderIndex, 1); + return deletedOrders[0]; + } + } +}; +/* harmony default export */ __webpack_exports__["default"] = (resolvers); + +/***/ }), + +/***/ "./src/schema.graphql": +/*!****************************!*\ + !*** ./src/schema.graphql ***! + \****************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + + + var doc = {"kind":"Document","definitions":[{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"Sort"},"directives":[],"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"name"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"direction"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"Aggregate"},"directives":[],"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"field"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"type"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"DataManager"},"directives":[],"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"skip"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"take"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sorted"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Sort"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"group"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"table"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"select"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"where"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"search"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"requiresCounts"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"aggregates"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Aggregate"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"OrderInput"},"directives":[],"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"OrderID"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"CustomerID"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"EmployeeID"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"ShipCity"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"ShipCountry"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]}]},{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"Order"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"OrderID"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"CustomerID"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"EmployeeID"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"ShipCity"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"ShipCountry"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]}]},{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"ReturnType"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"result"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Order"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"count"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"aggregates"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]}]},{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"Query"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"getOrders"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"datamanager"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DataManager"}},"directives":[]}],"type":{"kind":"NamedType","name":{"kind":"Name","value":"ReturnType"}},"directives":[]}]},{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"Mutation"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"createOrder"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"value"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"OrderInput"}},"directives":[]}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Order"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateOrder"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"key"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"keyColumn"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"value"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"OrderInput"}},"directives":[]}],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Order"}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"deleteOrder"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"key"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"keyColumn"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"value"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"OrderInput"}},"directives":[]}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Order"}}},"directives":[]}]}],"loc":{"start":0,"end":1212}}; + doc.loc.source = {"body":"#Grid Sort direction\r\n\r\ninput Sort {\r\n name: String!\r\n direction: String!\r\n} \r\n\r\n#Grid aggregates type\r\n\r\ninput Aggregate {\r\n field: String! \r\n type: String!\r\n}\r\n\r\n#Syncfusion DataManager query params\r\n\r\ninput DataManager {\r\n skip: Int\r\n take: Int\r\n sorted: [Sort]\r\n group: [String]\r\n table: String\r\n select: [String]\r\n where: String\r\n search: String\r\n requiresCounts: Boolean,\r\n aggregates: [Aggregate],\r\n params: String\r\n}\r\n\r\n# Grid field names\r\ninput OrderInput {\r\n OrderID: Int!\r\n CustomerID: String\r\n EmployeeID: Int\r\n ShipCity: String\r\n ShipCountry: String\r\n}\r\n\r\ntype Order {\r\n OrderID: Int!\r\n CustomerID: String\r\n EmployeeID: Int\r\n ShipCity: String\r\n ShipCountry: String\r\n}\r\n\r\n# need to return type as 'result (i.e, current pager data)' and count (i.e., total number of records in your database)\r\ntype ReturnType {\r\n result: [Order]\r\n count: Int\r\n aggregates: String\r\n}\r\n\r\ntype Query {\r\n getOrders(datamanager: DataManager): ReturnType \r\n}\r\ntype Mutation {\r\n\r\n createOrder(value: OrderInput): Order!\r\n updateOrder(key: Int!, keyColumn: String, value: OrderInput): Order\r\n deleteOrder(key: Int!, keyColumn: String, value: OrderInput): Order!\r\n}","name":"GraphQL request","locationOffset":{"line":1,"column":1}}; + + + var names = {}; + function unique(defs) { + return defs.filter( + function(def) { + if (def.kind !== 'FragmentDefinition') return true; + var name = def.name.value + if (names[name]) { + return false; + } else { + names[name] = true; + return true; + } + } + ) + } + + + module.exports = doc; + + + +/***/ }), + +/***/ 0: +/*!***********************!*\ + !*** multi graphpack ***! + \***********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(/*! graphpack */"./node_modules/graphpack/lib/server.js"); + + +/***/ }), + +/***/ "@syncfusion/ej2-data": +/*!***************************************!*\ + !*** external "@syncfusion/ej2-data" ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("@syncfusion/ej2-data"); + +/***/ }), + +/***/ "apollo-server": +/*!********************************!*\ + !*** external "apollo-server" ***! + \********************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("apollo-server"); + +/***/ }), + +/***/ "apollo-server-express": +/*!****************************************!*\ + !*** external "apollo-server-express" ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("apollo-server-express"); + +/***/ }), + +/***/ "babel-loader": +/*!*******************************!*\ + !*** external "babel-loader" ***! + \*******************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("babel-loader"); + +/***/ }), + +/***/ "babel-preset-graphpack": +/*!*****************************************!*\ + !*** external "babel-preset-graphpack" ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("babel-preset-graphpack"); + +/***/ }), + +/***/ "cosmiconfig": +/*!******************************!*\ + !*** external "cosmiconfig" ***! + \******************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("cosmiconfig"); + +/***/ }), + +/***/ "friendly-errors-webpack-plugin": +/*!*************************************************!*\ + !*** external "friendly-errors-webpack-plugin" ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("friendly-errors-webpack-plugin"); + +/***/ }), + +/***/ "fs": +/*!*********************!*\ + !*** external "fs" ***! + \*********************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("fs"); + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("path"); + +/***/ }), + +/***/ "webpack": +/*!**************************!*\ + !*** external "webpack" ***! + \**************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("webpack"); + +/***/ }), + +/***/ "webpack-node-externals": +/*!*****************************************!*\ + !*** external "webpack-node-externals" ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = require("webpack-node-externals"); + +/***/ }) + +/******/ }); +//# sourceMappingURL=index.map \ No newline at end of file diff --git a/GraphQLAdaptor/GraphQLServer/build/index.map b/GraphQLAdaptor/GraphQLServer/build/index.map new file mode 100644 index 0000000..fce5827 --- /dev/null +++ b/GraphQLAdaptor/GraphQLServer/build/index.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/graphpack/config/index.js","webpack:///./node_modules/graphpack/config/webpack.config.js","webpack:///./node_modules/graphpack/lib/server.js","webpack:///./node_modules/graphpack/lib/srcFiles.js","webpack:///./src sync ^\\.\\/(context|context\\/index)\\.(js|ts)$","webpack:///./src sync ^\\.\\/(resolvers|resolvers\\/index)\\.(js|ts)$","webpack:///./src sync ^\\.\\/(schema|schema\\/index)\\.(gql|graphql|js|ts)$","webpack:///./src/db.js","webpack:///./src/resolvers.js","webpack:///./src/schema.graphql","webpack:///external \"@syncfusion/ej2-data\"","webpack:///external \"apollo-server\"","webpack:///external \"apollo-server-express\"","webpack:///external \"babel-loader\"","webpack:///external \"babel-preset-graphpack\"","webpack:///external \"cosmiconfig\"","webpack:///external \"friendly-errors-webpack-plugin\"","webpack:///external \"fs\"","webpack:///external \"path\"","webpack:///external \"webpack\"","webpack:///external \"webpack-node-externals\""],"names":["cosmiconfig","require","webpack","defaultConfig","explorer","search","loadServerConfig","result","userConfig","config","mode","port","Number","process","env","PORT","server","loadWebpackConfig","exports","FriendlyErrorsWebpackPlugin","fs","path","nodeExternals","isDev","isWebpack","__webpack_modules__","hasBabelRc","existsSync","resolve","console","info","module","devtool","entry","index","externals","whitelist","rules","test","use","loader","options","babelrc","cacheDirectory","presets","undefined","type","node","__filename","__dirname","optimization","noEmitOnErrors","output","filename","libraryTarget","join","cwd","sourceMapFilename","performance","hints","plugins","optimize","LimitChunkCountPlugin","maxChunks","EnvironmentPlugin","DEBUG","GRAPHPACK_SRC_DIR","NODE_ENV","clearConsole","extensions","stats","target","resolvers","Object","keys","length","Error","createServer","applyMiddleware","serverPort","app","listen","ApolloExpressServer","log","graphqlPath","ApolloServer","then","url","startServer","context","typeDefs","importFirst","req","map","mod","default","users","id","name","email","age","OrderData","OrderID","CustomerID","EmployeeID","OrderDate","Date","ShipName","ShipCity","ShipAddress","ShipRegion","ShipPostalCode","ShipCountry","Freight","Verified","virtualData","dataSource","names","sport","country","i","push","Math","floor","random","employeeData","DataUtil","serverTimezoneOffset","Query","getOrders","parent","datamanager","orders","query","performFiltering","filterString","filter","JSON","parse","predicates","forEach","predicate","field","operator","value","where","performSearching","searchParam","fields","key","performSorting","sorted","direction","sortBy","DataManager","executeLocal","count","skip","take","pageSkip","pageTake","page","currentResult","Mutation","createOrder","newOrder","updateOrder","keyColumn","updatedOrder","find","order","parseInt","deleteOrder","orderIndex","findIndex","deletedOrders","splice"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","const cosmiconfig = require('cosmiconfig');\nconst webpack = require('webpack');\nconst defaultConfig = require('./webpack.config');\n\nconst explorer = cosmiconfig('graphpack').search();\n\nconst loadServerConfig = async () => {\n const result = await explorer;\n const userConfig = result\n ? typeof result.config === 'function'\n ? result.config(defaultConfig.mode)\n : result.config\n : {};\n\n return { port: Number(process.env.PORT), ...userConfig.server };\n};\n\nconst loadWebpackConfig = async () => {\n const result = await explorer;\n const userConfig = result\n ? typeof result.config === 'function'\n ? result.config(defaultConfig.mode)\n : result.config\n : {};\n\n if (typeof userConfig.webpack === 'function') {\n return userConfig.webpack({ config: defaultConfig, webpack });\n }\n\n return { ...defaultConfig, ...userConfig.webpack };\n};\n\nexports.loadServerConfig = loadServerConfig;\nexports.loadWebpackConfig = loadWebpackConfig;\n","const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin');\nconst fs = require('fs');\nconst path = require('path');\nconst webpack = require('webpack');\nconst nodeExternals = require('webpack-node-externals');\n\nconst isDev = process.env.NODE_ENV !== 'production';\nconst isWebpack = typeof __webpack_modules__ === 'object';\nconst hasBabelRc = fs.existsSync(path.resolve('babel.config.js'));\n\nif (hasBabelRc && !isWebpack) {\n console.info('🐠 Using babel.config.js defined in your app root');\n}\n\nmodule.exports = {\n devtool: 'source-map',\n entry: {\n // We take care of setting up entry file under lib/index.js\n index: ['graphpack'],\n },\n // When bundling with Webpack for the backend you usually don't want to bundle\n // its node_modules dependencies. This creates an externals function that\n // ignores node_modules when bundling in Webpack.\n externals: [nodeExternals({ whitelist: [/^graphpack$/] })],\n mode: isDev ? 'development' : 'production',\n module: {\n rules: [\n {\n test: /\\.(gql|graphql)/,\n use: 'graphql-tag/loader',\n },\n {\n test: /\\.(js|ts)$/,\n use: [\n {\n loader: require.resolve('babel-loader'),\n options: {\n babelrc: true,\n cacheDirectory: true,\n presets: hasBabelRc\n ? undefined\n : [require.resolve('babel-preset-graphpack')],\n },\n },\n ],\n },\n {\n test: /\\.mjs$/,\n type: 'javascript/auto',\n },\n ],\n },\n node: {\n __filename: true,\n __dirname: true,\n },\n optimization: { noEmitOnErrors: true },\n output: {\n filename: '[name].js',\n libraryTarget: 'commonjs2',\n path: path.join(process.cwd(), './build'),\n sourceMapFilename: '[name].map',\n },\n performance: {\n hints: false,\n },\n plugins: [\n new webpack.optimize.LimitChunkCountPlugin({ maxChunks: 1 }),\n new webpack.EnvironmentPlugin({\n DEBUG: false,\n GRAPHPACK_SRC_DIR: path.resolve(process.cwd(), 'src'),\n NODE_ENV: 'development',\n }),\n new FriendlyErrorsWebpackPlugin({ clearConsole: isDev }),\n ],\n resolve: {\n extensions: ['.ts', '.js'],\n },\n stats: 'minimal',\n target: 'node',\n};\n","import { ApolloServer } from 'apollo-server';\nimport { ApolloServer as ApolloExpressServer } from 'apollo-server-express';\nimport { context, resolvers, typeDefs } from './srcFiles';\nimport { loadServerConfig } from '../config';\n\nif (!(resolvers && Object.keys(resolvers).length > 0)) {\n throw Error(\n `Couldn't find any resolvers. Please add resolvers to your src/resolvers.js`,\n );\n}\n\nconst createServer = config => {\n const { applyMiddleware, port: serverPort, ...options } = config;\n const port = Number(process.env.PORT) || serverPort || 4000;\n // Pull out fields that are not relevant for the apollo server\n\n // Use apollo-server-express when middleware detected\n if (\n applyMiddleware &&\n applyMiddleware.app &&\n typeof applyMiddleware.app.listen === 'function'\n ) {\n const server = new ApolloExpressServer(options);\n server.applyMiddleware(applyMiddleware);\n\n return applyMiddleware.app.listen({ port }, () =>\n console.log(\n `🚀 Server ready at http://localhost:${port}${server.graphqlPath}`,\n ),\n );\n }\n\n // Use apollo-server\n const server = new ApolloServer(options);\n\n return server\n .listen({ port })\n .then(({ url }) => console.log(`🚀 Server ready at ${url}`));\n};\n\nconst startServer = async () => {\n // Load server config from graphpack.config.js\n const config = await loadServerConfig();\n\n createServer({ ...config, context, resolvers, typeDefs });\n};\n\nstartServer();\n","export const importFirst = req =>\n req.keys().map(mod => req(mod).default || req(mod))[0];\n\n// Optionally import modules\nexport const context = importFirst(\n require.context(\n process.env.GRAPHPACK_SRC_DIR,\n true,\n /^\\.\\/(context|context\\/index)\\.(js|ts)$/,\n ),\n);\nexport const resolvers = importFirst(\n require.context(\n process.env.GRAPHPACK_SRC_DIR,\n true,\n /^\\.\\/(resolvers|resolvers\\/index)\\.(js|ts)$/,\n ),\n);\nexport const typeDefs = importFirst(\n require.context(\n process.env.GRAPHPACK_SRC_DIR,\n true,\n /^\\.\\/(schema|schema\\/index)\\.(gql|graphql|js|ts)$/,\n ),\n);\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"./src sync recursive ^\\\\.\\\\/(context|context\\\\/index)\\\\.(js|ts)$\";","var map = {\n\t\"./resolvers.js\": \"./src/resolvers.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./src sync recursive ^\\\\.\\\\/(resolvers|resolvers\\\\/index)\\\\.(js|ts)$\";","var map = {\n\t\"./schema.graphql\": \"./src/schema.graphql\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./src sync recursive ^\\\\.\\\\/(schema|schema\\\\/index)\\\\.(gql|graphql|js|ts)$\";","export let users = [\r\n { id: 1, name: \"John Doe\", email: \"john@gmail.com\", age: 22 },\r\n { id: 2, name: \"Jane Doe\", email: \"jane@gmail.com\", age: 23 }\r\n ];\r\n\r\n export let OrderData = [\r\n {\r\n OrderID: 10248, CustomerID: 'VINET', EmployeeID: 5, OrderDate: new Date(\"07 12 1996 02:00:23\"),\r\n ShipName: 'Vins et alcools Chevalier', ShipCity: 'Reims', ShipAddress: '59 rue de l Abbaye',\r\n ShipRegion: 'CJ', ShipPostalCode: '51100', ShipCountry: 'France', Freight: 32.38, Verified: !0\r\n },\r\n {\r\n OrderID: 10249, CustomerID: 'TOMSP', EmployeeID: 6, OrderDate: new Date(\"07 12 1996 00:03:23\"),\r\n ShipName: 'Toms Spezialitäten', ShipCity: 'Münster', ShipAddress: 'Luisenstr. 48',\r\n ShipRegion: 'CJ', ShipPostalCode: '44087', ShipCountry: 'Germany', Freight: 11.61, Verified: !1\r\n },\r\n {\r\n OrderID: 10250, CustomerID: 'HANAR', EmployeeID: 4, OrderDate: new Date(\"07 12 1996 00:00:23\"),\r\n ShipName: 'Hanari Carnes', ShipCity: 'Rio de Janeiro', ShipAddress: 'Rua do Paço, 67',\r\n ShipRegion: 'RJ', ShipPostalCode: '05454-876', ShipCountry: 'Brazil', Freight: 65.83, Verified: !0\r\n },\r\n {\r\n OrderID: 10251, CustomerID: 'VICTE', EmployeeID: 3, OrderDate: new Date(8367642e5),\r\n ShipName: 'Victuailles en stock', ShipCity: 'Lyon', ShipAddress: '2, rue du Commerce',\r\n ShipRegion: 'CJ', ShipPostalCode: '69004', ShipCountry: 'France', Freight: 41.34, Verified: !0\r\n },\r\n {\r\n OrderID: 10252, CustomerID: 'SUPRD', EmployeeID: 4, OrderDate: new Date(8368506e5),\r\n ShipName: 'Suprêmes délices', ShipCity: 'Charleroi', ShipAddress: 'Boulevard Tirou, 255',\r\n ShipRegion: 'CJ', ShipPostalCode: 'B-6000', ShipCountry: 'Belgium', Freight: 51.3, Verified: !0\r\n },\r\n {\r\n OrderID: 10253, CustomerID: 'HANAR', EmployeeID: 3, OrderDate: new Date(836937e6),\r\n ShipName: 'Hanari Carnes', ShipCity: 'Rio de Janeiro', ShipAddress: 'Rua do Paço, 67',\r\n ShipRegion: 'RJ', ShipPostalCode: '05454-876', ShipCountry: 'Brazil', Freight: 58.17, Verified: !0\r\n },\r\n {\r\n OrderID: 10254, CustomerID: 'CHOPS', EmployeeID: 5, OrderDate: new Date(8370234e5),\r\n ShipName: 'Chop-suey Chinese', ShipCity: 'Bern', ShipAddress: 'Hauptstr. 31',\r\n ShipRegion: 'CJ', ShipPostalCode: '3012', ShipCountry: 'Switzerland', Freight: 22.98, Verified: !1\r\n },\r\n {\r\n OrderID: 10255, CustomerID: 'RICSU', EmployeeID: 9, OrderDate: new Date(8371098e5),\r\n ShipName: 'Richter Supermarkt', ShipCity: 'Genève', ShipAddress: 'Starenweg 5',\r\n ShipRegion: 'CJ', ShipPostalCode: '1204', ShipCountry: 'Switzerland', Freight: 148.33, Verified: !0\r\n },\r\n {\r\n OrderID: 10256, CustomerID: 'WELLI', EmployeeID: 3, OrderDate: new Date(837369e6),\r\n ShipName: 'Wellington Importadora', ShipCity: 'Resende', ShipAddress: 'Rua do Mercado, 12',\r\n ShipRegion: 'SP', ShipPostalCode: '08737-363', ShipCountry: 'Brazil', Freight: 13.97, Verified: !1\r\n },\r\n {\r\n OrderID: 10257, CustomerID: 'HILAA', EmployeeID: 4, OrderDate: new Date(8374554e5),\r\n ShipName: 'HILARION-Abastos', ShipCity: 'San Cristóbal', ShipAddress: 'Carrera 22 con Ave. Carlos Soublette #8-35',\r\n ShipRegion: 'Táchira', ShipPostalCode: '5022', ShipCountry: 'Venezuela', Freight: 81.91, Verified: !0\r\n },\r\n {\r\n OrderID: 10258, CustomerID: 'ERNSH', EmployeeID: 1, OrderDate: new Date(8375418e5),\r\n ShipName: 'Ernst Handel', ShipCity: 'Graz', ShipAddress: 'Kirchgasse 6',\r\n ShipRegion: 'CJ', ShipPostalCode: '8010', ShipCountry: 'Austria', Freight: 140.51, Verified: !0\r\n },\r\n {\r\n OrderID: 10259, CustomerID: 'CENTC', EmployeeID: 4, OrderDate: new Date(8376282e5),\r\n ShipName: 'Centro comercial Moctezuma', ShipCity: 'México D.F.', ShipAddress: 'Sierras de Granada 9993',\r\n ShipRegion: 'CJ', ShipPostalCode: '05022', ShipCountry: 'Mexico', Freight: 3.25, Verified: !1\r\n },\r\n {\r\n OrderID: 10260, CustomerID: 'OTTIK', EmployeeID: 4, OrderDate: new Date(8377146e5),\r\n ShipName: 'Ottilies Käseladen', ShipCity: 'Köln', ShipAddress: 'Mehrheimerstr. 369',\r\n ShipRegion: 'CJ', ShipPostalCode: '50739', ShipCountry: 'Germany', Freight: 55.09, Verified: !0\r\n },\r\n {\r\n OrderID: 10261, CustomerID: 'QUEDE', EmployeeID: 4, OrderDate: new Date(8377146e5),\r\n ShipName: 'Que Delícia', ShipCity: 'Rio de Janeiro', ShipAddress: 'Rua da Panificadora, 12',\r\n ShipRegion: 'RJ', ShipPostalCode: '02389-673', ShipCountry: 'Brazil', Freight: 3.05, Verified: !1\r\n },\r\n {\r\n OrderID: 10262, CustomerID: 'RATTC', EmployeeID: 8, OrderDate: new Date(8379738e5),\r\n ShipName: 'Rattlesnake Canyon Grocery', ShipCity: 'Albuquerque', ShipAddress: '2817 Milton Dr.',\r\n ShipRegion: 'NM', ShipPostalCode: '87110', ShipCountry: 'USA', Freight: 48.29, Verified: !0\r\n },\r\n {\r\n OrderID: 10263, CustomerID: 'ERNSH', EmployeeID: 9, OrderDate: new Date(8380602e5),\r\n ShipName: 'Ernst Handel', ShipCity: 'Graz', ShipAddress: 'Kirchgasse 6', ShipRegion: null, ShipPostalCode: '8010', ShipCountry: 'Austria', Freight: 146.06, Verified: !0\r\n }, { OrderID: 10264, CustomerID: 'FOLKO', EmployeeID: 6, OrderDate: new Date(8381466e5), ShipName: 'Folk och fä HB', ShipCity: 'Bräcke', ShipAddress: 'Åkergatan 24', ShipRegion: null, ShipPostalCode: 'S-844 67', ShipCountry: 'Sweden', Freight: 3.67, Verified: !1 }, { OrderID: 10265, CustomerID: 'BLONP', EmployeeID: 2, OrderDate: new Date(838233e6), ShipName: 'Blondel père et fils', ShipCity: 'Strasbourg', ShipAddress: '24, place Kléber', ShipRegion: null, ShipPostalCode: '67000', ShipCountry: 'France', Freight: 55.28, Verified: !0 }, { OrderID: 10266, CustomerID: 'WARTH', EmployeeID: 3, OrderDate: new Date(8383194e5), ShipName: 'Wartian Herkku', ShipCity: 'Oulu', ShipAddress: 'Torikatu 38', ShipRegion: null, ShipPostalCode: '90110', ShipCountry: 'Finland', Freight: 25.73, Verified: !1 }, { OrderID: 10267, CustomerID: 'FRANK', EmployeeID: 4, OrderDate: new Date(8385786e5), ShipName: 'Frankenversand', ShipCity: 'München', ShipAddress: 'Berliner Platz 43', ShipRegion: null, ShipPostalCode: '80805', ShipCountry: 'Germany', Freight: 208.58, Verified: !0 }, { OrderID: 10268, CustomerID: 'GROSR', EmployeeID: 8, OrderDate: new Date(838665e6), ShipName: 'GROSELLA-Restaurante', ShipCity: 'Caracas', ShipAddress: '5ª Ave. Los Palos Grandes', ShipRegion: 'DF', ShipPostalCode: '1081', ShipCountry: 'Venezuela', Freight: 66.29, Verified: !0 }, { OrderID: 10269, CustomerID: 'WHITC', EmployeeID: 5, OrderDate: new Date(8387514e5), ShipName: 'White Clover Markets', ShipCity: 'Austria', ShipAddress: '1029 - 12th Ave. S.', ShipRegion: 'WA', ShipPostalCode: '98124', ShipCountry: 'USA', Freight: 4.56, Verified: !1 }, { OrderID: 10270, CustomerID: 'WARTH', EmployeeID: 1, OrderDate: new Date(8388378e5), ShipName: 'Wartian Herkku', ShipCity: 'Oulu', ShipAddress: 'Torikatu 38', ShipRegion: null, ShipPostalCode: '90110', ShipCountry: 'Finland', Freight: 136.54, Verified: !0 }, { OrderID: 10271, CustomerID: 'SPLIR', EmployeeID: 6, OrderDate: new Date(8388378e5), ShipName: 'Split Rail Beer & Ale', ShipCity: 'Lander', ShipAddress: 'P.O. Box 555', ShipRegion: 'WY', ShipPostalCode: '82520', ShipCountry: 'USA', Freight: 4.54, Verified: !1 }, { OrderID: 10272, CustomerID: 'RATTC', EmployeeID: 6, OrderDate: new Date(8389242e5), ShipName: 'Rattlesnake Canyon Grocery', ShipCity: 'Albuquerque', ShipAddress: '2817 Milton Dr.', ShipRegion: 'NM', ShipPostalCode: '87110', ShipCountry: 'USA', Freight: 98.03, Verified: !0 }, { OrderID: 10273, CustomerID: 'QUICK', EmployeeID: 3, OrderDate: new Date(8391834e5), ShipName: 'QUICK-Stop', ShipCity: 'Cunewalde', ShipAddress: 'Taucherstraße 10', ShipRegion: null, ShipPostalCode: '01307', ShipCountry: 'Germany', Freight: 76.07, Verified: !0 }, { OrderID: 10274, CustomerID: 'VINET', EmployeeID: 6, OrderDate: new Date(8392698e5), ShipName: 'Vins et alcools Chevalier', ShipCity: 'Reims', ShipAddress: '59 rue de l Abbaye', ShipRegion: null, ShipPostalCode: '51100', ShipCountry: 'France', Freight: 6.01, Verified: !1 }, { OrderID: 10275, CustomerID: 'MAGAA', EmployeeID: 1, OrderDate: new Date(8393562e5), ShipName: 'Magazzini Alimentari Riuniti', ShipCity: 'Bergamo', ShipAddress: 'Via Ludovico il Moro 22', ShipRegion: null, ShipPostalCode: '24100', ShipCountry: 'Italy', Freight: 26.93, Verified: !1 }, { OrderID: 10276, CustomerID: 'TORTU', EmployeeID: 8, OrderDate: new Date(8394426e5), ShipName: 'Tortuga Restaurante', ShipCity: 'México D.F.', ShipAddress: 'Avda. Azteca 123', ShipRegion: null, ShipPostalCode: '05033', ShipCountry: 'Mexico', Freight: 13.84, Verified: !1 }, { OrderID: 10277, CustomerID: 'MORGK', EmployeeID: 2, OrderDate: new Date(839529e6), ShipName: 'Morgenstern Gesundkost', ShipCity: 'Leipzig', ShipAddress: 'Heerstr. 22', ShipRegion: null, ShipPostalCode: '04179', ShipCountry: 'Germany', Freight: 125.77, Verified: !0 }, { OrderID: 10278, CustomerID: 'BERGS', EmployeeID: 8, OrderDate: new Date(8397882e5), ShipName: 'Berglunds snabbköp', ShipCity: 'Luleå', ShipAddress: 'Berguvsvägen 8', ShipRegion: null, ShipPostalCode: 'S-958 22', ShipCountry: 'Sweden', Freight: 92.69, Verified: !0 }, { OrderID: 10279, CustomerID: 'LEHMS', EmployeeID: 8, OrderDate: new Date(8398746e5), ShipName: 'Lehmanns Marktstand', ShipCity: 'Frankfurt a.M.', ShipAddress: 'Magazinweg 7', ShipRegion: null, ShipPostalCode: '60528', ShipCountry: 'Germany', Freight: 25.83, Verified: !1 }, { OrderID: 10280, CustomerID: 'BERGS', EmployeeID: 2, OrderDate: new Date(839961e6), ShipName: 'Berglunds snabbköp', ShipCity: 'Luleå', ShipAddress: 'Berguvsvägen 8', ShipRegion: null, ShipPostalCode: 'S-958 22', ShipCountry: 'Sweden', Freight: 8.98, Verified: !1 }, { OrderID: 10281, CustomerID: 'ROMEY', EmployeeID: 4, OrderDate: new Date(839961e6), ShipName: 'Romero y tomillo', ShipCity: 'Madrid', ShipAddress: 'Gran Vía, 1', ShipRegion: null, ShipPostalCode: '28001', ShipCountry: 'Spain', Freight: 2.94, Verified: !1 }, { OrderID: 10282, CustomerID: 'ROMEY', EmployeeID: 4, OrderDate: new Date(8400474e5), ShipName: 'Romero y tomillo', ShipCity: 'Madrid', ShipAddress: 'Gran Vía, 1', ShipRegion: null, ShipPostalCode: '28001', ShipCountry: 'Spain', Freight: 12.69, Verified: !1 }, { OrderID: 10283, CustomerID: 'LILAS', EmployeeID: 3, OrderDate: new Date(8401338e5), ShipName: 'LILA-Supermercado', ShipCity: 'Barquisimeto', ShipAddress: 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', ShipRegion: 'Lara', ShipPostalCode: '3508', ShipCountry: 'Venezuela', Freight: 84.81, Verified: !0 }, { OrderID: 10284, CustomerID: 'LEHMS', EmployeeID: 4, OrderDate: new Date(840393e6), ShipName: 'Lehmanns Marktstand', ShipCity: 'Frankfurt a.M.', ShipAddress: 'Magazinweg 7', ShipRegion: null, ShipPostalCode: '60528', ShipCountry: 'Germany', Freight: 76.56, Verified: !0 }, { OrderID: 10285, CustomerID: 'QUICK', EmployeeID: 1, OrderDate: new Date(8404794e5), ShipName: 'QUICK-Stop', ShipCity: 'Cunewalde', ShipAddress: 'Taucherstraße 10', ShipRegion: null, ShipPostalCode: '01307', ShipCountry: 'Germany', Freight: 76.83, Verified: !0 }, { OrderID: 10286, CustomerID: 'QUICK', EmployeeID: 8, OrderDate: new Date(8405658e5), ShipName: 'QUICK-Stop', ShipCity: 'Cunewalde', ShipAddress: 'Taucherstraße 10', ShipRegion: null, ShipPostalCode: '01307', ShipCountry: 'Germany', Freight: 229.24, Verified: !0 }, { OrderID: 10287, CustomerID: 'RICAR', EmployeeID: 8, OrderDate: new Date(8406522e5), ShipName: 'Ricardo Adocicados', ShipCity: 'Rio de Janeiro', ShipAddress: 'Av. Copacabana, 267', ShipRegion: 'RJ', ShipPostalCode: '02389-890', ShipCountry: 'Brazil', Freight: 12.76, Verified: !1 }, { OrderID: 10288, CustomerID: 'REGGC', EmployeeID: 4, OrderDate: new Date(8407386e5), ShipName: 'Reggiani Caseifici', ShipCity: 'Reggio Emilia', ShipAddress: 'Strada Provinciale 124', ShipRegion: null, ShipPostalCode: '42100', ShipCountry: 'Italy', Freight: 7.45, Verified: !1 }, { OrderID: 10289, CustomerID: 'BSBEV', EmployeeID: 7, OrderDate: new Date(8409978e5), ShipName: 'Bs Beverages', ShipCity: 'Brazil', ShipAddress: 'Fauntleroy Circus', ShipRegion: null, ShipPostalCode: 'EC2 5NT', ShipCountry: 'UK', Freight: 22.77, Verified: !1 }, { OrderID: 10290, CustomerID: 'COMMI', EmployeeID: 8, OrderDate: new Date(8410842e5), ShipName: 'Comércio Mineiro', ShipCity: 'Sao Paulo', ShipAddress: 'Av. dos Lusíadas, 23', ShipRegion: 'SP', ShipPostalCode: '05432-043', ShipCountry: 'Brazil', Freight: 79.7, Verified: !0 }, { OrderID: 10291, CustomerID: 'QUEDE', EmployeeID: 6, OrderDate: new Date(8410842e5), ShipName: 'Que Delícia', ShipCity: 'Rio de Janeiro', ShipAddress: 'Rua da Panificadora, 12', ShipRegion: 'RJ', ShipPostalCode: '02389-673', ShipCountry: 'Brazil', Freight: 6.4, Verified: !1 }, { OrderID: 10292, CustomerID: 'TRADH', EmployeeID: 1, OrderDate: new Date(8411706e5), ShipName: 'Tradiçao Hipermercados', ShipCity: 'Sao Paulo', ShipAddress: 'Av. Inês de Castro, 414', ShipRegion: 'SP', ShipPostalCode: '05634-030', ShipCountry: 'Brazil', Freight: 1.35, Verified: !1 }, { OrderID: 10293, CustomerID: 'TORTU', EmployeeID: 1, OrderDate: new Date(841257e6), ShipName: 'Tortuga Restaurante', ShipCity: 'México D.F.', ShipAddress: 'Avda. Azteca 123', ShipRegion: null, ShipPostalCode: '05033', ShipCountry: 'Mexico', Freight: 21.18, Verified: !1 }, { OrderID: 10294, CustomerID: 'RATTC', EmployeeID: 4, OrderDate: new Date(8413434e5), ShipName: 'Rattlesnake Canyon Grocery', ShipCity: 'Albuquerque', ShipAddress: '2817 Milton Dr.', ShipRegion: 'NM', ShipPostalCode: '87110', ShipCountry: 'USA', Freight: 147.26, Verified: !0 }, { OrderID: 10295, CustomerID: 'VINET', EmployeeID: 2, OrderDate: new Date(8416026e5), ShipName: 'Vins et alcools Chevalier', ShipCity: 'Reims', ShipAddress: '59 rue de l Abbaye', ShipRegion: null, ShipPostalCode: '51100', ShipCountry: 'France', Freight: 1.15, Verified: !1 }, { OrderID: 10296, CustomerID: 'LILAS', EmployeeID: 6, OrderDate: new Date(841689e6), ShipName: 'LILA-Supermercado', ShipCity: 'Barquisimeto', ShipAddress: 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', ShipRegion: 'Lara', ShipPostalCode: '3508', ShipCountry: 'Venezuela', Freight: .12, Verified: !1 }, { OrderID: 10297, CustomerID: 'BLONP', EmployeeID: 5, OrderDate: new Date(8417754e5), ShipName: 'Blondel père et fils', ShipCity: 'Strasbourg', ShipAddress: '24, place Kléber', ShipRegion: null, ShipPostalCode: '67000', ShipCountry: 'France', Freight: 5.74, Verified: !1 }, { OrderID: 10298, CustomerID: 'HUNGO', EmployeeID: 6, OrderDate: new Date(8418618e5), ShipName: 'Hungry Owl All-Night Grocers', ShipCity: 'Cork', ShipAddress: '8 Johnstown Road', ShipRegion: 'Co. Cork', ShipPostalCode: null, ShipCountry: 'Ireland', Freight: 168.22, Verified: !0 }, { OrderID: 10299, CustomerID: 'RICAR', EmployeeID: 4, OrderDate: new Date(8419482e5), ShipName: 'Ricardo Adocicados', ShipCity: 'Rio de Janeiro', ShipAddress: 'Av. Copacabana, 267', ShipRegion: 'RJ', ShipPostalCode: '02389-890', ShipCountry: 'Brazil', Freight: 29.76, Verified: !1 }, { OrderID: 10300, CustomerID: 'MAGAA', EmployeeID: 2, OrderDate: new Date(8422074e5), ShipName: 'Magazzini Alimentari Riuniti', ShipCity: 'Bergamo', ShipAddress: 'Via Ludovico il Moro 22', ShipRegion: null, ShipPostalCode: '24100', ShipCountry: 'Italy', Freight: 17.68, Verified: !1 }, { OrderID: 10301, CustomerID: 'WANDK', EmployeeID: 8, OrderDate: new Date(8422074e5), ShipName: 'Die Wandernde Kuh', ShipCity: 'Stuttgart', ShipAddress: 'Adenauerallee 900', ShipRegion: null, ShipPostalCode: '70563', ShipCountry: 'Germany', Freight: 45.08, Verified: !0 }, { OrderID: 10302, CustomerID: 'SUPRD', EmployeeID: 4, OrderDate: new Date(8422938e5), ShipName: 'Suprêmes délices', ShipCity: 'Charleroi', ShipAddress: 'Boulevard Tirou, 255', ShipRegion: null, ShipPostalCode: 'B-6000', ShipCountry: 'Belgium', Freight: 6.27, Verified: !1 }, { OrderID: 10303, CustomerID: 'GODOS', EmployeeID: 7, OrderDate: new Date(8423802e5), ShipName: 'Godos Cocina Típica', ShipCity: 'Sevilla', ShipAddress: 'C/ Romero, 33', ShipRegion: null, ShipPostalCode: '41101', ShipCountry: 'Spain', Freight: 107.83, Verified: !0 }, { OrderID: 10304, CustomerID: 'TORTU', EmployeeID: 1, OrderDate: new Date(8424666e5), ShipName: 'Tortuga Restaurante', ShipCity: 'México D.F.', ShipAddress: 'Avda. Azteca 123', ShipRegion: null, ShipPostalCode: '05033', ShipCountry: 'Mexico', Freight: 63.79, Verified: !0 }, { OrderID: 10305, CustomerID: 'OLDWO', EmployeeID: 8, OrderDate: new Date(842553e6), ShipName: 'Old World Delicatessen', ShipCity: 'Anchorage', ShipAddress: '2743 Bering St.', ShipRegion: 'AK', ShipPostalCode: '99508', ShipCountry: 'USA', Freight: 257.62, Verified: !0 }, { OrderID: 10306, CustomerID: 'ROMEY', EmployeeID: 1, OrderDate: new Date(8428122e5), ShipName: 'Romero y tomillo', ShipCity: 'Madrid', ShipAddress: 'Gran Vía, 1', ShipRegion: null, ShipPostalCode: '28001', ShipCountry: 'Spain', Freight: 7.56, Verified: !1 }, { OrderID: 10307, CustomerID: 'LONEP', EmployeeID: 2, OrderDate: new Date(8428986e5), ShipName: 'Lonesome Pine Restaurant', ShipCity: 'Portland', ShipAddress: '89 Chiaroscuro Rd.', ShipRegion: 'OR', ShipPostalCode: '97219', ShipCountry: 'USA', Freight: .56, Verified: !1 }, { OrderID: 10308, CustomerID: 'ANATR', EmployeeID: 7, OrderDate: new Date(842985e6), ShipName: 'Ana Trujillo Emparedados y helados', ShipCity: 'México D.F.', ShipAddress: 'Avda. de la Constitución 2222', ShipRegion: null, ShipPostalCode: '05021', ShipCountry: 'Mexico', Freight: 1.61, Verified: !1 }, { OrderID: 10309, CustomerID: 'HUNGO', EmployeeID: 3, OrderDate: new Date(8430714e5), ShipName: 'Hungry Owl All-Night Grocers', ShipCity: 'Cork', ShipAddress: '8 Johnstown Road', ShipRegion: 'Co. Cork', ShipPostalCode: null, ShipCountry: 'Ireland', Freight: 47.3, Verified: !0 }, { OrderID: 10310, CustomerID: 'THEBI', EmployeeID: 8, OrderDate: new Date(8431578e5), ShipName: 'The Big Cheese', ShipCity: 'Portland', ShipAddress: '89 Jefferson Way Suite 2', ShipRegion: 'OR', ShipPostalCode: '97201', ShipCountry: 'USA', Freight: 17.52, Verified: !1 }, { OrderID: 10311, CustomerID: 'DUMON', EmployeeID: 1, OrderDate: new Date(8431578e5), ShipName: 'Du monde entier', ShipCity: 'Nantes', ShipAddress: '67, rue des Cinquante Otages', ShipRegion: null, ShipPostalCode: '44000', ShipCountry: 'France', Freight: 24.69, Verified: !1 }, { OrderID: 10312, CustomerID: 'WANDK', EmployeeID: 2, OrderDate: new Date(843417e6), ShipName: 'Die Wandernde Kuh', ShipCity: 'Stuttgart', ShipAddress: 'Adenauerallee 900', ShipRegion: null, ShipPostalCode: '70563', ShipCountry: 'Germany', Freight: 40.26, Verified: !0 }, { OrderID: 10313, CustomerID: 'QUICK', EmployeeID: 2, OrderDate: new Date(8435034e5), ShipName: 'QUICK-Stop', ShipCity: 'Cunewalde', ShipAddress: 'Taucherstraße 10', ShipRegion: null, ShipPostalCode: '01307', ShipCountry: 'Germany', Freight: 1.96, Verified: !1 }, { OrderID: 10314, CustomerID: 'RATTC', EmployeeID: 1, OrderDate: new Date(8435898e5), ShipName: 'Rattlesnake Canyon Grocery', ShipCity: 'Albuquerque', ShipAddress: '2817 Milton Dr.', ShipRegion: 'NM', ShipPostalCode: '87110', ShipCountry: 'USA', Freight: 74.16, Verified: !0 }, { OrderID: 10315, CustomerID: 'ISLAT', EmployeeID: 4, OrderDate: new Date(8436762e5), ShipName: 'Island Trading', ShipCity: 'Cowes', ShipAddress: 'Garden House Crowther Way', ShipRegion: 'Isle of Wight', ShipPostalCode: 'PO31 7PJ', ShipCountry: 'UK', Freight: 41.76, Verified: !0 }, { OrderID: 10316, CustomerID: 'RATTC', EmployeeID: 1, OrderDate: new Date(8437626e5), ShipName: 'Rattlesnake Canyon Grocery', ShipCity: 'Albuquerque', ShipAddress: '2817 Milton Dr.', ShipRegion: 'NM', ShipPostalCode: '87110', ShipCountry: 'USA', Freight: 150.15, Verified: !0 }, { OrderID: 10317, CustomerID: 'LONEP', EmployeeID: 6, OrderDate: new Date(8440218e5), ShipName: 'Lonesome Pine Restaurant', ShipCity: 'Portland', ShipAddress: '89 Chiaroscuro Rd.', ShipRegion: 'OR', ShipPostalCode: '97219', ShipCountry: 'USA', Freight: 12.69, Verified: !1 }, { OrderID: 10318, CustomerID: 'ISLAT', EmployeeID: 8, OrderDate: new Date(8441082e5), ShipName: 'Island Trading', ShipCity: 'Cowes', ShipAddress: 'Garden House Crowther Way', ShipRegion: 'Isle of Wight', ShipPostalCode: 'PO31 7PJ', ShipCountry: 'UK', Freight: 4.73, Verified: !1 }];\r\n\r\n export let virtualData = [];\r\nexport function dataSource() {\r\n let names = ['VINET', 'TOMSP', 'HANAR', 'VICTE', 'SUPRD', 'HANAR', 'CHOPS', 'RICSU', 'WELLI', 'HILAA', 'ERNSH', 'CENTC',\r\n 'OTTIK', 'QUEDE', 'RATTC', 'ERNSH', 'FOLKO', 'BLONP', 'WARTH', 'FRANK', 'GROSR', 'WHITC', 'WARTH', 'SPLIR', 'RATTC', 'QUICK', 'VINET',\r\n 'MAGAA', 'TORTU', 'MORGK', 'BERGS', 'LEHMS', 'BERGS', 'ROMEY', 'ROMEY', 'LILAS', 'LEHMS', 'QUICK', 'QUICK', 'RICAR', 'REGGC', 'BSBEV',\r\n 'COMMI', 'QUEDE', 'TRADH', 'TORTU', 'RATTC', 'VINET', 'LILAS', 'BLONP', 'HUNGO', 'RICAR', 'MAGAA', 'WANDK', 'SUPRD', 'GODOS', 'TORTU',\r\n 'OLDWO', 'ROMEY', 'LONEP', 'ANATR', 'HUNGO', 'THEBI', 'DUMON', 'WANDK', 'QUICK', 'RATTC', 'ISLAT', 'RATTC', 'LONEP', 'ISLAT', 'TORTU',\r\n 'WARTH', 'ISLAT', 'PERIC', 'KOENE', 'SAVEA', 'KOENE', 'BOLID', 'FOLKO', 'FURIB', 'SPLIR', 'LILAS', 'BONAP', 'MEREP', 'WARTH', 'VICTE',\r\n 'HUNGO', 'PRINI', 'FRANK', 'OLDWO', 'MEREP', 'BONAP', 'SIMOB', 'FRANK', 'LEHMS', 'WHITC', 'QUICK', 'RATTC', 'FAMIA'];\r\n const sport = ['Cricket', 'Football', 'Tennis', 'Golf', 'Chess', 'Dodgeball', 'Racket', 'Archery', 'Climbing', 'Hunting', 'Carrom', 'Tag', 'Novuss',\r\n 'Subbuteo', 'Baseball', 'Madden NFL', 'Shuffleboard', 'Badminton', 'Hockey', 'Volleyball', 'Table Tennis', 'Golf', 'Cycling', 'Running', 'Walking', 'Wireball',\r\n 'Town ball', 'Tee ball', 'Stool ball', 'Stick ball'];\r\n const country = ['India', 'Australia', 'Ballesteros', 'Belgium', 'Brazil', 'England', 'Ethiopia', 'Finland', 'France', 'Germany', 'Britain',\r\n 'Argentina', 'Jamaica', 'Kenya', 'Morocco', 'Ireland', 'Norway', 'Philippines', 'Portugal', 'Romania', 'Russia', 'Scotland', 'Scottish', 'Serbia', 'Spain',\r\n 'Sweden', 'Switzerland', 'Netherlands', 'UK', 'Ukraine', 'US', 'Wales', 'West Indies', 'China', 'Hong Kong', 'Italy', 'Philippines', 'Turkey', 'Botswana',\r\n 'Sri Lanka', 'Algeria', 'Bangladesh', 'Egypt', 'Malaysia'];\r\n for (let i = 0; i < 100000; i++) {\r\n virtualData.push({\r\n 'SNo': i + 1,\r\n 'FIELD1': names[Math.floor(Math.random() * names.length)],\r\n 'FIELD2': 1967 + (i % 10),\r\n 'FIELD3': sport[Math.floor(Math.random() * sport.length)],\r\n 'FIELD4': country[Math.floor(Math.random() * country.length)],\r\n 'FIELD5': Math.floor(Math.random() * 2000),\r\n 'FIELD6': Math.floor(Math.random() * 1000),\r\n 'FIELD7': Math.floor(Math.random() * 100),\r\n 'FIELD8': Math.floor(Math.random() * 10),\r\n 'FIELD9': Math.floor(Math.random() * 10),\r\n 'FIELD10': Math.floor(Math.random() * 100),\r\n 'FIELD11': Math.floor(Math.random() * 100),\r\n 'FIELD12': Math.floor(Math.random() * 1000),\r\n 'FIELD13': Math.floor(Math.random() * 10),\r\n 'FIELD14': Math.floor(Math.random() * 10),\r\n 'FIELD15': Math.floor(Math.random() * 1000),\r\n 'FIELD16': Math.floor(Math.random() * 200),\r\n 'FIELD17': Math.floor(Math.random() * 300),\r\n 'FIELD18': Math.floor(Math.random() * 400),\r\n 'FIELD19': Math.floor(Math.random() * 500),\r\n 'FIELD20': Math.floor(Math.random() * 700),\r\n 'FIELD21': Math.floor(Math.random() * 800),\r\n 'FIELD22': Math.floor(Math.random() * 1000),\r\n 'FIELD23': Math.floor(Math.random() * 2000),\r\n 'FIELD24': Math.floor(Math.random() * 150),\r\n 'FIELD25': Math.floor(Math.random() * 1000),\r\n 'FIELD26': Math.floor(Math.random() * 100),\r\n 'FIELD27': Math.floor(Math.random() * 400),\r\n 'FIELD28': Math.floor(Math.random() * 600),\r\n 'FIELD29': Math.floor(Math.random() * 500),\r\n 'FIELD30': Math.floor(Math.random() * 300),\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\nexport let employeeData = [{\r\n 'EmployeeID': 1,\r\n 'Name': {\r\n 'LastName': 'abc'\r\n },\r\n 'FirstName': 'Nancy',\r\n 'Title': 'Sales Representative',\r\n 'TitleOfCourtesy': 'Ms.',\r\n 'BirthDate': new Date(-664743600000),\r\n 'HireDate': new Date(704692800000),\r\n 'Address': '507 - 20th Ave. E.\\r\\nApt. 2A',\r\n 'City': 'Austria',\r\n 'Region': 'WA',\r\n 'PostalCode': '98122',\r\n 'Country': 'USA',\r\n 'HomePhone': '(206) 555-9857',\r\n 'Extension': '5467',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Education includes a BA in psychology from Colorado State University in 1970. She also completed\\\r\n \\'The Art of the Cold Call.\\' Nancy is a member of Toastmasters International.',\r\n 'ReportsTo': 2,\r\n 'PhotoPath': 'http://accweb/emmployees/davolio.bmp'\r\n},\r\n{\r\n 'EmployeeID': 2,\r\n 'Name': {\r\n 'LastName': 'cde'\r\n },\r\n 'FirstName': 'Andrew',\r\n 'Title': 'Vice President, Sales',\r\n 'TitleOfCourtesy': 'Dr.',\r\n 'BirthDate': new Date(-563828400000),\r\n 'HireDate': new Date(713764800000),\r\n 'Address': '908 W. Capital Way',\r\n 'City': 'Germany',\r\n 'Region': 'WA',\r\n 'PostalCode': '98401',\r\n 'Country': 'USA',\r\n 'HomePhone': '(206) 555-9482',\r\n 'Extension': '3457',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of \\\r\n Dallas in 1981. He is fluent in French and Italian and reads German. He joined the company as a sales representative, \\\r\n was promoted to sales manager in January 1992 and to vice president of sales in March 1993. Andrew is a member of the \\\r\n Sales Management Roundtable, the Austria Chamber of Commerce, and the Pacific Rim Importers Association.',\r\n 'ReportsTo': 0,\r\n 'PhotoPath': 'http://accweb/emmployees/fuller.bmp'\r\n},\r\n{\r\n 'EmployeeID': 3,\r\n 'Name': {\r\n 'LastName': 'wqe'\r\n },\r\n 'FirstName': 'Janet',\r\n 'Title': 'Sales Representative',\r\n 'TitleOfCourtesy': 'Ms.',\r\n 'BirthDate': new Date(-200088000000),\r\n 'HireDate': new Date(702104400000),\r\n 'Address': '722 Moss Bay Blvd.',\r\n 'City': 'France',\r\n 'Region': 'WA',\r\n 'PostalCode': '98033',\r\n 'Country': 'USA',\r\n 'HomePhone': '(206) 555-3412',\r\n 'Extension': '3355',\r\n 'Photo': { 'Length': 21722 },\r\n\r\n 'Notes': 'Janet has a BS degree in chemistry from Boston College (1984). \\\r\n She has also completed a certificate program in food retailing management.\\\r\n Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.',\r\n 'ReportsTo': 2,\r\n 'PhotoPath': 'http://accweb/emmployees/leverling.bmp'\r\n},\r\n{\r\n 'EmployeeID': 4,\r\n 'Name': {\r\n 'LastName': 'yte'\r\n },\r\n 'FirstName': 'Margaret',\r\n 'Title': 'Sales Representative',\r\n 'TitleOfCourtesy': 'Mrs.',\r\n 'BirthDate': new Date(-1018814400000),\r\n 'HireDate': new Date(736401600000),\r\n 'Address': '4110 Old Switzerland Rd.',\r\n 'City': 'Switzerland',\r\n 'Region': 'WA',\r\n 'PostalCode': '98052',\r\n 'Country': 'USA',\r\n 'HomePhone': '(206) 555-8122',\r\n 'Extension': '5176',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American \\\r\n Institute of Culinary Arts (1966). She was assigned to the Brazil office temporarily from July through November 1992.',\r\n 'ReportsTo': 2,\r\n 'PhotoPath': 'http://accweb/emmployees/peacock.bmp'\r\n},\r\n{\r\n 'EmployeeID': 5,\r\n 'Name': {\r\n 'LastName': 'qwe'\r\n },\r\n 'FirstName': 'Steven',\r\n 'Title': 'Sales Manager',\r\n 'TitleOfCourtesy': 'Mr.',\r\n 'BirthDate': new Date(-468010800000),\r\n 'HireDate': new Date(750830400000),\r\n 'Address': '14 Garrett Hill',\r\n 'City': 'Brazil',\r\n 'Region': null,\r\n 'PostalCode':\r\n 'SW1 8JR',\r\n 'Country': 'UK',\r\n 'HomePhone': '(71) 555-4848',\r\n 'Extension': '3453',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Steven Buchanan graduated from St. Andrews University, Scotland, with a BSC degree in 1976. Upon joining the company as \\\r\n a sales representative in 1992, he spent 6 months in an orientation program at the Austria office and then returned to his permanent \\\r\n post in Brazil. He was promoted to sales manager in March 1993. Mr. Buchanan has completed the courses \\'Successful \\\r\n Telemarketing\\' and \\'International Sales Management.\\' He is fluent in French.',\r\n 'ReportsTo': 2,\r\n 'PhotoPath': 'http://accweb/emmployees/buchanan.bmp'\r\n},\r\n{\r\n 'EmployeeID': 6,\r\n 'Name': {\r\n 'LastName': 'trw'\r\n },\r\n 'FirstName': 'Michael',\r\n 'Title': 'Sales Representative',\r\n 'TitleOfCourtesy': 'Mr.',\r\n 'BirthDate': new Date(-205185600000),\r\n 'HireDate': new Date(750830400000),\r\n 'Address': 'Coventry House\\r\\nMiner Rd.',\r\n 'City': 'Brazil',\r\n 'Region': null,\r\n 'PostalCode': 'EC2 7JR',\r\n 'Country': 'UK',\r\n 'HomePhone': '(71) 555-7773',\r\n 'Extension': '428',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Michael is a graduate of Sussex University (MA, economics, 1983) and the University of California at Los Angeles \\\r\n (MBA, marketing, 1986). He has also taken the courses \\'Multi-Cultural Selling\\' and \\'Time Management for the Sales Professional.\\' \\\r\n He is fluent in Japanese and can read and write French, Portuguese, and Spanish.',\r\n 'ReportsTo': 5,\r\n 'PhotoPath': 'http://accweb/emmployees/davolio.bmp'\r\n},\r\n{\r\n 'EmployeeID': 7,\r\n 'Name': {\r\n 'LastName': 'cbe'\r\n },\r\n 'FirstName': 'Robert',\r\n 'Title': 'Sales Representative',\r\n 'TitleOfCourtesy': 'Mr.',\r\n 'BirthDate': new Date(-302731200000),\r\n 'HireDate': new Date(757486800000),\r\n 'Address': 'Edgeham Hollow\\r\\nWinchester Way',\r\n 'City': 'Brazil',\r\n 'Region': null,\r\n 'PostalCode': 'RG1 9SP',\r\n 'Country': 'UK',\r\n 'HomePhone': '(71) 555-5598',\r\n 'Extension': '465',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the \\\r\n University of Michigan in 1992, the year he joined the company. After completing a course entitled \\'Selling in Europe,\\' \\\r\n he was transferred to the Brazil office in March 1993.',\r\n 'ReportsTo': 5,\r\n 'PhotoPath': 'http://accweb/emmployees/davolio.bmp'\r\n},\r\n{\r\n 'EmployeeID': 8,\r\n 'Name': {\r\n 'LastName': 'dbc'\r\n },\r\n 'FirstName': 'Laura',\r\n 'Title': 'Inside Sales Coordinator',\r\n 'TitleOfCourtesy': 'Ms.',\r\n 'BirthDate': new Date(-377982000000),\r\n 'HireDate': new Date(762843600000),\r\n 'Address': '4726 - 11th Ave. N.E.',\r\n 'City': 'Austria',\r\n 'Region': 'WA',\r\n 'PostalCode': '98105',\r\n 'Country': 'USA',\r\n 'HomePhone': '(206) 555-1189',\r\n 'Extension': '2344',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Laura received a BA in psychology from the University of Washington. She has also completed a course in business \\\r\n French. She reads and writes French.',\r\n 'ReportsTo': 2,\r\n 'PhotoPath': 'http://accweb/emmployees/davolio.bmp'\r\n},\r\n{\r\n 'EmployeeID': 9,\r\n 'Name': {\r\n 'LastName': 'xyz'\r\n },\r\n 'FirstName': 'Anne',\r\n 'Title': 'Sales Representative',\r\n 'TitleOfCourtesy': 'Ms.',\r\n 'BirthDate': new Date(-123966000000),\r\n 'HireDate': new Date(784875600000),\r\n 'Address': '7 Houndstooth Rd.',\r\n 'City': 'Brazil',\r\n 'Region': null,\r\n 'PostalCode': 'WG2 7LT',\r\n 'Country': 'UK',\r\n 'HomePhone': '(71) 555-4444',\r\n 'Extension': '452',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Anne has a BA degree in English from St. Lawrence College. She is fluent in French and German.',\r\n 'ReportsTo': 5,\r\n 'PhotoPath': 'http://accweb/emmployees/davolio.bmp'\r\n},\r\n\r\n{\r\n 'EmployeeID': 10,\r\n 'Name': {\r\n 'LastName': 'abc'\r\n },\r\n 'FirstName': 'Nancy',\r\n 'Title': 'Sales Representative',\r\n 'TitleOfCourtesy': 'Ms.',\r\n 'BirthDate': new Date(-664743600000),\r\n 'HireDate': new Date(704692800000),\r\n 'Address': '507 - 20th Ave. E.\\r\\nApt. 2A',\r\n 'City': 'Austria',\r\n 'Region': 'WA',\r\n 'PostalCode': '98122',\r\n 'Country': 'USA',\r\n 'HomePhone': '(206) 555-9857',\r\n 'Extension': '5467',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Education includes a BA in psychology from Colorado State University in 1970. She also completed\\\r\n \\'The Art of the Cold Call.\\' Nancy is a member of Toastmasters International.',\r\n 'ReportsTo': 2,\r\n 'PhotoPath': 'http://accweb/emmployees/davolio.bmp'\r\n},\r\n{\r\n 'EmployeeID': 11,\r\n 'Name': {\r\n 'LastName': 'cde'\r\n },\r\n 'FirstName': 'Andrew',\r\n 'Title': 'Vice President, Sales',\r\n 'TitleOfCourtesy': 'Dr.',\r\n 'BirthDate': new Date(-563828400000),\r\n 'HireDate': new Date(713764800000),\r\n 'Address': '908 W. Capital Way',\r\n 'City': 'Germany',\r\n 'Region': 'WA',\r\n 'PostalCode': '98401',\r\n 'Country': 'USA',\r\n 'HomePhone': '(206) 555-9482',\r\n 'Extension': '3457',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of \\\r\n Dallas in 1981. He is fluent in French and Italian and reads German. He joined the company as a sales representative, \\\r\n was promoted to sales manager in January 1992 and to vice president of sales in March 1993. Andrew is a member of the \\\r\n Sales Management Roundtable, the Austria Chamber of Commerce, and the Pacific Rim Importers Association.',\r\n 'ReportsTo': 0,\r\n 'PhotoPath': 'http://accweb/emmployees/fuller.bmp'\r\n},\r\n{\r\n 'EmployeeID': 12,\r\n 'Name': {\r\n 'LastName': 'wqe'\r\n },\r\n 'FirstName': 'Janet',\r\n 'Title': 'Sales Representative',\r\n 'TitleOfCourtesy': 'Ms.',\r\n 'BirthDate': new Date(-200088000000),\r\n 'HireDate': new Date(702104400000),\r\n 'Address': '722 Moss Bay Blvd.',\r\n 'City': 'France',\r\n 'Region': 'WA',\r\n 'PostalCode': '98033',\r\n 'Country': 'USA',\r\n 'HomePhone': '(206) 555-3412',\r\n 'Extension': '3355',\r\n 'Photo': { 'Length': 21722 },\r\n\r\n 'Notes': 'Janet has a BS degree in chemistry from Boston College (1984). \\\r\n She has also completed a certificate program in food retailing management.\\\r\n Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.',\r\n 'ReportsTo': 2,\r\n 'PhotoPath': 'http://accweb/emmployees/leverling.bmp'\r\n},\r\n{\r\n 'EmployeeID': 13,\r\n 'Name': {\r\n 'LastName': 'xyz'\r\n },\r\n 'FirstName': 'Peacock',\r\n 'Title': 'Sales Manager',\r\n 'TitleOfCourtesy': 'Mrs.',\r\n 'BirthDate': new Date(-1018814400000),\r\n 'HireDate': new Date(736401600000),\r\n 'Address': '4110 Old Switzerland Rd.',\r\n 'City': 'Germany',\r\n 'Region': 'WA',\r\n 'PostalCode': '98052',\r\n 'Country': 'USA',\r\n 'HomePhone': '(206) 555-8122',\r\n 'Extension': '5176',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American \\\r\n Institute of Culinary Arts (1966). She was assigned to the Brazil office temporarily from July through November 1992.',\r\n 'ReportsTo': 2,\r\n 'PhotoPath': 'http://accweb/emmployees/peacock.bmp'\r\n},\r\n{\r\n 'EmployeeID': 14,\r\n 'Name': {\r\n 'LastName': 'yte'\r\n },\r\n 'FirstName': 'Margaret',\r\n 'Title': 'Sales Representative',\r\n 'TitleOfCourtesy': 'Mrs.',\r\n 'BirthDate': new Date(-1018814400000),\r\n 'HireDate': new Date(736401600000),\r\n 'Address': '4110 Old Switzerland Rd.',\r\n 'City': 'Switzerland',\r\n 'Region': 'WA',\r\n 'PostalCode': '98052',\r\n 'Country': 'USA',\r\n 'HomePhone': '(206) 555-8122',\r\n 'Extension': '5176',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American \\\r\n Institute of Culinary Arts (1966). She was assigned to the Brazil office temporarily from July through November 1992.',\r\n 'ReportsTo': 2,\r\n 'PhotoPath': 'http://accweb/emmployees/peacock.bmp'\r\n},\r\n{\r\n 'EmployeeID': 15,\r\n 'Name': {\r\n 'LastName': 'qwe'\r\n },\r\n 'FirstName': 'Steven',\r\n 'Title': 'Sales Manager',\r\n 'TitleOfCourtesy': 'Mr.',\r\n 'BirthDate': new Date(-468010800000),\r\n 'HireDate': new Date(750830400000),\r\n 'Address': '14 Garrett Hill',\r\n 'City': 'Brazil',\r\n 'Region': null,\r\n 'PostalCode':\r\n 'SW1 8JR',\r\n 'Country': 'UK',\r\n 'HomePhone': '(71) 555-4848',\r\n 'Extension': '3453',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Steven Buchanan graduated from St. Andrews University, Scotland, with a BSC degree in 1976. Upon joining the company as \\\r\n a sales representative in 1992, he spent 6 months in an orientation program at the Austria office and then returned to his permanent \\\r\n post in Brazil. He was promoted to sales manager in March 1993. Mr. Buchanan has completed the courses \\'Successful \\\r\n Telemarketing\\' and \\'International Sales Management.\\' He is fluent in French.',\r\n 'ReportsTo': 2,\r\n 'PhotoPath': 'http://accweb/emmployees/buchanan.bmp'\r\n},\r\n{\r\n 'EmployeeID': 16,\r\n 'Name': {\r\n 'LastName': 'trw'\r\n },\r\n 'FirstName': 'Michael',\r\n 'Title': 'Sales Representative',\r\n 'TitleOfCourtesy': 'Mr.',\r\n 'BirthDate': new Date(-205185600000),\r\n 'HireDate': new Date(750830400000),\r\n 'Address': 'Coventry House\\r\\nMiner Rd.',\r\n 'City': 'Brazil',\r\n 'Region': null,\r\n 'PostalCode': 'EC2 7JR',\r\n 'Country': 'UK',\r\n 'HomePhone': '(71) 555-7773',\r\n 'Extension': '428',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Michael is a graduate of Sussex University (MA, economics, 1983) and the University of California at Los Angeles \\\r\n (MBA, marketing, 1986). He has also taken the courses \\'Multi-Cultural Selling\\' and \\'Time Management for the Sales Professional.\\' \\\r\n He is fluent in Japanese and can read and write French, Portuguese, and Spanish.',\r\n 'ReportsTo': 5,\r\n 'PhotoPath': 'http://accweb/emmployees/davolio.bmp'\r\n},\r\n{\r\n 'EmployeeID': 17,\r\n 'Name': {\r\n 'LastName': 'cbe'\r\n },\r\n 'FirstName': 'Robert',\r\n 'Title': 'Sales Representative',\r\n 'TitleOfCourtesy': 'Mr.',\r\n 'BirthDate': new Date(-302731200000),\r\n 'HireDate': new Date(757486800000),\r\n 'Address': 'Edgeham Hollow\\r\\nWinchester Way',\r\n 'City': 'Brazil',\r\n 'Region': null,\r\n 'PostalCode': 'RG1 9SP',\r\n 'Country': 'UK',\r\n 'HomePhone': '(71) 555-5598',\r\n 'Extension': '465',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the \\\r\n University of Michigan in 1992, the year he joined the company. After completing a course entitled \\'Selling in Europe,\\' \\\r\n he was transferred to the Brazil office in March 1993.',\r\n 'ReportsTo': 5,\r\n 'PhotoPath': 'http://accweb/emmployees/davolio.bmp'\r\n},\r\n{\r\n 'EmployeeID': 18,\r\n 'Name': {\r\n 'LastName': 'dbc'\r\n },\r\n 'FirstName': 'Laura',\r\n 'Title': 'Inside Sales Coordinator',\r\n 'TitleOfCourtesy': 'Ms.',\r\n 'BirthDate': new Date(-377982000000),\r\n 'HireDate': new Date(762843600000),\r\n 'Address': '4726 - 11th Ave. N.E.',\r\n 'City': 'Austria',\r\n 'Region': 'WA',\r\n 'PostalCode': '98105',\r\n 'Country': 'USA',\r\n 'HomePhone': '(206) 555-1189',\r\n 'Extension': '2344',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Laura received a BA in psychology from the University of Washington. She has also completed a course in business \\\r\n French. She reads and writes French.',\r\n 'ReportsTo': 2,\r\n 'PhotoPath': 'http://accweb/emmployees/davolio.bmp'\r\n},\r\n{\r\n 'EmployeeID': 19,\r\n 'Name': {\r\n 'LastName': 'xyz'\r\n },\r\n 'FirstName': 'Anne',\r\n 'Title': 'Sales Representative',\r\n 'TitleOfCourtesy': 'Ms.',\r\n 'BirthDate': new Date(-123966000000),\r\n 'HireDate': new Date(784875600000),\r\n 'Address': '7 Houndstooth Rd.',\r\n 'City': 'Brazil',\r\n 'Region': null,\r\n 'PostalCode': 'WG2 7LT',\r\n 'Country': 'UK',\r\n 'HomePhone': '(71) 555-4444',\r\n 'Extension': '452',\r\n 'Photo': { 'Length': 21626 },\r\n\r\n 'Notes': 'Anne has a BA degree in English from St. Lawrence College. She is fluent in French and German.',\r\n 'ReportsTo': 5,\r\n 'PhotoPath': 'http://accweb/emmployees/davolio.bmp'\r\n}];\r\n","import { OrderData } from \"./db\";\r\nimport { DataUtil, Query, DataManager } from \"@syncfusion/ej2-data\";\r\n\r\nDataUtil.serverTimezoneOffset = 0;\r\n\r\nconst resolvers = {\r\n Query: {\r\n getOrders: (parent, { datamanager }, context, info) => {\r\n console.log(datamanager);\r\n let orders = [...OrderData];\r\n const query = new Query();\r\n\r\n const performFiltering = (filterString) => {\r\n const filter = JSON.parse(filterString);\r\n // Iterating over each predicate\r\n filter[0].predicates.forEach(predicate => {\r\n const field = predicate.field;\r\n const operator = predicate.operator;\r\n const value = predicate.value;\r\n query.where(field, operator, value);\r\n });\r\n }\r\n const performSearching = (searchParam) => {\r\n const { fields, key } = JSON.parse(searchParam)[0];\r\n query.search(key, fields);\r\n }\r\n const performSorting = (sorted) => {\r\n for (let i = 0; i < sorted.length; i++) {\r\n const { name, direction } = sorted[i];\r\n query.sortBy(name, direction);\r\n }\r\n }\r\n\r\n // Perform filtering\r\n if (datamanager.where) {\r\n performFiltering(datamanager.where);\r\n }\r\n\r\n // Perform Searching\r\n if (datamanager.search) {\r\n performSearching(datamanager.search);\r\n }\r\n\r\n // Perform sorting\r\n if (datamanager.sorted) {\r\n performSorting(datamanager.sorted);\r\n }\r\n\r\n orders = new DataManager(orders).executeLocal(query);\r\n var count = orders.length;\r\n\r\n // Perform paging\r\n if (datamanager.skip && datamanager.take) {\r\n const pageSkip = datamanager.skip / datamanager.take + 1;\r\n const pageTake = datamanager.take;\r\n query.page(pageSkip, pageTake);\r\n } else if (datamanager.skip === 0 && datamanager.take) {\r\n query.page(1, datamanager.take);\r\n }\r\n\r\n const currentResult = new DataManager(orders).executeLocal(query);\r\n return { result: currentResult, count: count }; // Return result and count separately\r\n },\r\n },\r\n Mutation: {\r\n createOrder: (parent, { value }, context, info) => {\r\n const newOrder = value;\r\n OrderData.push(newOrder);\r\n return newOrder;\r\n },\r\n updateOrder: (parent, { key, keyColumn, value }, context, info) => {\r\n let updatedOrder = OrderData.find(order => order.OrderID === parseInt(key));\r\n updatedOrder.CustomerID = value.CustomerID;\r\n updatedOrder.EmployeeID = value.EmployeeID;\r\n updatedOrder.Freight = value.Freight;\r\n updatedOrder.ShipCity = value.ShipCity;\r\n updatedOrder.ShipCountry = value.ShipCountry;\r\n return updatedOrder; // Make sure to return the updated order.\r\n },\r\n deleteOrder: (parent, { key, keyColumn, value }, context, info) => {\r\n const orderIndex = OrderData.findIndex(order => order.OrderID === parseInt(key));\r\n if (orderIndex === -1) throw new Error(\"Order not found.\" + value);\r\n const deletedOrders = OrderData.splice(orderIndex, 1);\r\n return deletedOrders[0];\r\n }\r\n }\r\n\r\n};\r\n\r\nexport default resolvers;","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"InputObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Sort\"},\"directives\":[],\"fields\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"direction\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}]},{\"kind\":\"InputObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Aggregate\"},\"directives\":[],\"fields\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"field\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}]},{\"kind\":\"InputObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"DataManager\"},\"directives\":[],\"fields\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"skip\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"take\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"sorted\"},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Sort\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"table\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"select\"},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"requiresCounts\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"aggregates\"},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Aggregate\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"params\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}]},{\"kind\":\"InputObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"OrderInput\"},\"directives\":[],\"fields\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"OrderID\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CustomerID\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"EmployeeID\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ShipCity\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ShipCountry\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}]},{\"kind\":\"ObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Order\"},\"interfaces\":[],\"directives\":[],\"fields\":[{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"OrderID\"},\"arguments\":[],\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CustomerID\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"EmployeeID\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ShipCity\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ShipCountry\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}]},{\"kind\":\"ObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ReturnType\"},\"interfaces\":[],\"directives\":[],\"fields\":[{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"result\"},\"arguments\":[],\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Order\"}}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"aggregates\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}]},{\"kind\":\"ObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Query\"},\"interfaces\":[],\"directives\":[],\"fields\":[{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"getOrders\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"datamanager\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"DataManager\"}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ReturnType\"}},\"directives\":[]}]},{\"kind\":\"ObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Mutation\"},\"interfaces\":[],\"directives\":[],\"fields\":[{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"createOrder\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"OrderInput\"}},\"directives\":[]}],\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Order\"}}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"updateOrder\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"key\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"keyColumn\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"OrderInput\"}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Order\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"deleteOrder\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"key\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"keyColumn\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"OrderInput\"}},\"directives\":[]}],\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Order\"}}},\"directives\":[]}]}],\"loc\":{\"start\":0,\"end\":1212}};\n doc.loc.source = {\"body\":\"#Grid Sort direction\\r\\n\\r\\ninput Sort {\\r\\n name: String!\\r\\n direction: String!\\r\\n} \\r\\n\\r\\n#Grid aggregates type\\r\\n\\r\\ninput Aggregate {\\r\\n field: String! \\r\\n type: String!\\r\\n}\\r\\n\\r\\n#Syncfusion DataManager query params\\r\\n\\r\\ninput DataManager {\\r\\n skip: Int\\r\\n take: Int\\r\\n sorted: [Sort]\\r\\n group: [String]\\r\\n table: String\\r\\n select: [String]\\r\\n where: String\\r\\n search: String\\r\\n requiresCounts: Boolean,\\r\\n aggregates: [Aggregate],\\r\\n params: String\\r\\n}\\r\\n\\r\\n# Grid field names\\r\\ninput OrderInput {\\r\\n OrderID: Int!\\r\\n CustomerID: String\\r\\n EmployeeID: Int\\r\\n ShipCity: String\\r\\n ShipCountry: String\\r\\n}\\r\\n\\r\\ntype Order {\\r\\n OrderID: Int!\\r\\n CustomerID: String\\r\\n EmployeeID: Int\\r\\n ShipCity: String\\r\\n ShipCountry: String\\r\\n}\\r\\n\\r\\n# need to return type as 'result (i.e, current pager data)' and count (i.e., total number of records in your database)\\r\\ntype ReturnType {\\r\\n result: [Order]\\r\\n count: Int\\r\\n aggregates: String\\r\\n}\\r\\n\\r\\ntype Query {\\r\\n getOrders(datamanager: DataManager): ReturnType \\r\\n}\\r\\ntype Mutation {\\r\\n\\r\\n createOrder(value: OrderInput): Order!\\r\\n updateOrder(key: Int!, keyColumn: String, value: OrderInput): Order\\r\\n deleteOrder(key: Int!, keyColumn: String, value: OrderInput): Order!\\r\\n}\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \r\n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \r\n\n module.exports = doc;\n \r\n","module.exports = require(\"@syncfusion/ej2-data\");","module.exports = require(\"apollo-server\");","module.exports = require(\"apollo-server-express\");","module.exports = require(\"babel-loader\");","module.exports = require(\"babel-preset-graphpack\");","module.exports = require(\"cosmiconfig\");","module.exports = require(\"friendly-errors-webpack-plugin\");","module.exports = require(\"fs\");","module.exports = require(\"path\");","module.exports = require(\"webpack\");","module.exports = require(\"webpack-node-externals\");"],"sourceRoot":""} \ No newline at end of file diff --git a/GraphQLAdaptor/GraphQLServer/package.json b/GraphQLAdaptor/GraphQLServer/package.json new file mode 100644 index 0000000..ef5c5a5 --- /dev/null +++ b/GraphQLAdaptor/GraphQLServer/package.json @@ -0,0 +1,18 @@ +{ + "name": "graphql-server", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "dev": "graphpack --port 4200", + "build": "graphpack build" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "graphpack": "^1.0.9" + }, + "dependencies": { + "@syncfusion/ej2-data": "21.2.3" + } +} diff --git a/GraphQLAdaptor/GraphQLServer/src/db.js b/GraphQLAdaptor/GraphQLServer/src/db.js new file mode 100644 index 0000000..4507b06 --- /dev/null +++ b/GraphQLAdaptor/GraphQLServer/src/db.js @@ -0,0 +1,612 @@ +export let users = [ + { id: 1, name: "John Doe", email: "john@gmail.com", age: 22 }, + { id: 2, name: "Jane Doe", email: "jane@gmail.com", age: 23 } + ]; + + export let OrderData = [ + { + OrderID: 10248, CustomerID: 'VINET', EmployeeID: 5, OrderDate: new Date("07 12 1996 02:00:23"), + ShipName: 'Vins et alcools Chevalier', ShipCity: 'Reims', ShipAddress: '59 rue de l Abbaye', + ShipRegion: 'CJ', ShipPostalCode: '51100', ShipCountry: 'France', Freight: 32.38, Verified: !0 + }, + { + OrderID: 10249, CustomerID: 'TOMSP', EmployeeID: 6, OrderDate: new Date("07 12 1996 00:03:23"), + ShipName: 'Toms Spezialitäten', ShipCity: 'Münster', ShipAddress: 'Luisenstr. 48', + ShipRegion: 'CJ', ShipPostalCode: '44087', ShipCountry: 'Germany', Freight: 11.61, Verified: !1 + }, + { + OrderID: 10250, CustomerID: 'HANAR', EmployeeID: 4, OrderDate: new Date("07 12 1996 00:00:23"), + ShipName: 'Hanari Carnes', ShipCity: 'Rio de Janeiro', ShipAddress: 'Rua do Paço, 67', + ShipRegion: 'RJ', ShipPostalCode: '05454-876', ShipCountry: 'Brazil', Freight: 65.83, Verified: !0 + }, + { + OrderID: 10251, CustomerID: 'VICTE', EmployeeID: 3, OrderDate: new Date(8367642e5), + ShipName: 'Victuailles en stock', ShipCity: 'Lyon', ShipAddress: '2, rue du Commerce', + ShipRegion: 'CJ', ShipPostalCode: '69004', ShipCountry: 'France', Freight: 41.34, Verified: !0 + }, + { + OrderID: 10252, CustomerID: 'SUPRD', EmployeeID: 4, OrderDate: new Date(8368506e5), + ShipName: 'Suprêmes délices', ShipCity: 'Charleroi', ShipAddress: 'Boulevard Tirou, 255', + ShipRegion: 'CJ', ShipPostalCode: 'B-6000', ShipCountry: 'Belgium', Freight: 51.3, Verified: !0 + }, + { + OrderID: 10253, CustomerID: 'HANAR', EmployeeID: 3, OrderDate: new Date(836937e6), + ShipName: 'Hanari Carnes', ShipCity: 'Rio de Janeiro', ShipAddress: 'Rua do Paço, 67', + ShipRegion: 'RJ', ShipPostalCode: '05454-876', ShipCountry: 'Brazil', Freight: 58.17, Verified: !0 + }, + { + OrderID: 10254, CustomerID: 'CHOPS', EmployeeID: 5, OrderDate: new Date(8370234e5), + ShipName: 'Chop-suey Chinese', ShipCity: 'Bern', ShipAddress: 'Hauptstr. 31', + ShipRegion: 'CJ', ShipPostalCode: '3012', ShipCountry: 'Switzerland', Freight: 22.98, Verified: !1 + }, + { + OrderID: 10255, CustomerID: 'RICSU', EmployeeID: 9, OrderDate: new Date(8371098e5), + ShipName: 'Richter Supermarkt', ShipCity: 'Genève', ShipAddress: 'Starenweg 5', + ShipRegion: 'CJ', ShipPostalCode: '1204', ShipCountry: 'Switzerland', Freight: 148.33, Verified: !0 + }, + { + OrderID: 10256, CustomerID: 'WELLI', EmployeeID: 3, OrderDate: new Date(837369e6), + ShipName: 'Wellington Importadora', ShipCity: 'Resende', ShipAddress: 'Rua do Mercado, 12', + ShipRegion: 'SP', ShipPostalCode: '08737-363', ShipCountry: 'Brazil', Freight: 13.97, Verified: !1 + }, + { + OrderID: 10257, CustomerID: 'HILAA', EmployeeID: 4, OrderDate: new Date(8374554e5), + ShipName: 'HILARION-Abastos', ShipCity: 'San Cristóbal', ShipAddress: 'Carrera 22 con Ave. Carlos Soublette #8-35', + ShipRegion: 'Táchira', ShipPostalCode: '5022', ShipCountry: 'Venezuela', Freight: 81.91, Verified: !0 + }, + { + OrderID: 10258, CustomerID: 'ERNSH', EmployeeID: 1, OrderDate: new Date(8375418e5), + ShipName: 'Ernst Handel', ShipCity: 'Graz', ShipAddress: 'Kirchgasse 6', + ShipRegion: 'CJ', ShipPostalCode: '8010', ShipCountry: 'Austria', Freight: 140.51, Verified: !0 + }, + { + OrderID: 10259, CustomerID: 'CENTC', EmployeeID: 4, OrderDate: new Date(8376282e5), + ShipName: 'Centro comercial Moctezuma', ShipCity: 'México D.F.', ShipAddress: 'Sierras de Granada 9993', + ShipRegion: 'CJ', ShipPostalCode: '05022', ShipCountry: 'Mexico', Freight: 3.25, Verified: !1 + }, + { + OrderID: 10260, CustomerID: 'OTTIK', EmployeeID: 4, OrderDate: new Date(8377146e5), + ShipName: 'Ottilies Käseladen', ShipCity: 'Köln', ShipAddress: 'Mehrheimerstr. 369', + ShipRegion: 'CJ', ShipPostalCode: '50739', ShipCountry: 'Germany', Freight: 55.09, Verified: !0 + }, + { + OrderID: 10261, CustomerID: 'QUEDE', EmployeeID: 4, OrderDate: new Date(8377146e5), + ShipName: 'Que Delícia', ShipCity: 'Rio de Janeiro', ShipAddress: 'Rua da Panificadora, 12', + ShipRegion: 'RJ', ShipPostalCode: '02389-673', ShipCountry: 'Brazil', Freight: 3.05, Verified: !1 + }, + { + OrderID: 10262, CustomerID: 'RATTC', EmployeeID: 8, OrderDate: new Date(8379738e5), + ShipName: 'Rattlesnake Canyon Grocery', ShipCity: 'Albuquerque', ShipAddress: '2817 Milton Dr.', + ShipRegion: 'NM', ShipPostalCode: '87110', ShipCountry: 'USA', Freight: 48.29, Verified: !0 + }, + { + OrderID: 10263, CustomerID: 'ERNSH', EmployeeID: 9, OrderDate: new Date(8380602e5), + ShipName: 'Ernst Handel', ShipCity: 'Graz', ShipAddress: 'Kirchgasse 6', ShipRegion: null, ShipPostalCode: '8010', ShipCountry: 'Austria', Freight: 146.06, Verified: !0 + }, { OrderID: 10264, CustomerID: 'FOLKO', EmployeeID: 6, OrderDate: new Date(8381466e5), ShipName: 'Folk och fä HB', ShipCity: 'Bräcke', ShipAddress: 'Åkergatan 24', ShipRegion: null, ShipPostalCode: 'S-844 67', ShipCountry: 'Sweden', Freight: 3.67, Verified: !1 }, { OrderID: 10265, CustomerID: 'BLONP', EmployeeID: 2, OrderDate: new Date(838233e6), ShipName: 'Blondel père et fils', ShipCity: 'Strasbourg', ShipAddress: '24, place Kléber', ShipRegion: null, ShipPostalCode: '67000', ShipCountry: 'France', Freight: 55.28, Verified: !0 }, { OrderID: 10266, CustomerID: 'WARTH', EmployeeID: 3, OrderDate: new Date(8383194e5), ShipName: 'Wartian Herkku', ShipCity: 'Oulu', ShipAddress: 'Torikatu 38', ShipRegion: null, ShipPostalCode: '90110', ShipCountry: 'Finland', Freight: 25.73, Verified: !1 }, { OrderID: 10267, CustomerID: 'FRANK', EmployeeID: 4, OrderDate: new Date(8385786e5), ShipName: 'Frankenversand', ShipCity: 'München', ShipAddress: 'Berliner Platz 43', ShipRegion: null, ShipPostalCode: '80805', ShipCountry: 'Germany', Freight: 208.58, Verified: !0 }, { OrderID: 10268, CustomerID: 'GROSR', EmployeeID: 8, OrderDate: new Date(838665e6), ShipName: 'GROSELLA-Restaurante', ShipCity: 'Caracas', ShipAddress: '5ª Ave. Los Palos Grandes', ShipRegion: 'DF', ShipPostalCode: '1081', ShipCountry: 'Venezuela', Freight: 66.29, Verified: !0 }, { OrderID: 10269, CustomerID: 'WHITC', EmployeeID: 5, OrderDate: new Date(8387514e5), ShipName: 'White Clover Markets', ShipCity: 'Austria', ShipAddress: '1029 - 12th Ave. S.', ShipRegion: 'WA', ShipPostalCode: '98124', ShipCountry: 'USA', Freight: 4.56, Verified: !1 }, { OrderID: 10270, CustomerID: 'WARTH', EmployeeID: 1, OrderDate: new Date(8388378e5), ShipName: 'Wartian Herkku', ShipCity: 'Oulu', ShipAddress: 'Torikatu 38', ShipRegion: null, ShipPostalCode: '90110', ShipCountry: 'Finland', Freight: 136.54, Verified: !0 }, { OrderID: 10271, CustomerID: 'SPLIR', EmployeeID: 6, OrderDate: new Date(8388378e5), ShipName: 'Split Rail Beer & Ale', ShipCity: 'Lander', ShipAddress: 'P.O. Box 555', ShipRegion: 'WY', ShipPostalCode: '82520', ShipCountry: 'USA', Freight: 4.54, Verified: !1 }, { OrderID: 10272, CustomerID: 'RATTC', EmployeeID: 6, OrderDate: new Date(8389242e5), ShipName: 'Rattlesnake Canyon Grocery', ShipCity: 'Albuquerque', ShipAddress: '2817 Milton Dr.', ShipRegion: 'NM', ShipPostalCode: '87110', ShipCountry: 'USA', Freight: 98.03, Verified: !0 }, { OrderID: 10273, CustomerID: 'QUICK', EmployeeID: 3, OrderDate: new Date(8391834e5), ShipName: 'QUICK-Stop', ShipCity: 'Cunewalde', ShipAddress: 'Taucherstraße 10', ShipRegion: null, ShipPostalCode: '01307', ShipCountry: 'Germany', Freight: 76.07, Verified: !0 }, { OrderID: 10274, CustomerID: 'VINET', EmployeeID: 6, OrderDate: new Date(8392698e5), ShipName: 'Vins et alcools Chevalier', ShipCity: 'Reims', ShipAddress: '59 rue de l Abbaye', ShipRegion: null, ShipPostalCode: '51100', ShipCountry: 'France', Freight: 6.01, Verified: !1 }, { OrderID: 10275, CustomerID: 'MAGAA', EmployeeID: 1, OrderDate: new Date(8393562e5), ShipName: 'Magazzini Alimentari Riuniti', ShipCity: 'Bergamo', ShipAddress: 'Via Ludovico il Moro 22', ShipRegion: null, ShipPostalCode: '24100', ShipCountry: 'Italy', Freight: 26.93, Verified: !1 }, { OrderID: 10276, CustomerID: 'TORTU', EmployeeID: 8, OrderDate: new Date(8394426e5), ShipName: 'Tortuga Restaurante', ShipCity: 'México D.F.', ShipAddress: 'Avda. Azteca 123', ShipRegion: null, ShipPostalCode: '05033', ShipCountry: 'Mexico', Freight: 13.84, Verified: !1 }, { OrderID: 10277, CustomerID: 'MORGK', EmployeeID: 2, OrderDate: new Date(839529e6), ShipName: 'Morgenstern Gesundkost', ShipCity: 'Leipzig', ShipAddress: 'Heerstr. 22', ShipRegion: null, ShipPostalCode: '04179', ShipCountry: 'Germany', Freight: 125.77, Verified: !0 }, { OrderID: 10278, CustomerID: 'BERGS', EmployeeID: 8, OrderDate: new Date(8397882e5), ShipName: 'Berglunds snabbköp', ShipCity: 'Luleå', ShipAddress: 'Berguvsvägen 8', ShipRegion: null, ShipPostalCode: 'S-958 22', ShipCountry: 'Sweden', Freight: 92.69, Verified: !0 }, { OrderID: 10279, CustomerID: 'LEHMS', EmployeeID: 8, OrderDate: new Date(8398746e5), ShipName: 'Lehmanns Marktstand', ShipCity: 'Frankfurt a.M.', ShipAddress: 'Magazinweg 7', ShipRegion: null, ShipPostalCode: '60528', ShipCountry: 'Germany', Freight: 25.83, Verified: !1 }, { OrderID: 10280, CustomerID: 'BERGS', EmployeeID: 2, OrderDate: new Date(839961e6), ShipName: 'Berglunds snabbköp', ShipCity: 'Luleå', ShipAddress: 'Berguvsvägen 8', ShipRegion: null, ShipPostalCode: 'S-958 22', ShipCountry: 'Sweden', Freight: 8.98, Verified: !1 }, { OrderID: 10281, CustomerID: 'ROMEY', EmployeeID: 4, OrderDate: new Date(839961e6), ShipName: 'Romero y tomillo', ShipCity: 'Madrid', ShipAddress: 'Gran Vía, 1', ShipRegion: null, ShipPostalCode: '28001', ShipCountry: 'Spain', Freight: 2.94, Verified: !1 }, { OrderID: 10282, CustomerID: 'ROMEY', EmployeeID: 4, OrderDate: new Date(8400474e5), ShipName: 'Romero y tomillo', ShipCity: 'Madrid', ShipAddress: 'Gran Vía, 1', ShipRegion: null, ShipPostalCode: '28001', ShipCountry: 'Spain', Freight: 12.69, Verified: !1 }, { OrderID: 10283, CustomerID: 'LILAS', EmployeeID: 3, OrderDate: new Date(8401338e5), ShipName: 'LILA-Supermercado', ShipCity: 'Barquisimeto', ShipAddress: 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', ShipRegion: 'Lara', ShipPostalCode: '3508', ShipCountry: 'Venezuela', Freight: 84.81, Verified: !0 }, { OrderID: 10284, CustomerID: 'LEHMS', EmployeeID: 4, OrderDate: new Date(840393e6), ShipName: 'Lehmanns Marktstand', ShipCity: 'Frankfurt a.M.', ShipAddress: 'Magazinweg 7', ShipRegion: null, ShipPostalCode: '60528', ShipCountry: 'Germany', Freight: 76.56, Verified: !0 }, { OrderID: 10285, CustomerID: 'QUICK', EmployeeID: 1, OrderDate: new Date(8404794e5), ShipName: 'QUICK-Stop', ShipCity: 'Cunewalde', ShipAddress: 'Taucherstraße 10', ShipRegion: null, ShipPostalCode: '01307', ShipCountry: 'Germany', Freight: 76.83, Verified: !0 }, { OrderID: 10286, CustomerID: 'QUICK', EmployeeID: 8, OrderDate: new Date(8405658e5), ShipName: 'QUICK-Stop', ShipCity: 'Cunewalde', ShipAddress: 'Taucherstraße 10', ShipRegion: null, ShipPostalCode: '01307', ShipCountry: 'Germany', Freight: 229.24, Verified: !0 }, { OrderID: 10287, CustomerID: 'RICAR', EmployeeID: 8, OrderDate: new Date(8406522e5), ShipName: 'Ricardo Adocicados', ShipCity: 'Rio de Janeiro', ShipAddress: 'Av. Copacabana, 267', ShipRegion: 'RJ', ShipPostalCode: '02389-890', ShipCountry: 'Brazil', Freight: 12.76, Verified: !1 }, { OrderID: 10288, CustomerID: 'REGGC', EmployeeID: 4, OrderDate: new Date(8407386e5), ShipName: 'Reggiani Caseifici', ShipCity: 'Reggio Emilia', ShipAddress: 'Strada Provinciale 124', ShipRegion: null, ShipPostalCode: '42100', ShipCountry: 'Italy', Freight: 7.45, Verified: !1 }, { OrderID: 10289, CustomerID: 'BSBEV', EmployeeID: 7, OrderDate: new Date(8409978e5), ShipName: 'Bs Beverages', ShipCity: 'Brazil', ShipAddress: 'Fauntleroy Circus', ShipRegion: null, ShipPostalCode: 'EC2 5NT', ShipCountry: 'UK', Freight: 22.77, Verified: !1 }, { OrderID: 10290, CustomerID: 'COMMI', EmployeeID: 8, OrderDate: new Date(8410842e5), ShipName: 'Comércio Mineiro', ShipCity: 'Sao Paulo', ShipAddress: 'Av. dos Lusíadas, 23', ShipRegion: 'SP', ShipPostalCode: '05432-043', ShipCountry: 'Brazil', Freight: 79.7, Verified: !0 }, { OrderID: 10291, CustomerID: 'QUEDE', EmployeeID: 6, OrderDate: new Date(8410842e5), ShipName: 'Que Delícia', ShipCity: 'Rio de Janeiro', ShipAddress: 'Rua da Panificadora, 12', ShipRegion: 'RJ', ShipPostalCode: '02389-673', ShipCountry: 'Brazil', Freight: 6.4, Verified: !1 }, { OrderID: 10292, CustomerID: 'TRADH', EmployeeID: 1, OrderDate: new Date(8411706e5), ShipName: 'Tradiçao Hipermercados', ShipCity: 'Sao Paulo', ShipAddress: 'Av. Inês de Castro, 414', ShipRegion: 'SP', ShipPostalCode: '05634-030', ShipCountry: 'Brazil', Freight: 1.35, Verified: !1 }, { OrderID: 10293, CustomerID: 'TORTU', EmployeeID: 1, OrderDate: new Date(841257e6), ShipName: 'Tortuga Restaurante', ShipCity: 'México D.F.', ShipAddress: 'Avda. Azteca 123', ShipRegion: null, ShipPostalCode: '05033', ShipCountry: 'Mexico', Freight: 21.18, Verified: !1 }, { OrderID: 10294, CustomerID: 'RATTC', EmployeeID: 4, OrderDate: new Date(8413434e5), ShipName: 'Rattlesnake Canyon Grocery', ShipCity: 'Albuquerque', ShipAddress: '2817 Milton Dr.', ShipRegion: 'NM', ShipPostalCode: '87110', ShipCountry: 'USA', Freight: 147.26, Verified: !0 }, { OrderID: 10295, CustomerID: 'VINET', EmployeeID: 2, OrderDate: new Date(8416026e5), ShipName: 'Vins et alcools Chevalier', ShipCity: 'Reims', ShipAddress: '59 rue de l Abbaye', ShipRegion: null, ShipPostalCode: '51100', ShipCountry: 'France', Freight: 1.15, Verified: !1 }, { OrderID: 10296, CustomerID: 'LILAS', EmployeeID: 6, OrderDate: new Date(841689e6), ShipName: 'LILA-Supermercado', ShipCity: 'Barquisimeto', ShipAddress: 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', ShipRegion: 'Lara', ShipPostalCode: '3508', ShipCountry: 'Venezuela', Freight: .12, Verified: !1 }, { OrderID: 10297, CustomerID: 'BLONP', EmployeeID: 5, OrderDate: new Date(8417754e5), ShipName: 'Blondel père et fils', ShipCity: 'Strasbourg', ShipAddress: '24, place Kléber', ShipRegion: null, ShipPostalCode: '67000', ShipCountry: 'France', Freight: 5.74, Verified: !1 }, { OrderID: 10298, CustomerID: 'HUNGO', EmployeeID: 6, OrderDate: new Date(8418618e5), ShipName: 'Hungry Owl All-Night Grocers', ShipCity: 'Cork', ShipAddress: '8 Johnstown Road', ShipRegion: 'Co. Cork', ShipPostalCode: null, ShipCountry: 'Ireland', Freight: 168.22, Verified: !0 }, { OrderID: 10299, CustomerID: 'RICAR', EmployeeID: 4, OrderDate: new Date(8419482e5), ShipName: 'Ricardo Adocicados', ShipCity: 'Rio de Janeiro', ShipAddress: 'Av. Copacabana, 267', ShipRegion: 'RJ', ShipPostalCode: '02389-890', ShipCountry: 'Brazil', Freight: 29.76, Verified: !1 }, { OrderID: 10300, CustomerID: 'MAGAA', EmployeeID: 2, OrderDate: new Date(8422074e5), ShipName: 'Magazzini Alimentari Riuniti', ShipCity: 'Bergamo', ShipAddress: 'Via Ludovico il Moro 22', ShipRegion: null, ShipPostalCode: '24100', ShipCountry: 'Italy', Freight: 17.68, Verified: !1 }, { OrderID: 10301, CustomerID: 'WANDK', EmployeeID: 8, OrderDate: new Date(8422074e5), ShipName: 'Die Wandernde Kuh', ShipCity: 'Stuttgart', ShipAddress: 'Adenauerallee 900', ShipRegion: null, ShipPostalCode: '70563', ShipCountry: 'Germany', Freight: 45.08, Verified: !0 }, { OrderID: 10302, CustomerID: 'SUPRD', EmployeeID: 4, OrderDate: new Date(8422938e5), ShipName: 'Suprêmes délices', ShipCity: 'Charleroi', ShipAddress: 'Boulevard Tirou, 255', ShipRegion: null, ShipPostalCode: 'B-6000', ShipCountry: 'Belgium', Freight: 6.27, Verified: !1 }, { OrderID: 10303, CustomerID: 'GODOS', EmployeeID: 7, OrderDate: new Date(8423802e5), ShipName: 'Godos Cocina Típica', ShipCity: 'Sevilla', ShipAddress: 'C/ Romero, 33', ShipRegion: null, ShipPostalCode: '41101', ShipCountry: 'Spain', Freight: 107.83, Verified: !0 }, { OrderID: 10304, CustomerID: 'TORTU', EmployeeID: 1, OrderDate: new Date(8424666e5), ShipName: 'Tortuga Restaurante', ShipCity: 'México D.F.', ShipAddress: 'Avda. Azteca 123', ShipRegion: null, ShipPostalCode: '05033', ShipCountry: 'Mexico', Freight: 63.79, Verified: !0 }, { OrderID: 10305, CustomerID: 'OLDWO', EmployeeID: 8, OrderDate: new Date(842553e6), ShipName: 'Old World Delicatessen', ShipCity: 'Anchorage', ShipAddress: '2743 Bering St.', ShipRegion: 'AK', ShipPostalCode: '99508', ShipCountry: 'USA', Freight: 257.62, Verified: !0 }, { OrderID: 10306, CustomerID: 'ROMEY', EmployeeID: 1, OrderDate: new Date(8428122e5), ShipName: 'Romero y tomillo', ShipCity: 'Madrid', ShipAddress: 'Gran Vía, 1', ShipRegion: null, ShipPostalCode: '28001', ShipCountry: 'Spain', Freight: 7.56, Verified: !1 }, { OrderID: 10307, CustomerID: 'LONEP', EmployeeID: 2, OrderDate: new Date(8428986e5), ShipName: 'Lonesome Pine Restaurant', ShipCity: 'Portland', ShipAddress: '89 Chiaroscuro Rd.', ShipRegion: 'OR', ShipPostalCode: '97219', ShipCountry: 'USA', Freight: .56, Verified: !1 }, { OrderID: 10308, CustomerID: 'ANATR', EmployeeID: 7, OrderDate: new Date(842985e6), ShipName: 'Ana Trujillo Emparedados y helados', ShipCity: 'México D.F.', ShipAddress: 'Avda. de la Constitución 2222', ShipRegion: null, ShipPostalCode: '05021', ShipCountry: 'Mexico', Freight: 1.61, Verified: !1 }, { OrderID: 10309, CustomerID: 'HUNGO', EmployeeID: 3, OrderDate: new Date(8430714e5), ShipName: 'Hungry Owl All-Night Grocers', ShipCity: 'Cork', ShipAddress: '8 Johnstown Road', ShipRegion: 'Co. Cork', ShipPostalCode: null, ShipCountry: 'Ireland', Freight: 47.3, Verified: !0 }, { OrderID: 10310, CustomerID: 'THEBI', EmployeeID: 8, OrderDate: new Date(8431578e5), ShipName: 'The Big Cheese', ShipCity: 'Portland', ShipAddress: '89 Jefferson Way Suite 2', ShipRegion: 'OR', ShipPostalCode: '97201', ShipCountry: 'USA', Freight: 17.52, Verified: !1 }, { OrderID: 10311, CustomerID: 'DUMON', EmployeeID: 1, OrderDate: new Date(8431578e5), ShipName: 'Du monde entier', ShipCity: 'Nantes', ShipAddress: '67, rue des Cinquante Otages', ShipRegion: null, ShipPostalCode: '44000', ShipCountry: 'France', Freight: 24.69, Verified: !1 }, { OrderID: 10312, CustomerID: 'WANDK', EmployeeID: 2, OrderDate: new Date(843417e6), ShipName: 'Die Wandernde Kuh', ShipCity: 'Stuttgart', ShipAddress: 'Adenauerallee 900', ShipRegion: null, ShipPostalCode: '70563', ShipCountry: 'Germany', Freight: 40.26, Verified: !0 }, { OrderID: 10313, CustomerID: 'QUICK', EmployeeID: 2, OrderDate: new Date(8435034e5), ShipName: 'QUICK-Stop', ShipCity: 'Cunewalde', ShipAddress: 'Taucherstraße 10', ShipRegion: null, ShipPostalCode: '01307', ShipCountry: 'Germany', Freight: 1.96, Verified: !1 }, { OrderID: 10314, CustomerID: 'RATTC', EmployeeID: 1, OrderDate: new Date(8435898e5), ShipName: 'Rattlesnake Canyon Grocery', ShipCity: 'Albuquerque', ShipAddress: '2817 Milton Dr.', ShipRegion: 'NM', ShipPostalCode: '87110', ShipCountry: 'USA', Freight: 74.16, Verified: !0 }, { OrderID: 10315, CustomerID: 'ISLAT', EmployeeID: 4, OrderDate: new Date(8436762e5), ShipName: 'Island Trading', ShipCity: 'Cowes', ShipAddress: 'Garden House Crowther Way', ShipRegion: 'Isle of Wight', ShipPostalCode: 'PO31 7PJ', ShipCountry: 'UK', Freight: 41.76, Verified: !0 }, { OrderID: 10316, CustomerID: 'RATTC', EmployeeID: 1, OrderDate: new Date(8437626e5), ShipName: 'Rattlesnake Canyon Grocery', ShipCity: 'Albuquerque', ShipAddress: '2817 Milton Dr.', ShipRegion: 'NM', ShipPostalCode: '87110', ShipCountry: 'USA', Freight: 150.15, Verified: !0 }, { OrderID: 10317, CustomerID: 'LONEP', EmployeeID: 6, OrderDate: new Date(8440218e5), ShipName: 'Lonesome Pine Restaurant', ShipCity: 'Portland', ShipAddress: '89 Chiaroscuro Rd.', ShipRegion: 'OR', ShipPostalCode: '97219', ShipCountry: 'USA', Freight: 12.69, Verified: !1 }, { OrderID: 10318, CustomerID: 'ISLAT', EmployeeID: 8, OrderDate: new Date(8441082e5), ShipName: 'Island Trading', ShipCity: 'Cowes', ShipAddress: 'Garden House Crowther Way', ShipRegion: 'Isle of Wight', ShipPostalCode: 'PO31 7PJ', ShipCountry: 'UK', Freight: 4.73, Verified: !1 }]; + + export let virtualData = []; +export function dataSource() { + let names = ['VINET', 'TOMSP', 'HANAR', 'VICTE', 'SUPRD', 'HANAR', 'CHOPS', 'RICSU', 'WELLI', 'HILAA', 'ERNSH', 'CENTC', + 'OTTIK', 'QUEDE', 'RATTC', 'ERNSH', 'FOLKO', 'BLONP', 'WARTH', 'FRANK', 'GROSR', 'WHITC', 'WARTH', 'SPLIR', 'RATTC', 'QUICK', 'VINET', + 'MAGAA', 'TORTU', 'MORGK', 'BERGS', 'LEHMS', 'BERGS', 'ROMEY', 'ROMEY', 'LILAS', 'LEHMS', 'QUICK', 'QUICK', 'RICAR', 'REGGC', 'BSBEV', + 'COMMI', 'QUEDE', 'TRADH', 'TORTU', 'RATTC', 'VINET', 'LILAS', 'BLONP', 'HUNGO', 'RICAR', 'MAGAA', 'WANDK', 'SUPRD', 'GODOS', 'TORTU', + 'OLDWO', 'ROMEY', 'LONEP', 'ANATR', 'HUNGO', 'THEBI', 'DUMON', 'WANDK', 'QUICK', 'RATTC', 'ISLAT', 'RATTC', 'LONEP', 'ISLAT', 'TORTU', + 'WARTH', 'ISLAT', 'PERIC', 'KOENE', 'SAVEA', 'KOENE', 'BOLID', 'FOLKO', 'FURIB', 'SPLIR', 'LILAS', 'BONAP', 'MEREP', 'WARTH', 'VICTE', + 'HUNGO', 'PRINI', 'FRANK', 'OLDWO', 'MEREP', 'BONAP', 'SIMOB', 'FRANK', 'LEHMS', 'WHITC', 'QUICK', 'RATTC', 'FAMIA']; + const sport = ['Cricket', 'Football', 'Tennis', 'Golf', 'Chess', 'Dodgeball', 'Racket', 'Archery', 'Climbing', 'Hunting', 'Carrom', 'Tag', 'Novuss', + 'Subbuteo', 'Baseball', 'Madden NFL', 'Shuffleboard', 'Badminton', 'Hockey', 'Volleyball', 'Table Tennis', 'Golf', 'Cycling', 'Running', 'Walking', 'Wireball', + 'Town ball', 'Tee ball', 'Stool ball', 'Stick ball']; + const country = ['India', 'Australia', 'Ballesteros', 'Belgium', 'Brazil', 'England', 'Ethiopia', 'Finland', 'France', 'Germany', 'Britain', + 'Argentina', 'Jamaica', 'Kenya', 'Morocco', 'Ireland', 'Norway', 'Philippines', 'Portugal', 'Romania', 'Russia', 'Scotland', 'Scottish', 'Serbia', 'Spain', + 'Sweden', 'Switzerland', 'Netherlands', 'UK', 'Ukraine', 'US', 'Wales', 'West Indies', 'China', 'Hong Kong', 'Italy', 'Philippines', 'Turkey', 'Botswana', + 'Sri Lanka', 'Algeria', 'Bangladesh', 'Egypt', 'Malaysia']; + for (let i = 0; i < 100000; i++) { + virtualData.push({ + 'SNo': i + 1, + 'FIELD1': names[Math.floor(Math.random() * names.length)], + 'FIELD2': 1967 + (i % 10), + 'FIELD3': sport[Math.floor(Math.random() * sport.length)], + 'FIELD4': country[Math.floor(Math.random() * country.length)], + 'FIELD5': Math.floor(Math.random() * 2000), + 'FIELD6': Math.floor(Math.random() * 1000), + 'FIELD7': Math.floor(Math.random() * 100), + 'FIELD8': Math.floor(Math.random() * 10), + 'FIELD9': Math.floor(Math.random() * 10), + 'FIELD10': Math.floor(Math.random() * 100), + 'FIELD11': Math.floor(Math.random() * 100), + 'FIELD12': Math.floor(Math.random() * 1000), + 'FIELD13': Math.floor(Math.random() * 10), + 'FIELD14': Math.floor(Math.random() * 10), + 'FIELD15': Math.floor(Math.random() * 1000), + 'FIELD16': Math.floor(Math.random() * 200), + 'FIELD17': Math.floor(Math.random() * 300), + 'FIELD18': Math.floor(Math.random() * 400), + 'FIELD19': Math.floor(Math.random() * 500), + 'FIELD20': Math.floor(Math.random() * 700), + 'FIELD21': Math.floor(Math.random() * 800), + 'FIELD22': Math.floor(Math.random() * 1000), + 'FIELD23': Math.floor(Math.random() * 2000), + 'FIELD24': Math.floor(Math.random() * 150), + 'FIELD25': Math.floor(Math.random() * 1000), + 'FIELD26': Math.floor(Math.random() * 100), + 'FIELD27': Math.floor(Math.random() * 400), + 'FIELD28': Math.floor(Math.random() * 600), + 'FIELD29': Math.floor(Math.random() * 500), + 'FIELD30': Math.floor(Math.random() * 300), + }); + } +} + + + +export let employeeData = [{ + 'EmployeeID': 1, + 'Name': { + 'LastName': 'abc' + }, + 'FirstName': 'Nancy', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-664743600000), + 'HireDate': new Date(704692800000), + 'Address': '507 - 20th Ave. E.\r\nApt. 2A', + 'City': 'Austria', + 'Region': 'WA', + 'PostalCode': '98122', + 'Country': 'USA', + 'HomePhone': '(206) 555-9857', + 'Extension': '5467', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Education includes a BA in psychology from Colorado State University in 1970. She also completed\ + \'The Art of the Cold Call.\' Nancy is a member of Toastmasters International.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, +{ + 'EmployeeID': 2, + 'Name': { + 'LastName': 'cde' + }, + 'FirstName': 'Andrew', + 'Title': 'Vice President, Sales', + 'TitleOfCourtesy': 'Dr.', + 'BirthDate': new Date(-563828400000), + 'HireDate': new Date(713764800000), + 'Address': '908 W. Capital Way', + 'City': 'Germany', + 'Region': 'WA', + 'PostalCode': '98401', + 'Country': 'USA', + 'HomePhone': '(206) 555-9482', + 'Extension': '3457', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of \ + Dallas in 1981. He is fluent in French and Italian and reads German. He joined the company as a sales representative, \ + was promoted to sales manager in January 1992 and to vice president of sales in March 1993. Andrew is a member of the \ + Sales Management Roundtable, the Austria Chamber of Commerce, and the Pacific Rim Importers Association.', + 'ReportsTo': 0, + 'PhotoPath': 'http://accweb/emmployees/fuller.bmp' +}, +{ + 'EmployeeID': 3, + 'Name': { + 'LastName': 'wqe' + }, + 'FirstName': 'Janet', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-200088000000), + 'HireDate': new Date(702104400000), + 'Address': '722 Moss Bay Blvd.', + 'City': 'France', + 'Region': 'WA', + 'PostalCode': '98033', + 'Country': 'USA', + 'HomePhone': '(206) 555-3412', + 'Extension': '3355', + 'Photo': { 'Length': 21722 }, + + 'Notes': 'Janet has a BS degree in chemistry from Boston College (1984). \ + She has also completed a certificate program in food retailing management.\ + Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/leverling.bmp' +}, +{ + 'EmployeeID': 4, + 'Name': { + 'LastName': 'yte' + }, + 'FirstName': 'Margaret', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Mrs.', + 'BirthDate': new Date(-1018814400000), + 'HireDate': new Date(736401600000), + 'Address': '4110 Old Switzerland Rd.', + 'City': 'Switzerland', + 'Region': 'WA', + 'PostalCode': '98052', + 'Country': 'USA', + 'HomePhone': '(206) 555-8122', + 'Extension': '5176', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American \ + Institute of Culinary Arts (1966). She was assigned to the Brazil office temporarily from July through November 1992.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/peacock.bmp' +}, +{ + 'EmployeeID': 5, + 'Name': { + 'LastName': 'qwe' + }, + 'FirstName': 'Steven', + 'Title': 'Sales Manager', + 'TitleOfCourtesy': 'Mr.', + 'BirthDate': new Date(-468010800000), + 'HireDate': new Date(750830400000), + 'Address': '14 Garrett Hill', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': + 'SW1 8JR', + 'Country': 'UK', + 'HomePhone': '(71) 555-4848', + 'Extension': '3453', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Steven Buchanan graduated from St. Andrews University, Scotland, with a BSC degree in 1976. Upon joining the company as \ + a sales representative in 1992, he spent 6 months in an orientation program at the Austria office and then returned to his permanent \ + post in Brazil. He was promoted to sales manager in March 1993. Mr. Buchanan has completed the courses \'Successful \ + Telemarketing\' and \'International Sales Management.\' He is fluent in French.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/buchanan.bmp' +}, +{ + 'EmployeeID': 6, + 'Name': { + 'LastName': 'trw' + }, + 'FirstName': 'Michael', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Mr.', + 'BirthDate': new Date(-205185600000), + 'HireDate': new Date(750830400000), + 'Address': 'Coventry House\r\nMiner Rd.', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'EC2 7JR', + 'Country': 'UK', + 'HomePhone': '(71) 555-7773', + 'Extension': '428', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Michael is a graduate of Sussex University (MA, economics, 1983) and the University of California at Los Angeles \ + (MBA, marketing, 1986). He has also taken the courses \'Multi-Cultural Selling\' and \'Time Management for the Sales Professional.\' \ + He is fluent in Japanese and can read and write French, Portuguese, and Spanish.', + 'ReportsTo': 5, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, +{ + 'EmployeeID': 7, + 'Name': { + 'LastName': 'cbe' + }, + 'FirstName': 'Robert', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Mr.', + 'BirthDate': new Date(-302731200000), + 'HireDate': new Date(757486800000), + 'Address': 'Edgeham Hollow\r\nWinchester Way', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'RG1 9SP', + 'Country': 'UK', + 'HomePhone': '(71) 555-5598', + 'Extension': '465', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the \ + University of Michigan in 1992, the year he joined the company. After completing a course entitled \'Selling in Europe,\' \ + he was transferred to the Brazil office in March 1993.', + 'ReportsTo': 5, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, +{ + 'EmployeeID': 8, + 'Name': { + 'LastName': 'dbc' + }, + 'FirstName': 'Laura', + 'Title': 'Inside Sales Coordinator', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-377982000000), + 'HireDate': new Date(762843600000), + 'Address': '4726 - 11th Ave. N.E.', + 'City': 'Austria', + 'Region': 'WA', + 'PostalCode': '98105', + 'Country': 'USA', + 'HomePhone': '(206) 555-1189', + 'Extension': '2344', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Laura received a BA in psychology from the University of Washington. She has also completed a course in business \ + French. She reads and writes French.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, +{ + 'EmployeeID': 9, + 'Name': { + 'LastName': 'xyz' + }, + 'FirstName': 'Anne', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-123966000000), + 'HireDate': new Date(784875600000), + 'Address': '7 Houndstooth Rd.', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'WG2 7LT', + 'Country': 'UK', + 'HomePhone': '(71) 555-4444', + 'Extension': '452', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Anne has a BA degree in English from St. Lawrence College. She is fluent in French and German.', + 'ReportsTo': 5, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, + +{ + 'EmployeeID': 10, + 'Name': { + 'LastName': 'abc' + }, + 'FirstName': 'Nancy', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-664743600000), + 'HireDate': new Date(704692800000), + 'Address': '507 - 20th Ave. E.\r\nApt. 2A', + 'City': 'Austria', + 'Region': 'WA', + 'PostalCode': '98122', + 'Country': 'USA', + 'HomePhone': '(206) 555-9857', + 'Extension': '5467', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Education includes a BA in psychology from Colorado State University in 1970. She also completed\ + \'The Art of the Cold Call.\' Nancy is a member of Toastmasters International.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, +{ + 'EmployeeID': 11, + 'Name': { + 'LastName': 'cde' + }, + 'FirstName': 'Andrew', + 'Title': 'Vice President, Sales', + 'TitleOfCourtesy': 'Dr.', + 'BirthDate': new Date(-563828400000), + 'HireDate': new Date(713764800000), + 'Address': '908 W. Capital Way', + 'City': 'Germany', + 'Region': 'WA', + 'PostalCode': '98401', + 'Country': 'USA', + 'HomePhone': '(206) 555-9482', + 'Extension': '3457', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of \ + Dallas in 1981. He is fluent in French and Italian and reads German. He joined the company as a sales representative, \ + was promoted to sales manager in January 1992 and to vice president of sales in March 1993. Andrew is a member of the \ + Sales Management Roundtable, the Austria Chamber of Commerce, and the Pacific Rim Importers Association.', + 'ReportsTo': 0, + 'PhotoPath': 'http://accweb/emmployees/fuller.bmp' +}, +{ + 'EmployeeID': 12, + 'Name': { + 'LastName': 'wqe' + }, + 'FirstName': 'Janet', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-200088000000), + 'HireDate': new Date(702104400000), + 'Address': '722 Moss Bay Blvd.', + 'City': 'France', + 'Region': 'WA', + 'PostalCode': '98033', + 'Country': 'USA', + 'HomePhone': '(206) 555-3412', + 'Extension': '3355', + 'Photo': { 'Length': 21722 }, + + 'Notes': 'Janet has a BS degree in chemistry from Boston College (1984). \ + She has also completed a certificate program in food retailing management.\ + Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/leverling.bmp' +}, +{ + 'EmployeeID': 13, + 'Name': { + 'LastName': 'xyz' + }, + 'FirstName': 'Peacock', + 'Title': 'Sales Manager', + 'TitleOfCourtesy': 'Mrs.', + 'BirthDate': new Date(-1018814400000), + 'HireDate': new Date(736401600000), + 'Address': '4110 Old Switzerland Rd.', + 'City': 'Germany', + 'Region': 'WA', + 'PostalCode': '98052', + 'Country': 'USA', + 'HomePhone': '(206) 555-8122', + 'Extension': '5176', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American \ + Institute of Culinary Arts (1966). She was assigned to the Brazil office temporarily from July through November 1992.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/peacock.bmp' +}, +{ + 'EmployeeID': 14, + 'Name': { + 'LastName': 'yte' + }, + 'FirstName': 'Margaret', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Mrs.', + 'BirthDate': new Date(-1018814400000), + 'HireDate': new Date(736401600000), + 'Address': '4110 Old Switzerland Rd.', + 'City': 'Switzerland', + 'Region': 'WA', + 'PostalCode': '98052', + 'Country': 'USA', + 'HomePhone': '(206) 555-8122', + 'Extension': '5176', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American \ + Institute of Culinary Arts (1966). She was assigned to the Brazil office temporarily from July through November 1992.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/peacock.bmp' +}, +{ + 'EmployeeID': 15, + 'Name': { + 'LastName': 'qwe' + }, + 'FirstName': 'Steven', + 'Title': 'Sales Manager', + 'TitleOfCourtesy': 'Mr.', + 'BirthDate': new Date(-468010800000), + 'HireDate': new Date(750830400000), + 'Address': '14 Garrett Hill', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': + 'SW1 8JR', + 'Country': 'UK', + 'HomePhone': '(71) 555-4848', + 'Extension': '3453', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Steven Buchanan graduated from St. Andrews University, Scotland, with a BSC degree in 1976. Upon joining the company as \ + a sales representative in 1992, he spent 6 months in an orientation program at the Austria office and then returned to his permanent \ + post in Brazil. He was promoted to sales manager in March 1993. Mr. Buchanan has completed the courses \'Successful \ + Telemarketing\' and \'International Sales Management.\' He is fluent in French.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/buchanan.bmp' +}, +{ + 'EmployeeID': 16, + 'Name': { + 'LastName': 'trw' + }, + 'FirstName': 'Michael', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Mr.', + 'BirthDate': new Date(-205185600000), + 'HireDate': new Date(750830400000), + 'Address': 'Coventry House\r\nMiner Rd.', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'EC2 7JR', + 'Country': 'UK', + 'HomePhone': '(71) 555-7773', + 'Extension': '428', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Michael is a graduate of Sussex University (MA, economics, 1983) and the University of California at Los Angeles \ + (MBA, marketing, 1986). He has also taken the courses \'Multi-Cultural Selling\' and \'Time Management for the Sales Professional.\' \ + He is fluent in Japanese and can read and write French, Portuguese, and Spanish.', + 'ReportsTo': 5, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, +{ + 'EmployeeID': 17, + 'Name': { + 'LastName': 'cbe' + }, + 'FirstName': 'Robert', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Mr.', + 'BirthDate': new Date(-302731200000), + 'HireDate': new Date(757486800000), + 'Address': 'Edgeham Hollow\r\nWinchester Way', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'RG1 9SP', + 'Country': 'UK', + 'HomePhone': '(71) 555-5598', + 'Extension': '465', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the \ + University of Michigan in 1992, the year he joined the company. After completing a course entitled \'Selling in Europe,\' \ + he was transferred to the Brazil office in March 1993.', + 'ReportsTo': 5, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, +{ + 'EmployeeID': 18, + 'Name': { + 'LastName': 'dbc' + }, + 'FirstName': 'Laura', + 'Title': 'Inside Sales Coordinator', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-377982000000), + 'HireDate': new Date(762843600000), + 'Address': '4726 - 11th Ave. N.E.', + 'City': 'Austria', + 'Region': 'WA', + 'PostalCode': '98105', + 'Country': 'USA', + 'HomePhone': '(206) 555-1189', + 'Extension': '2344', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Laura received a BA in psychology from the University of Washington. She has also completed a course in business \ + French. She reads and writes French.', + 'ReportsTo': 2, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}, +{ + 'EmployeeID': 19, + 'Name': { + 'LastName': 'xyz' + }, + 'FirstName': 'Anne', + 'Title': 'Sales Representative', + 'TitleOfCourtesy': 'Ms.', + 'BirthDate': new Date(-123966000000), + 'HireDate': new Date(784875600000), + 'Address': '7 Houndstooth Rd.', + 'City': 'Brazil', + 'Region': null, + 'PostalCode': 'WG2 7LT', + 'Country': 'UK', + 'HomePhone': '(71) 555-4444', + 'Extension': '452', + 'Photo': { 'Length': 21626 }, + + 'Notes': 'Anne has a BA degree in English from St. Lawrence College. She is fluent in French and German.', + 'ReportsTo': 5, + 'PhotoPath': 'http://accweb/emmployees/davolio.bmp' +}]; diff --git a/GraphQLAdaptor/GraphQLServer/src/resolvers.js b/GraphQLAdaptor/GraphQLServer/src/resolvers.js new file mode 100644 index 0000000..c4f8487 --- /dev/null +++ b/GraphQLAdaptor/GraphQLServer/src/resolvers.js @@ -0,0 +1,90 @@ +import { OrderData } from "./db"; +import { DataUtil, Query, DataManager } from "@syncfusion/ej2-data"; + +DataUtil.serverTimezoneOffset = 0; + +const resolvers = { + Query: { + getOrders: (parent, { datamanager }, context, info) => { + console.log(datamanager); + let orders = [...OrderData]; + const query = new Query(); + + const performFiltering = (filterString) => { + const filter = JSON.parse(filterString); + // Iterating over each predicate + filter[0].predicates.forEach(predicate => { + const field = predicate.field; + const operator = predicate.operator; + const value = predicate.value; + query.where(field, operator, value); + }); + } + const performSearching = (searchParam) => { + const { fields, key } = JSON.parse(searchParam)[0]; + query.search(key, fields); + } + const performSorting = (sorted) => { + for (let i = 0; i < sorted.length; i++) { + const { name, direction } = sorted[i]; + query.sortBy(name, direction); + } + } + + // Perform filtering + if (datamanager.where) { + performFiltering(datamanager.where); + } + + // Perform Searching + if (datamanager.search) { + performSearching(datamanager.search); + } + + // Perform sorting + if (datamanager.sorted) { + performSorting(datamanager.sorted); + } + + orders = new DataManager(orders).executeLocal(query); + var count = orders.length; + + // Perform paging + if (datamanager.skip && datamanager.take) { + const pageSkip = datamanager.skip / datamanager.take + 1; + const pageTake = datamanager.take; + query.page(pageSkip, pageTake); + } else if (datamanager.skip === 0 && datamanager.take) { + query.page(1, datamanager.take); + } + + const currentResult = new DataManager(orders).executeLocal(query); + return { result: currentResult, count: count }; // Return result and count separately + }, + }, + Mutation: { + createOrder: (parent, { value }, context, info) => { + const newOrder = value; + OrderData.push(newOrder); + return newOrder; + }, + updateOrder: (parent, { key, keyColumn, value }, context, info) => { + let updatedOrder = OrderData.find(order => order.OrderID === parseInt(key)); + updatedOrder.CustomerID = value.CustomerID; + updatedOrder.EmployeeID = value.EmployeeID; + updatedOrder.Freight = value.Freight; + updatedOrder.ShipCity = value.ShipCity; + updatedOrder.ShipCountry = value.ShipCountry; + return updatedOrder; // Make sure to return the updated order. + }, + deleteOrder: (parent, { key, keyColumn, value }, context, info) => { + const orderIndex = OrderData.findIndex(order => order.OrderID === parseInt(key)); + if (orderIndex === -1) throw new Error("Order not found." + value); + const deletedOrders = OrderData.splice(orderIndex, 1); + return deletedOrders[0]; + } + } + +}; + +export default resolvers; \ No newline at end of file diff --git a/GraphQLAdaptor/GraphQLServer/src/schema.graphql b/GraphQLAdaptor/GraphQLServer/src/schema.graphql new file mode 100644 index 0000000..fa0c849 --- /dev/null +++ b/GraphQLAdaptor/GraphQLServer/src/schema.graphql @@ -0,0 +1,63 @@ +#Grid Sort direction + +input Sort { + name: String! + direction: String! +} + +#Grid aggregates type + +input Aggregate { + field: String! + type: String! +} + +#Syncfusion DataManager query params + +input DataManager { + skip: Int + take: Int + sorted: [Sort] + group: [String] + table: String + select: [String] + where: String + search: String + requiresCounts: Boolean, + aggregates: [Aggregate], + params: String +} + +# Grid field names +input OrderInput { + OrderID: Int! + CustomerID: String + EmployeeID: Int + ShipCity: String + ShipCountry: String +} + +type Order { + OrderID: Int! + CustomerID: String + EmployeeID: Int + ShipCity: String + ShipCountry: String +} + +# need to return type as 'result (i.e, current pager data)' and count (i.e., total number of records in your database) +type ReturnType { + result: [Order] + count: Int + aggregates: String +} + +type Query { + getOrders(datamanager: DataManager): ReturnType +} +type Mutation { + + createOrder(value: OrderInput): Order! + updateOrder(key: Int!, keyColumn: String, value: OrderInput): Order + deleteOrder(key: Int!, keyColumn: String, value: OrderInput): Order! +} \ No newline at end of file diff --git a/GraphQLAdaptor/GridClient/index.css b/GraphQLAdaptor/GridClient/index.css new file mode 100644 index 0000000..e69de29 diff --git a/GraphQLAdaptor/GridClient/index.html b/GraphQLAdaptor/GridClient/index.html new file mode 100644 index 0000000..4b34faa --- /dev/null +++ b/GraphQLAdaptor/GridClient/index.html @@ -0,0 +1,35 @@ + + + + + EJ2 Grid + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + \ No newline at end of file diff --git a/GraphQLAdaptor/GridClient/index.js b/GraphQLAdaptor/GridClient/index.js new file mode 100644 index 0000000..bfea2e7 --- /dev/null +++ b/GraphQLAdaptor/GridClient/index.js @@ -0,0 +1,57 @@ +var data = new ej.data.DataManager({ + url: "http://localhost:4200/", // xxxx represents the port number + adaptor: new ej.data.GraphQLAdaptor({ + response: { + result: 'getOrders.result',// Retrieve the actual order data + count: 'getOrders.count' // Retrieve the total count of orders + }, + // GraphQL query to fetch orders + query: `query getOrders($datamanager: DataManager) { + getOrders(datamanager: $datamanager) { + count, + result{ + OrderID, CustomerID, EmployeeID, ShipCountry} + } + }`, + + // mutation for performing CRUD + getMutation: function (action) { + if (action === 'insert') { + return `mutation CreateOrderMutation($value: OrderInput!){ + createOrder(value: $value){ + OrderID, CustomerID, ShipCity, ShipCountry + }}`; + } + if (action === 'update') { + return `mutation UpdateOrderMutation($key: Int!, $keyColumn: String,$value: OrderInput){ + updateOrder(key: $key, keyColumn: $keyColumn, value: $value) { + OrderID, CustomerID, ShipCity, ShipCountry + } + }`; + } else { + return `mutation RemoveOrderMutation($key: Int!, $keyColumn: String, $value: OrderInput){ + deleteOrder(key: $key, keyColumn: $keyColumn, value: $value) { + OrderID, CustomerID, ShipCity, ShipCountry + } + }`; + } + } + }), +}); +ej.grids.Grid.Inject(ej.grids.Edit, ej.grids.Toolbar, ej.grids.Sort, ej.grids.Page, ej.grids.Filter); +var grid = new ej.grids.Grid({ + dataSource: data, + allowPaging: true, + allowSorting: true, + allowFiltering: true, + toolbar: ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Search'], + editSettings: { allowAdding: true, allowDeleting: true, allowEditing: true, }, + columns: [ + { field: 'OrderID', headerText: 'Order ID', textAlign: 'Right', width: 120, type: 'number', isPrimaryKey: true }, + { field: 'CustomerID', width: 140, headerText: 'Customer ID', type: 'string' }, + { field: 'EmployeeID', headerText: 'Employee ID', textAlign: 'Right', width: 120 }, + { field: 'ShipCountry', headerText: 'Ship Country', width: 140 } + ] +}); + +grid.appendTo('#Grid'); \ No newline at end of file diff --git a/GraphQLAdaptor/README.md b/GraphQLAdaptor/README.md new file mode 100644 index 0000000..9c29dfc --- /dev/null +++ b/GraphQLAdaptor/README.md @@ -0,0 +1,39 @@ +# Connecting GraphQL Service with Javascript Grid Control + +GraphQL is a powerful query language for APIs, designed to provide a more efficient alternative to traditional REST APIs. It allows you to precisely fetch the data you need, reducing over-fetching and under-fetching of data. GraphQL provides a flexible and expressive syntax for querying, enabling clients to request only the specific data they require. + +Syncfusion’s Grid component seamlessly integrates with GraphQL servers using the GraphQLAdaptor in the DataManager. This specialized adaptor simplifies the interaction between the Syncfusion Grid and GraphQL servers, allowing efficient data retrieval with support for various operations like CRUD (Create, Read, Update, Delete), paging, sorting, and filtering. + +## Add Syncfusion Grid component in your application + +Refer the following UG documenation for adding Syncfusion Grid component in your application +* [Getting Started of Syncfusion Javascript Grid component](https://ej2.syncfusion.com/javascript/documentation/grid/getting-started) + +## GraphQL Server setup + +You can setup GraphQL server by using `graphpack` npm package. Find the following link for getting more details for your reference. + +* [graphpack npm package](https://www.npmjs.com/package/graphpack) + +## Run the GraphQL Server + +To run the server, install the required packages using the following command: + +```bash +npm install +``` +Then, start the server with: +```bash +npm run dev +``` +## Run the client Grid application + +Open `index.html` in a web browser to run the client-side Syncfusion Grid application. + +## Resources + +You can also refer the below resources to know more details about Syncfusion Javascript Grid components. + +* [Demo](https://ej2.syncfusion.com/javascript/demos/#/bootstrap/grid/over-view) +* [Documentation](https://ej2.syncfusion.com/javascript/documentation/grid/getting-started) +* [GraphQL with Syncfusion DataManager](https://ej2.syncfusion.com/javascript/documentation/grid/connecting-to-adaptors/graphql-adaptor) \ No newline at end of file diff --git a/ODataV4Adaptor/ODataV4Adaptor.sln b/ODataV4Adaptor/ODataV4Adaptor.sln new file mode 100644 index 0000000..5553f2e --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34728.123 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ODataV4Adaptor", "ODataV4Adaptor\ODataV4Adaptor.csproj", "{74ADB429-2FE7-4393-977B-D519A96C236C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {74ADB429-2FE7-4393-977B-D519A96C236C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {74ADB429-2FE7-4393-977B-D519A96C236C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {74ADB429-2FE7-4393-977B-D519A96C236C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {74ADB429-2FE7-4393-977B-D519A96C236C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3927FC0F-643B-423D-B5D3-E6D66A7D9934} + EndGlobalSection +EndGlobal diff --git a/ODataV4Adaptor/ODataV4Adaptor/Controllers/OrdersController.cs b/ODataV4Adaptor/ODataV4Adaptor/Controllers/OrdersController.cs new file mode 100644 index 0000000..ca688ea --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor/Controllers/OrdersController.cs @@ -0,0 +1,80 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.OData.Query; +using Microsoft.AspNetCore.OData.Routing.Controllers; +using ODataV4Adaptor.Models; + +namespace OdataV4Adaptor.Controllers +{ + + public class OrdersController : Controller + { + /// + /// Retrieves all orders. + /// + /// The collection of orders. + [HttpGet] + [EnableQuery] + public IActionResult Get() + { + var data = OrdersDetails.GetAllRecords().AsQueryable(); + return Ok(data); + } + + /// + /// Inserts a new order to the collection. + /// + /// The order to be inserted. + /// It returns the newly inserted record detail. + [HttpPost] + [EnableQuery] + public IActionResult Post([FromBody] OrdersDetails addRecord) + { + if (addRecord == null) + { + return BadRequest("Null order"); + } + OrdersDetails.GetAllRecords().Insert(0, addRecord); + return Json(addRecord); + } + + /// + /// Updates an existing order. + /// + /// The ID of the order to update. + /// The updated order details. + /// It returns the updated order details. + [HttpPatch("{key}")] + public IActionResult Patch(int key, [FromBody] OrdersDetails updateRecord) + { + if (updateRecord == null) + { + return BadRequest("No records"); + } + var existingOrder = OrdersDetails.GetAllRecords().FirstOrDefault(order => order.OrderID == key); + if (existingOrder != null) + { + // If the order exists, update its properties + existingOrder.CustomerID = updateRecord.CustomerID ?? existingOrder.CustomerID; + existingOrder.EmployeeID = updateRecord.EmployeeID ?? existingOrder.EmployeeID; + existingOrder.ShipCountry = updateRecord.ShipCountry ?? existingOrder.ShipCountry; + } + return Json(updateRecord); + } + + /// + /// Deletes an order. + /// + /// The ID of the order to delete. + /// It returns the deleted record detail + [HttpDelete("{key}")] + public IActionResult Delete(int key) + { + var deleteRecord = OrdersDetails.GetAllRecords().FirstOrDefault(order => order.OrderID == key); + if (deleteRecord != null) + { + OrdersDetails.GetAllRecords().Remove(deleteRecord); + } + return Json(deleteRecord); + } + } +} \ No newline at end of file diff --git a/ODataV4Adaptor/ODataV4Adaptor/Controllers/WeatherForecastController.cs b/ODataV4Adaptor/ODataV4Adaptor/Controllers/WeatherForecastController.cs new file mode 100644 index 0000000..6f2b375 --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor/Controllers/WeatherForecastController.cs @@ -0,0 +1,33 @@ +using Microsoft.AspNetCore.Mvc; + +namespace ODataV4Adaptor.Controllers +{ + [ApiController] + [Route("[controller]")] + public class WeatherForecastController : ControllerBase + { + private static readonly string[] Summaries = new[] + { + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" + }; + + private readonly ILogger _logger; + + public WeatherForecastController(ILogger logger) + { + _logger = logger; + } + + [HttpGet(Name = "GetWeatherForecast")] + public IEnumerable Get() + { + return Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), + TemperatureC = Random.Shared.Next(-20, 55), + Summary = Summaries[Random.Shared.Next(Summaries.Length)] + }) + .ToArray(); + } + } +} diff --git a/ODataV4Adaptor/ODataV4Adaptor/Models/OrdersDetails.cs b/ODataV4Adaptor/ODataV4Adaptor/Models/OrdersDetails.cs new file mode 100644 index 0000000..1a82cf7 --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor/Models/OrdersDetails.cs @@ -0,0 +1,47 @@ +using System.ComponentModel.DataAnnotations; + +namespace ODataV4Adaptor.Models +{ + public class OrdersDetails + { + public static List order = new List(); + public OrdersDetails() + { + + } + public OrdersDetails( + int OrderID, string CustomerId, int EmployeeId, string ShipCountry) + { + this.OrderID = OrderID; + this.CustomerID = CustomerId; + this.EmployeeID = EmployeeId; + this.ShipCountry = ShipCountry; + } + + public static List GetAllRecords() + { + if (order.Count() == 0) + { + int code = 10000; + for (int i = 1; i < 10; i++) + { + order.Add(new OrdersDetails(code + 1, "ALFKI", i + 0, "Denmark")); + order.Add(new OrdersDetails(code + 2, "ANATR", i + 2, "Brazil")); + order.Add(new OrdersDetails(code + 3, "ANTON", i + 1, "Germany")); + order.Add(new OrdersDetails(code + 4, "BLONP", i + 3, "Austria")); + order.Add(new OrdersDetails(code + 5, "BOLID", i + 4, "Switzerland")); + code += 5; + } + } + return order; + } + [Key] + public int? OrderID { get; set; } + [Required] + public string? CustomerID { get; set; } + [Required] + public int? EmployeeID { get; set; } + [Required] + public string? ShipCountry { get; set; } + } +} \ No newline at end of file diff --git a/ODataV4Adaptor/ODataV4Adaptor/ODataV4Adaptor.csproj b/ODataV4Adaptor/ODataV4Adaptor/ODataV4Adaptor.csproj new file mode 100644 index 0000000..665e3d0 --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor/ODataV4Adaptor.csproj @@ -0,0 +1,14 @@ + + + + net8.0 + enable + enable + + + + + + + + diff --git a/ODataV4Adaptor/ODataV4Adaptor/ODataV4Adaptor.csproj.user b/ODataV4Adaptor/ODataV4Adaptor/ODataV4Adaptor.csproj.user new file mode 100644 index 0000000..9ff5820 --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor/ODataV4Adaptor.csproj.user @@ -0,0 +1,6 @@ + + + + https + + \ No newline at end of file diff --git a/ODataV4Adaptor/ODataV4Adaptor/ODataV4Adaptor.http b/ODataV4Adaptor/ODataV4Adaptor/ODataV4Adaptor.http new file mode 100644 index 0000000..dd84837 --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor/ODataV4Adaptor.http @@ -0,0 +1,6 @@ +@ODataV4Adaptor_HostAddress = http://localhost:5063 + +GET {{ODataV4Adaptor_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/ODataV4Adaptor/ODataV4Adaptor/Program.cs b/ODataV4Adaptor/ODataV4Adaptor/Program.cs new file mode 100644 index 0000000..7921b76 --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor/Program.cs @@ -0,0 +1,49 @@ +using Microsoft.AspNetCore.OData; +using Microsoft.OData.ModelBuilder; +using ODataV4Adaptor.Models; + +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. + +builder.Services.AddControllers(); +// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +// Create an ODataConventionModelBuilder to build the OData model +var modelBuilder = new ODataConventionModelBuilder(); + +// Register the "Orders" entity set with the OData model builder +modelBuilder.EntitySet("Orders"); + +// Add controllers with OData support to the service collection + +var recordCount = OrdersDetails.GetAllRecords().Count; +builder.Services.AddControllers().AddOData( + options => options + .Count() + .Filter() //searching and filtering + .Select() + .Expand() + .OrderBy() + .SetMaxTop(recordCount) + .AddRouteComponents("odata", modelBuilder.GetEdmModel())); + +var app = builder.Build(); +app.UseDefaultFiles(); +app.UseStaticFiles(); +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); diff --git a/ODataV4Adaptor/ODataV4Adaptor/Properties/launchSettings.json b/ODataV4Adaptor/ODataV4Adaptor/Properties/launchSettings.json new file mode 100644 index 0000000..9cec739 --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor/Properties/launchSettings.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:13228", + "sslPort": 44361 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5063", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + // "launchUrl": "swagger", + "applicationUrl": "https://localhost:7116;http://localhost:5063", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/ODataV4Adaptor/ODataV4Adaptor/WeatherForecast.cs b/ODataV4Adaptor/ODataV4Adaptor/WeatherForecast.cs new file mode 100644 index 0000000..3bcb960 --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor/WeatherForecast.cs @@ -0,0 +1,13 @@ +namespace ODataV4Adaptor +{ + public class WeatherForecast + { + public DateOnly Date { get; set; } + + public int TemperatureC { get; set; } + + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); + + public string? Summary { get; set; } + } +} diff --git a/ODataV4Adaptor/ODataV4Adaptor/appsettings.Development.json b/ODataV4Adaptor/ODataV4Adaptor/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/ODataV4Adaptor/ODataV4Adaptor/appsettings.json b/ODataV4Adaptor/ODataV4Adaptor/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/ODataV4Adaptor/ODataV4Adaptor/wwwroot/index.html b/ODataV4Adaptor/ODataV4Adaptor/wwwroot/index.html new file mode 100644 index 0000000..af4cffe --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor/wwwroot/index.html @@ -0,0 +1,33 @@ + + + + EJ2 Grid + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + \ No newline at end of file diff --git a/ODataV4Adaptor/ODataV4Adaptor/wwwroot/js/index.js b/ODataV4Adaptor/ODataV4Adaptor/wwwroot/js/index.js new file mode 100644 index 0000000..5009bc8 --- /dev/null +++ b/ODataV4Adaptor/ODataV4Adaptor/wwwroot/js/index.js @@ -0,0 +1,21 @@ +var data = new ej.data.DataManager({ + url: 'https://localhost:7116/odata/orders', // Here xxxx represents the port number + adaptor: new ej.data.ODataV4Adaptor() +}); +ej.grids.Grid.Inject(ej.grids.Toolbar, ej.grids.Filter, ej.grids.Sort, ej.grids.Page, ej.grids.Edit); +var grid = new ej.grids.Grid({ + dataSource: data, + allowFiltering: true, + allowSorting:true, + toolbar: ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Search'], + filterSettings: { type:'Excel' }, + editSettings: { allowAdding: true, allowDeleting: true, allowEditing: true }, + columns: [ + { field: 'OrderID', headerText: 'Order ID', textAlign: 'Right', width: 120, isPrimaryKey: true, type: 'number' }, + { field: 'CustomerID', width: 140, headerText: 'Customer ID', type: 'string' }, + { field: 'EmployeeID', headerText: 'Employee ID', width: 140 }, + { field: 'ShipCountry', headerText: 'ShipCountry', width: 140 } + ] +}); + +grid.appendTo('#Grid'); \ No newline at end of file diff --git a/ODataV4Adaptor/README.md b/ODataV4Adaptor/README.md new file mode 100644 index 0000000..225701b --- /dev/null +++ b/ODataV4Adaptor/README.md @@ -0,0 +1,34 @@ +# ODataV4Adaptor in Syncfusion Grid Component + +The ODataV4Adaptor in the Syncfusion Grid Component allows seamless integration of the Grid with OData v4 services, enabling efficient data fetching and manipulation. This guide provides detailed instructions on binding data and performing CRUD (Create, Read, Update, Delete) actions using the ODataV4Adaptor in your Syncfusion Grid Component. + +## Getting Started + +**1. Clone the Repository:** + +Use `git clone` to fetch the repository from GitHub. + +```bash +https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-javascript-data-grid.git +``` + +**2. Open and Build the Project:** + +* Open the project in Visual Studio. +* Build the project to restore dependencies and compile it. +* Run the project + +**3. Explore the Code:** + +* Navigate to JavaScript files (typically in wwwroot). +* Debug and interact with the code as needed. + +![Adaptors](../assets/images/adaptor-crud-operation.gif) + +## Resources + +You can also refer the below resources to know more details about Syncfusion Javascript Grid components. + +* [Demo](https://ej2.syncfusion.com/javascript/demos/#/bootstrap/grid/over-view) +* [Documentation](https://ej2.syncfusion.com/javascript/documentation/grid/getting-started) +* [GraphQL with Syncfusion DataManager](https://ej2.syncfusion.com/javascript/documentation/grid/connecting-to-adaptors/odatav4-adaptor) \ No newline at end of file diff --git a/README.md b/README.md index aaf73ca..cb6db25 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,60 @@ -# Binding-data-from-remote-service-to-javascript-data-grid -Discover seamless remote data integration with Syncfusion EJ2 Javascript Grid in this sample repository. Explore efficient techniques for handling filtering, sorting, paging operations, and CRUD operations within your Javascript applications, empowering you to manage and display data effectively. +# Binding data from remote service to javascript data grid + +## Overview + +This repository demonstrates how to bind data from various remote services to a Syncfusion Essential JS 2 (EJ2) JavaScript Data Grid. It provides examples for integrating data using different adaptors and showcases techniques for handling filtering, sorting, paging, and CRUD operations within JavaScript applications. By exploring this repository, you will learn how to efficiently manage and display data in your applications. + +## Features + +**Remote Data Integration:** Seamlessly bind data from various remote services to the Syncfusion EJ2 JavaScript Grid. + +**Data Operations:** Handle filtering, sorting, and paging operations with ease. + +**CRUD Operations:** Implement Create, Read, Update, and Delete operations. + +**Adaptors:** Examples of different adaptors to integrate remote data: +* UrlAdaptor +* WebApiAdaptor +* WebMethodAdaptor +* ODataV4Adaptor +* GraphQLAdaptor +* RemoteSaveAdaptor + +## Prerequisites + +Before you begin, ensure you have met the following requirements: + +* Node.js and npm installed + +* Basic knowledge of JavaScript and web development + +## Getting Started + +**1. Clone the Repository:** + +Use `git clone` to fetch the repository from GitHub. + +```bash +https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-javascript-data-grid.git +``` + +**2. Open and Build the Project:** + +* Open the project in Visual Studio. +* Build the project to restore dependencies and compile it. +* Run the project + +**3. Explore the Code:** + +* Navigate to JavaScript files (typically in wwwroot). +* Debug and interact with the code as needed. + +![Adaptors](./assets/images/adaptor-crud-operation.gif) + +## Resources + +You can also refer the below resources to know more details about Syncfusion Javascript Grid components. + +* [Demo](https://ej2.syncfusion.com/javascript/demos/#/bootstrap/grid/over-view) +* [Documentation](https://ej2.syncfusion.com/javascript/documentation/grid/getting-started) +* [GraphQL with Syncfusion DataManager](https://ej2.syncfusion.com/javascript/documentation/grid/connecting-to-adaptors) \ No newline at end of file diff --git a/RemoteSaveAdaptor/README.md b/RemoteSaveAdaptor/README.md new file mode 100644 index 0000000..bba9809 --- /dev/null +++ b/RemoteSaveAdaptor/README.md @@ -0,0 +1,34 @@ +# Binding and perform CRUD operation using RemoteSaveAdaptor + +The RemoteSaveAdaptor in Syncfusion Grid Component allows you to perform grid actions such as sorting, filtering, searching and paging primarily on the client-side while handling CRUD operations, such as updating, inserting, and removing data, on the server-side for data persistence. This approach optimizes your experience by minimizing unnecessary server interactions. + +## Getting Started + +**1. Clone the Repository:** + +Use `git clone` to fetch the repository from GitHub. + +```bash +https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-javascript-data-grid.git +``` + +**2. Open and Build the Project:** + +* Open the project in Visual Studio. +* Build the project to restore dependencies and compile it. +* Run the project + +**3. Explore the Code:** + +* Navigate to JavaScript files (typically in wwwroot). +* Debug and interact with the code as needed. + +![Adaptors](../assets/images/adaptor-crud-operation.gif) + +## Resources + +You can also refer the below resources to know more details about Syncfusion Javascript Grid components. + +* [Demo](https://ej2.syncfusion.com/javascript/demos/#/bootstrap/grid/over-view) +* [Documentation](https://ej2.syncfusion.com/javascript/documentation/grid/getting-started) +* [GraphQL with Syncfusion DataManager](https://ej2.syncfusion.com/javascript/documentation/grid/connecting-to-adaptors/remote-save-adaptor) \ No newline at end of file diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor.sln b/RemoteSaveAdaptor/RemoteSaveAdaptor.sln new file mode 100644 index 0000000..a62c2ba --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34728.123 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RemoteSaveAdaptor", "RemoteSaveAdaptor\RemoteSaveAdaptor.csproj", "{195AC7C8-3117-493B-8DA1-CA6F5764AB65}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {195AC7C8-3117-493B-8DA1-CA6F5764AB65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {195AC7C8-3117-493B-8DA1-CA6F5764AB65}.Debug|Any CPU.Build.0 = Debug|Any CPU + {195AC7C8-3117-493B-8DA1-CA6F5764AB65}.Release|Any CPU.ActiveCfg = Release|Any CPU + {195AC7C8-3117-493B-8DA1-CA6F5764AB65}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6C46EAAC-6A39-444D-B3CB-DC9AFD316546} + EndGlobalSection +EndGlobal diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor/Controllers/OrdersController.cs b/RemoteSaveAdaptor/RemoteSaveAdaptor/Controllers/OrdersController.cs new file mode 100644 index 0000000..87e3c44 --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor/Controllers/OrdersController.cs @@ -0,0 +1,93 @@ +using Microsoft.AspNetCore.Mvc; +using RemoteSaveAdaptor.Models; + +namespace RemoteSaveAdaptor.Controllers +{ + [ApiController] + public class OrdersController : Controller + { + [HttpPost] + [Route("api/[controller]")] + public object Post() + { + // Retrieve data from the data source (e.g., database) + IQueryable DataSource = GetOrderData().AsQueryable(); + + // Get the total records count + int totalRecordsCount = DataSource.Count(); + + // Return data based on the request + return new { result = DataSource, count = totalRecordsCount }; + } + + [HttpGet] + [Route("api/[controller]")] + public List GetOrderData() + { + var data = OrdersDetails.GetAllRecords().ToList(); + return data; + } + + [HttpPost] + [Route("api/Orders/Insert")] + public ActionResult Insert([FromBody] CRUDModel newRecord) + { + if (newRecord.value != null) + { + OrdersDetails.GetAllRecords().Insert(0, newRecord.value); + } + + return Json(newRecord.value); + } + + [HttpPost] + [Route("api/Orders/Update")] + public object Update([FromBody] CRUDModel updatedRecord) + { + var updatedOrder = updatedRecord.value; + if (updatedOrder != null) + { + var data = OrdersDetails.GetAllRecords().FirstOrDefault(or => or.OrderID == updatedOrder.OrderID); + if (data != null) + { + // Update the existing record + data.OrderID = updatedOrder.OrderID; + data.CustomerID = updatedOrder.CustomerID; + data.Freight = updatedOrder.Freight; + data.ShipCity = updatedOrder.ShipCity; + data.ShipCountry = updatedOrder.ShipCountry; + data.Verified = updatedOrder.Verified; + + // Update other properties similarly + } + } + return updatedRecord; + } + + [HttpPost] + [Route("api/Orders/Remove")] + public object Remove([FromBody] CRUDModel deletedRecord) + { + int orderId = int.Parse(deletedRecord.key.ToString()); // get key value from the deletedRecord + var data = OrdersDetails.GetAllRecords().FirstOrDefault(orderData => orderData.OrderID == orderId); + if (data != null) + { + // Remove the record from the data collection + OrdersDetails.GetAllRecords().Remove(data); + } + return deletedRecord; + } + + public class CRUDModel where T : class + { + public string? action { get; set; } + public string? keyColumn { get; set; } + public object? key { get; set; } + public T? value { get; set; } + public List? added { get; set; } + public List? changed { get; set; } + public List? deleted { get; set; } + public IDictionary? @params { get; set; } + } + } +} \ No newline at end of file diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor/Controllers/WeatherForecastController.cs b/RemoteSaveAdaptor/RemoteSaveAdaptor/Controllers/WeatherForecastController.cs new file mode 100644 index 0000000..87abc62 --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor/Controllers/WeatherForecastController.cs @@ -0,0 +1,33 @@ +using Microsoft.AspNetCore.Mvc; + +namespace RemoteSaveAdaptor.Controllers +{ + [ApiController] + [Route("[controller]")] + public class WeatherForecastController : ControllerBase + { + private static readonly string[] Summaries = new[] + { + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" + }; + + private readonly ILogger _logger; + + public WeatherForecastController(ILogger logger) + { + _logger = logger; + } + + [HttpGet(Name = "GetWeatherForecast")] + public IEnumerable Get() + { + return Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), + TemperatureC = Random.Shared.Next(-20, 55), + Summary = Summaries[Random.Shared.Next(Summaries.Length)] + }) + .ToArray(); + } + } +} diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor/Models/OrdersDetails.cs b/RemoteSaveAdaptor/RemoteSaveAdaptor/Models/OrdersDetails.cs new file mode 100644 index 0000000..74ca816 --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor/Models/OrdersDetails.cs @@ -0,0 +1,57 @@ +using System.ComponentModel.DataAnnotations; + +namespace RemoteSaveAdaptor.Models +{ + public class OrdersDetails + { + public static List order = new List(); + public OrdersDetails() + { + + } + public OrdersDetails(int OrderID, string CustomerId, int EmployeeId, double Freight, bool Verified, DateTime OrderDate, string ShipCity, string ShipName, string ShipCountry, DateTime ShippedDate, string ShipAddress) + { + this.OrderID = OrderID; + this.CustomerID = CustomerId; + this.EmployeeID = EmployeeId; + this.Freight = Freight; + this.ShipCity = ShipCity; + this.Verified = Verified; + this.OrderDate = OrderDate; + this.ShipName = ShipName; + this.ShipCountry = ShipCountry; + this.ShippedDate = ShippedDate; + this.ShipAddress = ShipAddress; + } + + public static List GetAllRecords() + { + if (order.Count() == 0) + { + int code = 10000; + for (int i = 1; i <= 2000; i++) + { + order.Add(new OrdersDetails(code + 1, "ALFKI", i + 0, 2.3 * i, false, new DateTime(1991, 05, 15), "Berlin", "Simons bistro", "Denmark", new DateTime(1996, 7, 16), "Kirchgasse 6")); + order.Add(new OrdersDetails(code + 2, "ANATR", i + 2, 3.3 * i, true, new DateTime(1990, 04, 04), "Madrid", "Queen Cozinha", "Brazil", new DateTime(1996, 9, 11), "Avda. Azteca 123")); + order.Add(new OrdersDetails(code + 3, "ANTON", i + 1, 4.3 * i, true, new DateTime(1957, 11, 30), "Cholchester", "Frankenversand", "Germany", new DateTime(1996, 10, 7), "Carrera 52 con Ave. Bolívar #65-98 Llano Largo")); + order.Add(new OrdersDetails(code + 4, "BLONP", i + 3, 5.3 * i, false, new DateTime(1930, 10, 22), "Marseille", "Ernst Handel", "Austria", new DateTime(1996, 12, 30), "Magazinweg 7")); + order.Add(new OrdersDetails(code + 5, "BOLID", i + 4, 6.3 * i, true, new DateTime(1953, 02, 18), "Tsawassen", "Hanari Carnes", "Switzerland", new DateTime(1997, 12, 3), "1029 - 12th Ave. S.")); + code += 5; + } + } + return order; + } + [Key] + public int OrderID { get; set; } + public string? CustomerID { get; set; } + public int? EmployeeID { get; set; } + public double? Freight { get; set; } + public string? ShipCity { get; set; } + public bool? Verified { get; set; } + public DateTime? OrderDate { get; set; } + public string? ShipName { get; set; } + public string? ShipCountry { get; set; } + public DateTime? ShippedDate { get; set; } + public string? ShipAddress { get; set; } + } +} \ No newline at end of file diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor/Program.cs b/RemoteSaveAdaptor/RemoteSaveAdaptor/Program.cs new file mode 100644 index 0000000..da665c9 --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor/Program.cs @@ -0,0 +1,27 @@ +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. + +builder.Services.AddControllers(); +// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +var app = builder.Build(); + +app.UseDefaultFiles(); +app.UseStaticFiles(); +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor/Properties/launchSettings.json b/RemoteSaveAdaptor/RemoteSaveAdaptor/Properties/launchSettings.json new file mode 100644 index 0000000..744b996 --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor/Properties/launchSettings.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:2914", + "sslPort": 44380 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5151", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + //"launchUrl": "swagger", + "applicationUrl": "https://localhost:7035;http://localhost:5151", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor/RemoteSaveAdaptor.csproj b/RemoteSaveAdaptor/RemoteSaveAdaptor/RemoteSaveAdaptor.csproj new file mode 100644 index 0000000..dbedb64 --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor/RemoteSaveAdaptor.csproj @@ -0,0 +1,13 @@ + + + + net8.0 + enable + enable + + + + + + + diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor/RemoteSaveAdaptor.csproj.user b/RemoteSaveAdaptor/RemoteSaveAdaptor/RemoteSaveAdaptor.csproj.user new file mode 100644 index 0000000..9ff5820 --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor/RemoteSaveAdaptor.csproj.user @@ -0,0 +1,6 @@ + + + + https + + \ No newline at end of file diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor/RemoteSaveAdaptor.http b/RemoteSaveAdaptor/RemoteSaveAdaptor/RemoteSaveAdaptor.http new file mode 100644 index 0000000..a4ad4d6 --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor/RemoteSaveAdaptor.http @@ -0,0 +1,6 @@ +@RemoteSaveAdaptor_HostAddress = http://localhost:5151 + +GET {{RemoteSaveAdaptor_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor/WeatherForecast.cs b/RemoteSaveAdaptor/RemoteSaveAdaptor/WeatherForecast.cs new file mode 100644 index 0000000..4b81244 --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor/WeatherForecast.cs @@ -0,0 +1,13 @@ +namespace RemoteSaveAdaptor +{ + public class WeatherForecast + { + public DateOnly Date { get; set; } + + public int TemperatureC { get; set; } + + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); + + public string? Summary { get; set; } + } +} diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor/appsettings.Development.json b/RemoteSaveAdaptor/RemoteSaveAdaptor/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor/appsettings.json b/RemoteSaveAdaptor/RemoteSaveAdaptor/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor/wwwroot/index.html b/RemoteSaveAdaptor/RemoteSaveAdaptor/wwwroot/index.html new file mode 100644 index 0000000..e4a8132 --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor/wwwroot/index.html @@ -0,0 +1,33 @@ + + + + EJ2 Grid + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + \ No newline at end of file diff --git a/RemoteSaveAdaptor/RemoteSaveAdaptor/wwwroot/js/index.js b/RemoteSaveAdaptor/RemoteSaveAdaptor/wwwroot/js/index.js new file mode 100644 index 0000000..ce56d35 --- /dev/null +++ b/RemoteSaveAdaptor/RemoteSaveAdaptor/wwwroot/js/index.js @@ -0,0 +1,42 @@ +ej.grids.Grid.Inject(ej.grids.Toolbar, ej.grids.Edit, ej.grids.Filter, ej.grids.Page, ej.grids.Sort); + +load(); +var data; + +function load() { + fetch('https://localhost:7035/api/Orders') + .then(response => { + if (!response.ok) { + throw new Error(`Unable to Fetch Data. Please check URL or network connectivity.`); + } + return response.json(); + }) + .then(jsonValue => { + data = new ej.data.DataManager({ + json: jsonValue, + insertUrl: 'https://localhost:7035/api/Orders/Insert', + updateUrl: 'https://localhost:7035/api/Orders/Update', + removeUrl: 'https://localhost:7035/api/Orders/Remove', + adaptor: new ej.data.RemoteSaveAdaptor() + }); + createGrid(); + }); +} + +function createGrid() { + var grid = new ej.grids.Grid({ + dataSource: data, + allowPaging: true, + allowSorting: true, + allowFiltering: true, + toolbar: ['Add', 'Edit', 'Delete', 'Update', 'Cancel', 'Search'], + editSettings: { allowEditing: true, allowAdding: true, allowDeleting: true, mode: 'Normal' }, + columns: [ + { field: 'OrderID', headerText: 'Order ID', textAlign: 'Right', width: 120, isPrimaryKey: true, type: 'number' }, + { field: 'CustomerID', width: 140, headerText: 'Customer ID', type: 'string' }, + { field: 'ShipCity', headerText: 'ShipCity', width: 140 }, + { field: 'ShipCountry', headerText: 'ShipCountry', width: 140 } + ] + }); + grid.appendTo('#Grid'); +} \ No newline at end of file diff --git a/UrlAdaptor/README.md b/UrlAdaptor/README.md new file mode 100644 index 0000000..16c2e4f --- /dev/null +++ b/UrlAdaptor/README.md @@ -0,0 +1,34 @@ +# UrlAdaptor in Syncfusion Grid Component + +The UrlAdaptor serves as the base adaptor for facilitating communication between remote data services and an UI component. It enables seamless data binding and interaction with custom API services or any remote service through URLs. The UrlAdaptor is particularly useful for the scenarios where a custom API service with unique logic for handling data and CRUD operations is in place. This approach allows for custom handling of data and CRUD operations, and the resultant data returned in the result and count format for display in the Syncfusion Grid component. + +## Getting Started + +**1. Clone the Repository:** + +Use `git clone` to fetch the repository from GitHub. + +```bash +https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-javascript-data-grid.git +``` + +**2. Open and Build the Project:** + +* Open the project in Visual Studio. +* Build the project to restore dependencies and compile it. +* Run the project + +**3. Explore the Code:** + +* Navigate to JavaScript files (typically in wwwroot). +* Debug and interact with the code as needed. + +![Adaptors](../assets/images/adaptor-crud-operation.gif) + +## Resources + +You can also refer the below resources to know more details about Syncfusion Javascript Grid components. + +* [Demo](https://ej2.syncfusion.com/javascript/demos/#/bootstrap/grid/over-view) +* [Documentation](https://ej2.syncfusion.com/javascript/documentation/grid/getting-started) +* [GraphQL with Syncfusion DataManager](https://ej2.syncfusion.com/javascript/documentation/grid/connecting-to-adaptors/url-adaptor) \ No newline at end of file diff --git a/WebApiAdaptor/README.md b/WebApiAdaptor/README.md new file mode 100644 index 0000000..4ee882f --- /dev/null +++ b/WebApiAdaptor/README.md @@ -0,0 +1,34 @@ +# WebApiAdaptor in Syncfusion Grid Component + +The WebApiAdaptor is an extension of the ODataAdaptor, designed to interact with Web APIs created with OData endpoints. This adaptor ensures seamless communication between Syncfusion Grid and OData-endpoint based Web APIs, enabling efficient data retrieval and manipulation. For successful integration, the endpoint must be capable of understanding OData-formatted queries sent along with the request. + +## Getting Started + +**1. Clone the Repository:** + +Use `git clone` to fetch the repository from GitHub. + +```bash +https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-javascript-data-grid.git +``` + +**2. Open and Build the Project:** + +* Open the project in Visual Studio. +* Build the project to restore dependencies and compile it. +* Run the project + +**3. Explore the Code:** + +* Navigate to JavaScript files (typically in wwwroot). +* Debug and interact with the code as needed. + +![Adaptors](../assets/images/adaptor-crud-operation.gif) + +## Resources + +You can also refer the below resources to know more details about Syncfusion Javascript Grid components. + +* [Demo](https://ej2.syncfusion.com/javascript/demos/#/bootstrap/grid/over-view) +* [Documentation](https://ej2.syncfusion.com/javascript/documentation/grid/getting-started) +* [GraphQL with Syncfusion DataManager](https://ej2.syncfusion.com/javascript/documentation/grid/connecting-to-adaptors/web-api-adaptor) \ No newline at end of file diff --git a/WebApiAdaptor/WebApiAdaptor.sln b/WebApiAdaptor/WebApiAdaptor.sln new file mode 100644 index 0000000..bb08bab --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34728.123 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebApiAdaptor", "WebApiAdaptor\WebApiAdaptor.csproj", "{76B363AB-5F71-4B5B-A1C9-477B6AB913FA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {76B363AB-5F71-4B5B-A1C9-477B6AB913FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76B363AB-5F71-4B5B-A1C9-477B6AB913FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {76B363AB-5F71-4B5B-A1C9-477B6AB913FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {76B363AB-5F71-4B5B-A1C9-477B6AB913FA}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1A7373EE-4A6A-4273-8CDD-EB6F2E441079} + EndGlobalSection +EndGlobal diff --git a/WebApiAdaptor/WebApiAdaptor/Controllers/GridController.cs b/WebApiAdaptor/WebApiAdaptor/Controllers/GridController.cs new file mode 100644 index 0000000..bcfe96c --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/Controllers/GridController.cs @@ -0,0 +1,177 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using WebApiAdaptor.Models; + +namespace WebApiAdaptor.Controllers +{ + [Route("api/[controller]")] + + [ApiController] + public class GridController : ControllerBase + { + // GET: api/Orders + [HttpGet] + + // Action to retrieve orders + public object Get() + { + var queryString = Request.Query; + var data = OrdersDetails.GetAllRecords().ToList(); + + string? sort = queryString["$orderby"]; // Get sorting parameter + string? filter = queryString["$filter"]; // // Get filtering parameter + + //Peform sort operation + if (!string.IsNullOrEmpty(sort)) + { + var sortConditions = sort.Split(','); + + var orderedData = data.OrderBy(x => 0); // Start with a stable sort + + foreach (var sortCondition in sortConditions) + { + var sortParts = sortCondition.Trim().Split(' '); + var sortBy = sortParts[0]; + var sortOrder = sortParts.Length > 1 && sortParts[1].ToLower() == "desc"; + + switch (sortBy) + { + case "OrderID": + orderedData = sortOrder ? orderedData.ThenByDescending(x => x.OrderID) : orderedData.ThenBy(x => x.OrderID); + break; + case "CustomerID": + orderedData = sortOrder ? orderedData.ThenByDescending(x => x.CustomerID) : orderedData.ThenBy(x => x.CustomerID); + break; + case "ShipCity": + orderedData = sortOrder ? orderedData.ThenByDescending(x => x.ShipCity) : orderedData.ThenBy(x => x.ShipCity); + break; + } + } + + data = [.. orderedData]; + } + if (filter != null) + { + var filters = filter.Split(new string[] { " and " }, StringSplitOptions.RemoveEmptyEntries); + + foreach (var filterItem in filters) + { + if (filterItem.Contains("substringof")) + { + // Performing Search operation + + var searchParts = filterItem.Split('(', ')', '\''); + var searchValue = searchParts[3]; + + // Apply the search value to all searchable fields + data = data.Where(cust => + cust != null && + ((cust.OrderID?.ToString()?.Contains(searchValue) ?? false) || + (cust.CustomerID?.ToLower()?.Contains(searchValue) ?? false) || + (cust.ShipCity?.ToLower()?.Contains(searchValue) ?? false))).ToList(); + } + else + { + // Performing filter operation + + var filterfield = ""; + var filtervalue = ""; + var filterParts = filterItem.Split('(', ')', '\''); + if (filterParts.Length != 9) + { + var filterValueParts = filterParts[1].Split(); + filterfield = filterValueParts[0]; + filtervalue = filterValueParts[2]; + } + else + { + filterfield = filterParts[3]; + filtervalue = filterParts[5]; + } + switch (filterfield) + { + case "OrderID": + data = data.Where(cust => cust != null && cust.OrderID?.ToString() == filtervalue.ToString()).ToList(); + break; + case "CustomerID": + data = data.Where(cust => cust != null && cust.CustomerID?.ToLower().StartsWith(filtervalue.ToString()) == true).ToList(); + break; + case "ShipCity": + data = data.Where(cust => cust != null && cust.ShipCity?.ToLower().StartsWith(filtervalue.ToString()) == true).ToList(); + break; + // Add more cases for other searchable fields if needed + } + + } + } + } + + int TotalRecordsCount = data.Count; + + //Perform page operation + + int skip = Convert.ToInt32(queryString["$skip"]); + int take = Convert.ToInt32(queryString["$top"]); + if (take !=0) + { + data = data.Skip(skip).Take(take).ToList(); + + } + + return new { result = data, count = TotalRecordsCount }; + + } + + + // POST: api/Orders + [HttpPost] + /// + /// Inserts a new data item into the data collection. + /// + /// It holds new record detail which is need to be inserted. + /// Returns void + public void Post([FromBody] OrdersDetails newRecord) + { + // Insert a new record into the OrdersDetails model + OrdersDetails.GetAllRecords().Insert(0, newRecord); + } + + // PUT: api/Orders/5 + [HttpPut] + /// + /// Update a existing data item from the data collection. + /// + /// It holds updated record detail which is need to be updated. + /// Returns void + public void Put(int id, [FromBody] OrdersDetails order) + { + // Find the existing order by ID + var existingOrder = OrdersDetails.GetAllRecords().FirstOrDefault(o => o.OrderID == id); + if (existingOrder != null) + { + // If the order exists, update its properties + existingOrder.OrderID = order.OrderID; + existingOrder.CustomerID = order.CustomerID; + existingOrder.ShipCity = order.ShipCity; + } + } + + // DELETE: api/Orders/5 + [HttpDelete("{id}")] + /// + /// Remove a specific data item from the data collection. + /// + /// It holds specific record detail id which is need to be removed. + /// Returns void + public void Delete(int id) + { + // Find the order to remove by ID + var orderToRemove = OrdersDetails.GetAllRecords().FirstOrDefault(order => order.OrderID == id); + // If the order exists, remove it + if (orderToRemove != null) + { + OrdersDetails.GetAllRecords().Remove(orderToRemove); + } + } + } +} \ No newline at end of file diff --git a/WebApiAdaptor/WebApiAdaptor/Controllers/WeatherForecastController.cs b/WebApiAdaptor/WebApiAdaptor/Controllers/WeatherForecastController.cs new file mode 100644 index 0000000..75cb874 --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/Controllers/WeatherForecastController.cs @@ -0,0 +1,33 @@ +using Microsoft.AspNetCore.Mvc; + +namespace WebApiAdaptor.Controllers +{ + [ApiController] + [Route("[controller]")] + public class WeatherForecastController : ControllerBase + { + private static readonly string[] Summaries = new[] + { + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" + }; + + private readonly ILogger _logger; + + public WeatherForecastController(ILogger logger) + { + _logger = logger; + } + + [HttpGet(Name = "GetWeatherForecast")] + public IEnumerable Get() + { + return Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), + TemperatureC = Random.Shared.Next(-20, 55), + Summary = Summaries[Random.Shared.Next(Summaries.Length)] + }) + .ToArray(); + } + } +} diff --git a/WebApiAdaptor/WebApiAdaptor/Models/OrdersDetails.cs b/WebApiAdaptor/WebApiAdaptor/Models/OrdersDetails.cs new file mode 100644 index 0000000..ae4fd9c --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/Models/OrdersDetails.cs @@ -0,0 +1,58 @@ +namespace WebApiAdaptor.Models +{ + public class OrdersDetails + { + public static List order = new List(); + public OrdersDetails() + { + + } + public OrdersDetails( + int OrderID, string CustomerId, int EmployeeId, double Freight, bool Verified, + DateTime OrderDate, string ShipCity, string ShipName, string ShipCountry, + DateTime ShippedDate, string ShipAddress) + { + this.OrderID = OrderID; + this.CustomerID = CustomerId; + this.EmployeeID = EmployeeId; + this.Freight = Freight; + this.ShipCity = ShipCity; + this.Verified = Verified; + this.OrderDate = OrderDate; + this.ShipName = ShipName; + this.ShipCountry = ShipCountry; + this.ShippedDate = ShippedDate; + this.ShipAddress = ShipAddress; + } + + public static List GetAllRecords() + { + if (order.Count == 0) + { + int code = 10000; + for (int i = 1; i < 10; i++) + { + order.Add(new OrdersDetails(code + 1, "ALFKI", i + 0, 2.3 * i, false, new DateTime(1991, 05, 15), "Berlin", "Simons bistro", "Denmark", new DateTime(1996, 7, 16), "Kirchgasse 6")); + order.Add(new OrdersDetails(code + 2, "ANATR", i + 2, 3.3 * i, true, new DateTime(1990, 04, 04), "Madrid", "Queen Cozinha", "Brazil", new DateTime(1996, 9, 11), "Avda. Azteca 123")); + order.Add(new OrdersDetails(code + 3, "ANTON", i + 1, 4.3 * i, true, new DateTime(1957, 11, 30), "Cholchester", "Frankenversand", "Germany", new DateTime(1996, 10, 7), "Carrera 52 con Ave. Bolívar #65-98 Llano Largo")); + order.Add(new OrdersDetails(code + 4, "BLONP", i + 3, 5.3 * i, false, new DateTime(1930, 10, 22), "Marseille", "Ernst Handel", "Austria", new DateTime(1996, 12, 30), "Magazinweg 7")); + order.Add(new OrdersDetails(code + 5, "BOLID", i + 4, 6.3 * i, true, new DateTime(1953, 02, 18), "Tsawassen", "Hanari Carnes", "Switzerland", new DateTime(1997, 12, 3), "1029 - 12th Ave. S.")); + code += 5; + } + } + return order; + } + + public int? OrderID { get; set; } + public string? CustomerID { get; set; } + public int? EmployeeID { get; set; } + public double? Freight { get; set; } + public string? ShipCity { get; set; } + public bool? Verified { get; set; } + public DateTime OrderDate { get; set; } + public string? ShipName { get; set; } + public string? ShipCountry { get; set; } + public DateTime ShippedDate { get; set; } + public string? ShipAddress { get; set; } + } +} \ No newline at end of file diff --git a/WebApiAdaptor/WebApiAdaptor/Program.cs b/WebApiAdaptor/WebApiAdaptor/Program.cs new file mode 100644 index 0000000..5d9c335 --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/Program.cs @@ -0,0 +1,28 @@ +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. + +builder.Services.AddControllers(); +// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +var app = builder.Build(); + +app.UseDefaultFiles(); +app.UseStaticFiles(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); diff --git a/WebApiAdaptor/WebApiAdaptor/Properties/launchSettings.json b/WebApiAdaptor/WebApiAdaptor/Properties/launchSettings.json new file mode 100644 index 0000000..5f00f0d --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/Properties/launchSettings.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:55218", + "sslPort": 44304 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5062", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + //"launchUrl": "swagger", + "applicationUrl": "https://localhost:7265;http://localhost:5062", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/WebApiAdaptor/WebApiAdaptor/WeatherForecast.cs b/WebApiAdaptor/WebApiAdaptor/WeatherForecast.cs new file mode 100644 index 0000000..baf6a0e --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/WeatherForecast.cs @@ -0,0 +1,13 @@ +namespace WebApiAdaptor +{ + public class WeatherForecast + { + public DateOnly Date { get; set; } + + public int TemperatureC { get; set; } + + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); + + public string? Summary { get; set; } + } +} diff --git a/WebApiAdaptor/WebApiAdaptor/WebApiAdaptor.csproj b/WebApiAdaptor/WebApiAdaptor/WebApiAdaptor.csproj new file mode 100644 index 0000000..c11ecdf --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/WebApiAdaptor.csproj @@ -0,0 +1,14 @@ + + + + net8.0 + enable + enable + + + + + + + + diff --git a/WebApiAdaptor/WebApiAdaptor/WebApiAdaptor.csproj.user b/WebApiAdaptor/WebApiAdaptor/WebApiAdaptor.csproj.user new file mode 100644 index 0000000..2c8f5c1 --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/WebApiAdaptor.csproj.user @@ -0,0 +1,8 @@ + + + + https + ApiControllerEmptyScaffolder + root/Common/Api + + \ No newline at end of file diff --git a/WebApiAdaptor/WebApiAdaptor/WebApiAdaptor.http b/WebApiAdaptor/WebApiAdaptor/WebApiAdaptor.http new file mode 100644 index 0000000..94ac3d0 --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/WebApiAdaptor.http @@ -0,0 +1,6 @@ +@WebApiAdaptor_HostAddress = http://localhost:5062 + +GET {{WebApiAdaptor_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/WebApiAdaptor/WebApiAdaptor/appsettings.Development.json b/WebApiAdaptor/WebApiAdaptor/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/WebApiAdaptor/WebApiAdaptor/appsettings.json b/WebApiAdaptor/WebApiAdaptor/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/WebApiAdaptor/WebApiAdaptor/wwwroot/css/index.css b/WebApiAdaptor/WebApiAdaptor/wwwroot/css/index.css new file mode 100644 index 0000000..46800d1 --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/wwwroot/css/index.css @@ -0,0 +1,2 @@ +body { +} diff --git a/WebApiAdaptor/WebApiAdaptor/wwwroot/index.html b/WebApiAdaptor/WebApiAdaptor/wwwroot/index.html new file mode 100644 index 0000000..af4cffe --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/wwwroot/index.html @@ -0,0 +1,33 @@ + + + + EJ2 Grid + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + \ No newline at end of file diff --git a/WebApiAdaptor/WebApiAdaptor/wwwroot/js/index.js b/WebApiAdaptor/WebApiAdaptor/wwwroot/js/index.js new file mode 100644 index 0000000..d775816 --- /dev/null +++ b/WebApiAdaptor/WebApiAdaptor/wwwroot/js/index.js @@ -0,0 +1,21 @@ +var data = new ej.data.DataManager({ + url: 'https://localhost:7265/api/Grid', // Here xxxx represents the port number + adaptor: new ej.data.WebApiAdaptor() +}); +ej.grids.Grid.Inject(ej.grids.Edit, ej.grids.Toolbar, ej.grids.Page, ej.grids.Filter,ej.grids.Sort); +var grid = new ej.grids.Grid({ + dataSource: data, + allowPaging: true, + allowSorting: true, + allowFiltering: true, + toolbar: ['Add', 'Edit', 'Delete', 'Update', 'Cancel', 'Search'], + editSettings: { allowEditing: true, allowAdding: true, allowDeleting: true, mode: 'Normal' }, + columns: [ + { field: 'OrderID', headerText: 'Order ID', textAlign: 'Right', width: 120, isPrimaryKey: true, type: 'number' }, + { field: 'CustomerID', width: 140, headerText: 'Customer ID', type: 'string' }, + { field: 'ShipCity', headerText: 'ShipCity', width: 140 }, + { field: 'ShipCountry', headerText: 'ShipCountry', width: 140 } + ] +}); + +grid.appendTo('#Grid'); \ No newline at end of file diff --git a/WebMethodAdaptor/README.md b/WebMethodAdaptor/README.md new file mode 100644 index 0000000..1533a9c --- /dev/null +++ b/WebMethodAdaptor/README.md @@ -0,0 +1,36 @@ +# WebMethodAdaptor in Syncfusion Grid Component + +The WebMethodAdaptor in Syncfusion Grid facilitates data binding from remote services using web methods. This powerful feature enables efficient communication between the client-side application and the server. The WebMethodAdaptor, like the URL adaptor, sends query parameters encapsulated within an object named value. Within this value object, various datamanager properties such as requiresCounts, skip, take, sorted, and where queries are included. + +[WebMethodAdaptor](../assets/images/web-method-adaptor-value.png) + +## Getting Started + +**1. Clone the Repository:** + +Use `git clone` to fetch the repository from GitHub. + +```bash +https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-javascript-data-grid.git +``` + +**2. Open and Build the Project:** + +* Open the project in Visual Studio. +* Build the project to restore dependencies and compile it. +* Run the project + +**3. Explore the Code:** + +* Navigate to JavaScript files (typically in wwwroot). +* Debug and interact with the code as needed. + +![Adaptors](../assets/images/adaptor-crud-operation.gif) + +## Resources + +You can also refer the below resources to know more details about Syncfusion Javascript Grid components. + +* [Demo](https://ej2.syncfusion.com/javascript/demos/#/bootstrap/grid/over-view) +* [Documentation](https://ej2.syncfusion.com/javascript/documentation/grid/getting-started) +* [GraphQL with Syncfusion DataManager](https://ej2.syncfusion.com/javascript/documentation/grid/connecting-to-adaptors/web-method-adaptor) \ No newline at end of file diff --git a/assets/images/adaptor-crud-operation.gif b/assets/images/adaptor-crud-operation.gif new file mode 100644 index 0000000..e0dd72f Binary files /dev/null and b/assets/images/adaptor-crud-operation.gif differ diff --git a/assets/images/web-method-adaptor-value.png b/assets/images/web-method-adaptor-value.png new file mode 100644 index 0000000..a253269 Binary files /dev/null and b/assets/images/web-method-adaptor-value.png differ