bitnoise / react-scheduler Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
1.Can items be grouped? Can show or not show the data of this group,
2.How to hidden the tooltip or customize it?
3.Can you add a onEmptyClick event?
⨯ [email protected]\react-scheduler\dist\index.js (2034:35) @ window
⨯ Internal error: ReferenceError: window is not defined
"use client";
import { Scheduler, SchedulerProps } from "@bitnoi.se/react-scheduler";
import "@bitnoi.se/react-scheduler/dist/style.css";
export default function SchedulerClient(props: SchedulerProps) {
return <Scheduler {...props} />;
}
HI!
first I want to thank you for this development, I use your component in nextjs and I wonder if there is a possibility that at the zoom level it takes weeks, days and hours, this is because I have some activities where the work time is less than one day.
The default example shown in the front page README.md does not work.
The following issue occurs:
> Uncaught TypeError: Cannot read properties of null (reading 'useMemo')
The above error occurred in the <Gi> component.
import { Scheduler, SchedulerData } from "@bitnoi.se/react-scheduler";
import "@bitnoi.se/react-scheduler/dist/style.css";
const mockedSchedulerData: SchedulerData = [
{
id: "070ac5b5-8369-4cd2-8ba2-0a209130cc60",
label: {
icon: "https://picsum.photos/24",
title: "Joe Doe",
subtitle: "Frontend Developer",
},
data: [
{
id: "8b71a8a5-33dd-4fc8-9caa-b4a584ba3762",
startDate: new Date("2023-04-13T15:31:24.272Z"),
endDate: new Date("2023-08-28T10:28:22.649Z"),
occupancy: 3600,
title: "Project A",
subtitle: "Subtitle A",
description: "array indexing Salad West Account",
bgColor: "rgb(254,165,177)",
},
{
id: "22fbe237-6344-4c8e-affb-64a1750f33bd",
startDate: new Date("2023-10-07T08:16:31.123Z"),
endDate: new Date("2023-11-15T21:55:23.582Z"),
occupancy: 2852,
title: "Project B",
subtitle: "Subtitle B",
description: "Tuna Home pascal IP drive",
bgColor: "rgb(254,165,177)",
},
{
id: "3601c1cd-f4b5-46bc-8564-8c983919e3f5",
startDate: new Date("2023-03-30T22:25:14.377Z"),
endDate: new Date("2023-09-01T07:20:50.526Z"),
occupancy: 1800,
title: "Project C",
subtitle: "Subtitle C",
bgColor: "rgb(254,165,177)",
},
{
id: "b088e4ac-9911-426f-aef3-843d75e714c2",
startDate: new Date("2023-10-28T10:08:22.986Z"),
endDate: new Date("2023-10-30T12:30:30.150Z"),
occupancy: 11111,
title: "Project D",
subtitle: "Subtitle D",
description: "Garden heavy an software Metal",
bgColor: "rgb(254,165,177)",
},
],
},
];
export default function GanttChart() {
return (
<Scheduler
// decide when to show loading indicators
isLoading={false}
// your data
data={mockedSchedulerData}
// callback when user click's on one of the grid's tile
onItemClick={(clickedItem) => console.log(clickedItem)}
// filter function that let's you handling filtering on your end
onFilterData={() => {
// filter your data
}}
// callback when user clicks clearing filter button
onClearFilterData={() => {
// clear all your filters
}}
config={{
/*
change filter button state based on your filters
< 0 - filter button invisible,
0 - filter button visible, no filter applied, clear filters button invisible,
> 0 - filter button visible, filters applied (clear filters button will be visible)
*/
filterButtonState: 0,
// decide start zoom variant (0 - weeks, 1 - days)
zoom: 0,
// select language for scheduler
lang: "en",
// decide how many resources show per one page
maxRecordsPerPage: 20,
}}
/>
);
}
Hi,
Thank you for your nice project.
Do you have live demo?
Thank you for your answer.
How to customise the events? or data visually?
Any way we can modify them?
Hi
Do you plan on making the calendar responsive and mobile-friendly in the future?
if so, how long do you think it would take?
Thank you
On Mac Retina displays canvases lacks sharpness. This is especially visible on texts. My suggestion would be to drav canvas on such devices with higher resolution based on window.devicePixelRatio
Ref: https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio#correcting_resolution_in_a_canvas
Hi, it's possible to change the locale of the scheduler in other languages with code?
Thanks!!!
AssertionError [ERR_ASSERTION]: filePath not found of @bitnoi.se/react-scheduler
at /Users/mot/Products/yygg/stage.tatateam.com/node_modules/@umijs/preset-built-in/lib/plugins/features/mfsu/utils.js:119:27
at Generator.next (<anonymous>)
at asyncGeneratorStep (/Users/mot/Products/yygg/stage.tatateam.com/node_modules/@umijs/preset-built-in/lib/plugins/features/mfsu/utils.js:64:103)
at _next (/Users/mot/Products/yygg/stage.tatateam.com/node_modules/@umijs/preset-built-in/lib/plugins/features/mfsu/utils.js:66:194)
at /Users/mot/Products/yygg/stage.tatateam.com/node_modules/@umijs/preset-built-in/lib/plugins/features/mfsu/utils.js:66:364
at new Promise (<anonymous>)
at /Users/mot/Products/yygg/stage.tatateam.com/node_modules/@umijs/preset-built-in/lib/plugins/features/mfsu/utils.js:66:97
at figureOutExport (/Users/mot/Products/yygg/stage.tatateam.com/node_modules/@umijs/preset-built-in/lib/plugins/features/mfsu/utils.js:129:17)
at /Users/mot/Products/yygg/stage.tatateam.com/node_modules/@umijs/preset-built-in/lib/plugins/features/mfsu/DepBuilder.js:184:201
at Generator.next (<anonymous>)
at asyncGeneratorStep (/Users/mot/Products/yygg/stage.tatateam.com/node_modules/@umijs/preset-built-in/lib/plugins/features/mfsu/DepBuilder.js:84:103)
at _next (/Users/mot/Products/yygg/stage.tatateam.com/node_modules/@umijs/preset-built-in/lib/plugins/features/mfsu/DepBuilder.js:86:194)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
umijs + antd + @bitnoi.se/react-scheduler
I'm not seeing a isFullscreen option in the config options passed into the component.
Here's what I'm currently trying:
<Scheduler data={mockedSchedulerData} // isLoading={isLoading} onRangeChange={(newRange) => console.log(newRange)} onTileClick={(clickedResource) => console.log(clickedResource)} onItemClick={(item) => console.log(item)} onFilterData={() => { // Some filtering logic... setFilterButtonState(1); }} onClearFilterData={() => { // Some clearing filters logic... setFilterButtonState(0); }} config={{ zoom: 1, maxRecordsPerPage: 50, isFullscreen: false, filterButtonState, }} />
npm install link doesn't work, throws "
At line:1 char:13
npm install @bitnoi.se/react-scheduler
The splatting operator '@' cannot be used to reference variables in an expression. '@bitnoi' can be used only as an argument
to a command. To reference variables in an expression use '$bitnoi'.
CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
FullyQualifiedErrorId : SplattingNotPermitted
"
error with powershell.
Hi,
Is there any way to add event on click of frontend instead of data provide from code.
Please share me if knows about it.
Thanks
Within my React JS application, I have a certain layout that is made using Bootstrap css elements, however, this layout is ignored by the react-scheduler component which results in the scheduler being place over my navigation bar within my Web App. Can you please advise me on a possible fix for this issue. Any and all help would be appreciated.
Hi! Firstly I want to thank you for your work.
I installed today your pap, but lines constraining resource on the left seem a little bit off (not matching calendar grid):
I have plain app with only your lib configured:
import React from 'react';
import './App.css';
import {Scheduler, SchedulerData} from "@bitnoi.se/react-scheduler";
import "@bitnoi.se/react-scheduler/dist/style.css";
function App() {
return (
<section>
<Scheduler
data={mockedSchedulerData}
isLoading={false}
/>
</section>
);
}
const mockedSchedulerData: SchedulerData = [
{
id: "070ac5b5-8369-4cd2-8ba2-0a209130cc60",
label: {
icon: "https://picsum.photos/24",
title: "Joe Doe",
subtitle: "Frontend Developer"
},
data: [
{
id: "8b71a8a5-33dd-4fc8-9caa-b4a584ba3762",
startDate: new Date("2023-04-13T15:31:24.272Z"),
endDate: new Date("2023-08-28T10:28:22.649Z"),
occupancy: 3600,
title: "Project A",
subtitle: "Subtitle A",
description: "array indexing Salad West Account",
bgColor: "rgb(254,165,177)"
},
{
id: "22fbe237-6344-4c8e-affb-64a1750f33bd",
startDate: new Date("2023-10-07T08:16:31.123Z"),
endDate: new Date("2023-11-15T21:55:23.582Z"),
occupancy: 2852,
title: "Project B",
subtitle: "Subtitle B",
description: "Tuna Home pascal IP drive",
bgColor: "rgb(254,165,177)"
},
{
id: "3601c1cd-f4b5-46bc-8564-8c983919e3f5",
startDate: new Date("2023-03-30T22:25:14.377Z"),
endDate: new Date("2023-09-01T07:20:50.526Z"),
occupancy: 1800,
title: "Project C",
subtitle: "Subtitle C",
bgColor: "rgb(254,165,177)"
},
{
id: "b088e4ac-9911-426f-aef3-843d75e714c2",
startDate: new Date("2023-10-28T10:08:22.986Z"),
endDate: new Date("2023-10-30T12:30:30.150Z"),
occupancy: 11111,
title: "Project D",
subtitle: "Subtitle D",
description: "Garden heavy an software Metal",
bgColor: "rgb(254,165,177)"
}
]
},
];
export default App;
"SchedulerData" is copied from your example.
Also buttons on the upper right to manipulate the view are not aligned to screen by default.
How to fix it?
Sincerely,
Ignacy
Can the occupancy also be an optional field?
HI trying to use your react-scheduler with React Metronic v8 template (just migrated to Vite) I copy paste the example in the readme.md file but got hit with this error, not sure what is happening.
The full log:
Warning: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
You might have mismatching versions of React and the renderer (such as React DOM)
You might be breaking the Rules of Hooks
You might have more than one copy of React in the same app
See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.
at Ri (http://localhost:5173/node_modules/.vite/deps/@bitnoi__se_react-scheduler.js?v=17668191:5772:9)
at section
at Component (http://localhost:5173/src/app/modules/apps/reservation-calendar/ReservationCalendarPage.tsx:15:39)
at Suspense
at SuspensedView (http://localhost:5173/src/app/routing/PrivateRoutes.tsx:243:26)
at Outlet (http://localhost:5173/node_modules/.vite/deps/chunk-BPRKDLUL.js?v=17668191:1119:26)
at div
at Content (http://localhost:5173/src/_metronic/layout/components/Content.tsx:16:20)
at div
at div
at div
at div
at PageDataProvider (http://localhost:5173/src/_metronic/layout/core/PageData.tsx:17:29)
at MasterLayout (http://localhost:5173/src/_metronic/layout/MasterLayout.tsx:24:22)
at Routes (http://localhost:5173/node_modules/.vite/deps/chunk-BPRKDLUL.js?v=17668191:1179:5)
at PrivateRoutes
at Outlet (http://localhost:5173/node_modules/.vite/deps/chunk-BPRKDLUL.js?v=17668191:1119:26)
at AuthInit (http://localhost:5173/src/app/modules/auth/core/Auth.tsx:61:21)
at ThemeModeProvider (http://localhost:5173/src/_metronic/partials/layout/theme-mode/ThemeModeProvider.tsx:55:30)
at LayoutProvider (http://localhost:5173/src/_metronic/layout/core/LayoutProvider.tsx:33:27)
at IntlProvider3 (http://localhost:5173/node_modules/.vite/deps/react-intl.js?v=17668191:4116:45)
at I18nProvider (http://localhost:5173/src/_metronic/i18n/i18nProvider.tsx:34:25)
at Suspense
at App
at Routes (http://localhost:5173/node_modules/.vite/deps/chunk-BPRKDLUL.js?v=17668191:1179:5)
at Router (http://localhost:5173/node_modules/.vite/deps/chunk-BPRKDLUL.js?v=17668191:1126:15)
at BrowserRouter (http://localhost:5173/node_modules/.vite/deps/react-router-dom.js?v=17668191:86:5)
at AppRoutes (http://localhost:5173/src/app/routing/AppRoutes.tsx:28:29)
at AuthProvider (http://localhost:5173/src/app/modules/auth/core/Auth.tsx:28:25)
at MetronicI18nProvider (http://localhost:5173/src/_metronic/i18n/Metronici18n.tsx:40:33)
at QueryClientProvider2 (http://localhost:5173/node_modules/.vite/deps/chunk-64JXKFDQ.js?v=17668191:2853:25)
overrideMethod @ console.js:213
printWarning @ @bitnoi__se_react-scheduler.js?v=17668191:137
error @ @bitnoi__se_react-scheduler.js?v=17668191:121
resolveDispatcher @ @bitnoi__se_react-scheduler.js?v=17668191:1046
useMemo @ @bitnoi__se_react-scheduler.js?v=17668191:1094
Ri @ @bitnoi__se_react-scheduler.js?v=17668191:5783
renderWithHooks @ chunk-E3WH7TKQ.js?v=17668191:12039
mountIndeterminateComponent @ chunk-E3WH7TKQ.js?v=17668191:15341
beginWork @ chunk-E3WH7TKQ.js?v=17668191:16324
callCallback2 @ chunk-E3WH7TKQ.js?v=17668191:3669
invokeGuardedCallbackDev @ chunk-E3WH7TKQ.js?v=17668191:3694
invokeGuardedCallback @ chunk-E3WH7TKQ.js?v=17668191:3728
beginWork$1 @ chunk-E3WH7TKQ.js?v=17668191:19615
performUnitOfWork @ chunk-E3WH7TKQ.js?v=17668191:19079
workLoopSync @ chunk-E3WH7TKQ.js?v=17668191:19019
renderRootSync @ chunk-E3WH7TKQ.js?v=17668191:18998
recoverFromConcurrentError @ chunk-E3WH7TKQ.js?v=17668191:18619
performConcurrentWorkOnRoot @ chunk-E3WH7TKQ.js?v=17668191:18567
workLoop @ chunk-E3WH7TKQ.js?v=17668191:197
flushWork @ chunk-E3WH7TKQ.js?v=17668191:176
performWorkUntilDeadline @ chunk-E3WH7TKQ.js?v=17668191:384
Show 21 more frames
Show less
@bitnoi__se_react-scheduler.js?v=17668191:1095 Uncaught TypeError: Cannot read properties of null (reading 'useMemo')
at useMemo (@bitnoi__se_react-scheduler.js?v=17668191:1095:29)
at Ri (@bitnoi__se_react-scheduler.js?v=17668191:5783:38)
at renderWithHooks (chunk-E3WH7TKQ.js?v=17668191:12039:26)
at mountIndeterminateComponent (chunk-E3WH7TKQ.js?v=17668191:15341:21)
at beginWork (chunk-E3WH7TKQ.js?v=17668191:16324:22)
at HTMLUnknownElement.callCallback2 (chunk-E3WH7TKQ.js?v=17668191:3669:22)
at Object.invokeGuardedCallbackDev (chunk-E3WH7TKQ.js?v=17668191:3694:24)
at invokeGuardedCallback (chunk-E3WH7TKQ.js?v=17668191:3728:39)
at beginWork$1 (chunk-E3WH7TKQ.js?v=17668191:19615:15)
at performUnitOfWork (chunk-E3WH7TKQ.js?v=17668191:19079:20)
useMemo @ @bitnoi__se_react-scheduler.js?v=17668191:1095
Ri @ @bitnoi__se_react-scheduler.js?v=17668191:5783
renderWithHooks @ chunk-E3WH7TKQ.js?v=17668191:12039
mountIndeterminateComponent @ chunk-E3WH7TKQ.js?v=17668191:15341
beginWork @ chunk-E3WH7TKQ.js?v=17668191:16324
callCallback2 @ chunk-E3WH7TKQ.js?v=17668191:3669
invokeGuardedCallbackDev @ chunk-E3WH7TKQ.js?v=17668191:3694
invokeGuardedCallback @ chunk-E3WH7TKQ.js?v=17668191:3728
beginWork$1 @ chunk-E3WH7TKQ.js?v=17668191:19615
performUnitOfWork @ chunk-E3WH7TKQ.js?v=17668191:19079
workLoopSync @ chunk-E3WH7TKQ.js?v=17668191:19019
renderRootSync @ chunk-E3WH7TKQ.js?v=17668191:18998
recoverFromConcurrentError @ chunk-E3WH7TKQ.js?v=17668191:18619
performConcurrentWorkOnRoot @ chunk-E3WH7TKQ.js?v=17668191:18567
workLoop @ chunk-E3WH7TKQ.js?v=17668191:197
flushWork @ chunk-E3WH7TKQ.js?v=17668191:176
performWorkUntilDeadline @ chunk-E3WH7TKQ.js?v=17668191:384
Show 17 more frames
Show less
console.js:213 The above error occurred in the component:
at Ri (http://localhost:5173/node_modules/.vite/deps/@bitnoi__se_react-scheduler.js?v=17668191:5772:9)
at section
at Component (http://localhost:5173/src/app/modules/apps/reservation-calendar/ReservationCalendarPage.tsx:15:39)
at Suspense
at SuspensedView (http://localhost:5173/src/app/routing/PrivateRoutes.tsx:243:26)
at Outlet (http://localhost:5173/node_modules/.vite/deps/chunk-BPRKDLUL.js?v=17668191:1119:26)
at div
at Content (http://localhost:5173/src/_metronic/layout/components/Content.tsx:16:20)
at div
at div
at div
at div
at PageDataProvider (http://localhost:5173/src/_metronic/layout/core/PageData.tsx:17:29)
at MasterLayout (http://localhost:5173/src/_metronic/layout/MasterLayout.tsx:24:22)
at Routes (http://localhost:5173/node_modules/.vite/deps/chunk-BPRKDLUL.js?v=17668191:1179:5)
at PrivateRoutes
at Outlet (http://localhost:5173/node_modules/.vite/deps/chunk-BPRKDLUL.js?v=17668191:1119:26)
at AuthInit (http://localhost:5173/src/app/modules/auth/core/Auth.tsx:61:21)
at ThemeModeProvider (http://localhost:5173/src/_metronic/partials/layout/theme-mode/ThemeModeProvider.tsx:55:30)
at LayoutProvider (http://localhost:5173/src/_metronic/layout/core/LayoutProvider.tsx:33:27)
at IntlProvider3 (http://localhost:5173/node_modules/.vite/deps/react-intl.js?v=17668191:4116:45)
at I18nProvider (http://localhost:5173/src/_metronic/i18n/i18nProvider.tsx:34:25)
at Suspense
at App
at Routes (http://localhost:5173/node_modules/.vite/deps/chunk-BPRKDLUL.js?v=17668191:1179:5)
at Router (http://localhost:5173/node_modules/.vite/deps/chunk-BPRKDLUL.js?v=17668191:1126:15)
at BrowserRouter (http://localhost:5173/node_modules/.vite/deps/react-router-dom.js?v=17668191:86:5)
at AppRoutes (http://localhost:5173/src/app/routing/AppRoutes.tsx:28:29)
at AuthProvider (http://localhost:5173/src/app/modules/auth/core/Auth.tsx:28:25)
at MetronicI18nProvider (http://localhost:5173/src/_metronic/i18n/Metronici18n.tsx:40:33)
at QueryClientProvider2 (http://localhost:5173/node_modules/.vite/deps/chunk-64JXKFDQ.js?v=17668191:2853:25)
Consider adding an error boundary to your tree to customize error handling behavior.
Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries.
overrideMethod @ console.js:213
logCapturedError @ chunk-E3WH7TKQ.js?v=17668191:13912
update.callback @ chunk-E3WH7TKQ.js?v=17668191:13932
callCallback @ chunk-E3WH7TKQ.js?v=17668191:9894
commitUpdateQueue @ chunk-E3WH7TKQ.js?v=17668191:9911
commitLayoutEffectOnFiber @ chunk-E3WH7TKQ.js?v=17668191:16948
commitLayoutMountEffects_complete @ chunk-E3WH7TKQ.js?v=17668191:17816
commitLayoutEffects_begin @ chunk-E3WH7TKQ.js?v=17668191:17805
commitLayoutEffects @ chunk-E3WH7TKQ.js?v=17668191:17756
commitRootImpl @ chunk-E3WH7TKQ.js?v=17668191:19233
commitRoot @ chunk-E3WH7TKQ.js?v=17668191:19158
finishConcurrentRender @ chunk-E3WH7TKQ.js?v=17668191:18643
performConcurrentWorkOnRoot @ chunk-E3WH7TKQ.js?v=17668191:18601
workLoop @ chunk-E3WH7TKQ.js?v=17668191:197
flushWork @ chunk-E3WH7TKQ.js?v=17668191:176
performWorkUntilDeadline @ chunk-E3WH7TKQ.js?v=17668191:384
Show 16 more frames
Show less
chunk-E3WH7TKQ.js?v=17668191:19283 Uncaught TypeError: Cannot read properties of null (reading 'useMemo')
at useMemo (@bitnoi__se_react-scheduler.js?v=17668191:1095:29)
at Ri (@bitnoi__se_react-scheduler.js?v=17668191:5783:38)
at renderWithHooks (chunk-E3WH7TKQ.js?v=17668191:12039:26)
at mountIndeterminateComponent (chunk-E3WH7TKQ.js?v=17668191:15341:21)
at beginWork (chunk-E3WH7TKQ.js?v=17668191:16324:22)
at beginWork$1 (chunk-E3WH7TKQ.js?v=17668191:19603:22)
at performUnitOfWork (chunk-E3WH7TKQ.js?v=17668191:19079:20)
at workLoopSync (chunk-E3WH7TKQ.js?v=17668191:19019:13)
at renderRootSync (chunk-E3WH7TKQ.js?v=17668191:18998:15)
at recoverFromConcurrentError (chunk-E3WH7TKQ.js?v=17668191:18619:28)
useMemo @ @bitnoi__se_react-scheduler.js?v=17668191:1095
Ri @ @bitnoi__se_react-scheduler.js?v=17668191:5783
renderWithHooks @ chunk-E3WH7TKQ.js?v=17668191:12039
mountIndeterminateComponent @ chunk-E3WH7TKQ.js?v=17668191:15341
beginWork @ chunk-E3WH7TKQ.js?v=17668191:16324
beginWork$1 @ chunk-E3WH7TKQ.js?v=17668191:19603
performUnitOfWork @ chunk-E3WH7TKQ.js?v=17668191:19079
workLoopSync @ chunk-E3WH7TKQ.js?v=17668191:19019
renderRootSync @ chunk-E3WH7TKQ.js?v=17668191:18998
recoverFromConcurrentError @ chunk-E3WH7TKQ.js?v=17668191:18619
performConcurrentWorkOnRoot @ chunk-E3WH7TKQ.js?v=17668191:18567
workLoop @ chunk-E3WH7TKQ.js?v=17668191:197
flushWork @ chunk-E3WH7TKQ.js?v=17668191:176
performWorkUntilDeadline @ chunk-E3WH7TKQ.js?v=17668191:384
Show 14 more frames
Show less
hello
After install on react 17 , js web app
Module not found: Can't resolve '@bitnoi.se/react-scheduler'
Checked and the module installed
Thank you
It would be nice to have the option to set the height of the tiles based on the occupancy
of the item
and the maxOccupancy
of the row
? So basically, I want to display the information on the label (how many hours are taken and how many are free) also visually, by the height of the items and also by the height of the row.
I've forked the repo and I'll try to implement it and see how it goes. If it turns out good, maybe it can be considered to be merged.
UPDATE:
I've clarified the issue description after I did some more digging into the code, by updating the terminology used and the general definition of the issue.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.