eddyverbruggen / calendar-phonegap-plugin Goto Github PK
View Code? Open in Web Editor NEW:date: Cordova plugin to Create, Change, Delete and Find Events in the native Calendar
:date: Cordova plugin to Create, Change, Delete and Find Events in the native Calendar
Hey,
I'm working on an app which manages events that could change time or date and I want to be able to find or delete events using only the title. Let's say I don't know the original start/end dates of events which have changed, but I know that the title is unique. That should be enough to find or delete the event with, surely?
findEvent's callbacks aren't firing on iOS, neither success or error. I have tested it on Android and I'm finding no problems.
I'm using v4.2.2 of the plugin, and my iPhone is an iPhone 4 with iOS v7.1.
I have definitely allowed the app to access my calendar, too :)
Here's the code which isn't getting into the callback:
var createdSuccess = function (message) {
console.log('Calendar event created:', message);
if (_.isFunction(options.success)) {
options.success(message);
}
};
var createdError = function(message) {
console.log('Calendar event creation error:', message);
if (_.isFunction(options.error)) {
options.error(message);
}
};
var lookupError = function(message) {
console.log('Calendar event lookup error:', message);
if (_.isFunction(options.error)) {
options.error(message);
}
};
window.plugins.calendar.findEvent(title, '', null, startDate, endDate, function (eventsFound) {
if (eventsFound && eventsFound.length > 0) {
console.log('Not adding any new events');
return;
}
window.plugins.calendar.createEvent(title, '', notes, startDate, endDate, createdSuccess, createdError);
}, lookupError);
Keep in mind that title
, startDate
and endDate
have all been defined and are definitely not undefined, as is _
, and I have already checked for the existence of window.plugins.calendar
.
I am getting no exceptions from anything.
Am I doing something wrong, or is this a bug?
Any help would be appreciated, thanks :)
Looks like, plugin doesnt ask for calendar permission on IOS 6/7 devices.
After calling standard window.plugins.calendar.createEvent(...) fail callback is called with message "no calendar has been set". Looks like on new IOS version you have to call for permission first, before you can actually work with calendar.
Using this plugin with PhoneGap 3.4 on Android with any org.apache.cordova.*
plugin installed results in either an initial "Error initializing Cordova: Class not found" error or a "Class not found" error in response to all methods of the window.plugins.calendar
object.
After reverting to PhoneGap 3.3, e.g. npm install -g [email protected]
, there is no initial error and methods respond as expected.
Builds are created using phonegap local build android
or phonegap local run android
.
Hi Eddy.
Newbie here.
I think I got it installed, but sorry to say, the steps I don't think is the clearest.
Under implementation you mention: Basic operations, you'll want to copy-paste this for testing purposes:
But you don't mention where.
Do you have anywhere a working example? Sorry for any dumb questions, kinda new to phonegap and plugins. I just want to have a page that has a few input fields that populates the diary entry.
Hope you can help.
Thanks,
Johann
createEventWithOptions crashes in iOS 6.1 with the following exception:
-[NSNull doubleValue]: unrecognized selector sent to instance 0x3b130090
2014-04-17 09:18:39.600 HelloCordova[196:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull doubleValue]: unrecognized selector sent to instance 0x3b130090'
*** First throw call stack:
(0x32e602a3 0x3aabc97f 0x32e63e07 0x32e62531 0x32db9f68 0xb12c3 0xb419d 0xa9ef1 0xa978f 0x3376e277 0x32e355df 0x32e35291 0x32e33f01 0x32da6ebd 0x32da6d49 0x369232eb 0x34cbc301 0xaf7db 0x3aef3b20)
libc++abi.dylib: terminate called throwing an exception
'calendarWithEventStore' method and 'calendars' property have both been deprecated in IO6, will there be a fix for this soon. Apple is no longer accepting apps targeted for IOS6
Would you be able to provide the create calendar name for Android as you have done for IOS
Thanks
More a question than an issue.
I have a site that uses a Dot Net Nuke module called Events. It exports these events as RSS or as an iCal. Do you know if I can use your plugin to populate a calendar? I'm thinking I may have to just display the RSS in the app.
iCal export url looks like this http://OurWebsite/DesktopModules/Events/EventVCal.aspx?ItemID=0&Mid=1768&tabid=303
Thanks for any insight.
Hi,
When I use build service, window.plugins.calendar is undefined on ios (I build android locally and it works fine).
I inspected ipa file and I can't see calendar plugin defined in www/cordova_plugins.js file. Structure is also weird - all plugins are in www/plugins directory (followed by fully qualified plugin name) but Calendar.js is in www/js/plugins directory.
I use phonegap 3.1.0 and latest calendar plugin (3.2 I suppose).
Also it would be great if you find some time to add find method for android version (now I can add the same event infinite number of times).
When creating a calendar with a name, it would be ideal to also be able to set the color of the calendar.
On my HTC One running Kit Kat, my all day events are displaying one day late on the calendar. I noticed in the code for AbstractCalendarAccessor.createEvent(), if it is an all day event, one day is added to the start date. What is the reason for this?
If i'm not wrong, the reminder of an event is set to 5 minutes on Android. The iOS version reminds you 2 hours earlier. It should be set to an equal time on both os.
I am using PGB 3.3 and your latest plugin 4.2.1
this is all your sample code
var startDate = new Date(2014,2,15,18,30,0,0,0);
var endDate = new Date(2014,2,15,19,30,0,0,0);
var title = "My nice event";
var location = "Home";
var notes = "Some notes about this event.";
var success = function(message) { alert("Success: " + JSON.stringify(message)); };
var error = function(message) { alert("Error: " + message); };
var calOptions = window.plugins.calendar.getCalendarOptions(); // grab the defaults
options.firstReminderMinutes = 120; // default is 60, pass in null for no reminder (alarm)
window.plugins.calendar.createEventWithOptions(title,location,notes,startDate,endDate,options,success,error);
but when I execute it
there is no any success callback or error callback (no response)
It will be great :)
Hi,
I don't see the option to create recurring events. I am guessing the only way to do this using the current version of the plugin would be to create multiple events for the duration and frequency of the recurrence. Is that right?
Any plans to support recurrences for iOS?
Thanks,
Sri
Hello,
first of all great plugin. My Problem is that I can't get it working :(
I did it the way you descriped in your readme but i will always get the error "uncaught TypeError: Cannot read property "calendar" of undefinied. I am trying to get it run for Android 4.3 with Cordova 2.8.
Could you please help me.
Best Regards,
Manuel
If you try to use the plugin on iOS when the user has blocked the PhoneGap/Cordova app from accessing the calendar (Settings > Privacy > Calendar), the app crashes instantly:
2014-04-04 16:58:31.496 App Name[1227:60b] defaultCalendarForNewEvents failed: Error Domain=EKCADErrorDomain Code=1013 "The operation couldn’t be completed. (EKCADErrorDomain error 1013.)"
2014-04-04 16:58:31.499 App Name[1227:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[0]'
*** First throw call stack:
(0x301fcfd3 0x3a945ccf 0x30136acb 0x30139119 0xa711f 0xa9219 0x9e159 0x9da7b 0x9d629 0x9d80f 0x9d721 0x30be5c73 0x301c825b 0x301c772b 0x301c5f1f 0x30130f4f 0x30130d33 0x35052663 0x32a7c16d 0xa3de3 0x3ae52ab7)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
Using Telerik AppBuilder, the following works for Android but not iOS
app.testCal = function(e) {
var startDate = new Date("September 24, 2013 13:00:00");
var endDate = new Date("September 24, 2013 14:30:00");
var title = "My nice event";
var location = "Home";
var notes = "Some notes about this event.";
var success = function(message) { navigator.notification.alert("Success: " + JSON.stringify(message)); };
var error = function(message) { navigator.notification.alert("Error: " + message); };
window.plugins.calendar.createEvent(title,location,notes,startDate,endDate,success,error);
};
I have a link on index.html as such
Test Cal
For Android, the event is created, you can edit it, then save it, control is returned to the app. For iOS nothing happens, no error, no nothing....
Any ideas?
Thank you
Robert
When the plug-in can be installed on phonegap build 3.0 ?
Tks~
such kind of this
new Date("January 25, 2014 14:30:00");
but in the Practice conditions,the month "name" (January) should not be Stationary,but the month name is hard to get,so I made a javascript and php solution way
in javascript
function getNowTime(action)
{
var now = new Date();
if(action == 'year')
{
var vars = now.getFullYear();
}
if(action == 'month')
{
var vars = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September','October', 'November', 'December');
var vars = vars[now.getMonth()];
//var vars = (now.getMonth()+1< 10)?("0" + (now.getMonth() + 1)):(now.getMonth() + 1);
}
if(action == 'day')
{
var vars = (now.getDate() < 10)?("0" + (now.getDate())):(now.getDate());
}
if(action == 'hours')
{
var vars = now.getHours();
}
if(action == 'minutes')
{
var vars = now.getMinutes();
}
if(action == 'seconds')
{
var vars = now.getSeconds();
}
return vars;
}
so use the method getNowTime('month') will get the month name,getNowTime('year') will get the year,etc....
in php
function Month($NumMonth)
{
switch($NumMonth)
{
case "01": return "January"; break;
case "02": return "February"; break;
case "03": return "March"; break;
case "04": return "April"; break;
case "05": return "May"; break;
case "06": return "June"; break;
case "07": return "July"; break;
case "08": return "August"; break;
case "09": return "September"; break;
case "10": return "October"; break;
case "11": return "November"; break;
case "12": return "December"; break;
}
}
so use the method will get the month name
maybe you can Consider to change the month "name" to "Digital"
January => 01
February => 02
if could,it will be more Direct
hi,
createEvent() doesn't work on android (4.4), it returns "invalid action", although createEventInteractively() works. Last commit where it works is bf9f0b5. (I was using example code from readme)
The current parameters (title, location, notes, startDate, endDate) are subject to change in some scenarios, making it hard to interact with the calendar. Assigning an ID to the event which will not change regardless of the other parameters changing will make looking up and deleting events easier.
tcowin@macbookpro[/Development/SETACMeetingApp]$ phonegap local plugin add https://github.com/EddyVerbruggen/Calendar-PhoneGap-Plugin.git
[phonegap] adding the plugin: https://github.com/EddyVerbruggen/Calendar-PhoneGap-Plugin.git
/usr/local/lib/node_modules/phonegap/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:364
throw new Error('grafting xml at s
^
Error: grafting xml at selector "widget" from "/Development/SETACMeetingApp/platforms/android/res/xml/config.xml" during config install went bad :(
at /usr/local/lib/node_modules/phonegap/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:364:51
at Array.forEach (native)
at /usr/local/lib/node_modules/phonegap/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:331:63
at Array.forEach (native)
at /usr/local/lib/node_modules/phonegap/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:315:45
at Array.forEach (native)
at Object.module.exports.add_plugin_changes (/usr/local/lib/node_modules/phonegap/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:310:35)
at /usr/local/lib/node_modules/phonegap/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:410:28
at Array.forEach (native)
at Object.module.exports.process (/usr/local/lib/node_modules/phonegap/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:409:49)
I am in Android 4.0.3,but I think that ios have the same problem too
When I use PGB 3.3 with your 3.2 version,your .js file is a Independent individuals,it under such kind of directory,so I use this way...
<script type="text/javascript" src="js/Calendar.js"></script>
everything is all work with your sample code
but when I use PGB 3.3 with your 4.0 version,your .js file is become Automatically loadind by cordova_plugins.js
so...the line in the html should be delete
script type="text/javascript" src="js/Calendar.js" /script>
cordova_plugins.js
{
"file": "plugins/nl.x-services.plugins.calendar/www/Calendar.js",
"id": "nl.x-services.plugins.calendar.Calendar",
"clobbers": ["Calendar"]
}
everything is all broken with your same sample code...
Hi I have an app that when a user clicks on a marker on a google map it opens an info window which displays details about the event from mysql database. Is it possible to click a button to add an event to the phones calander using this plugin when the register button is clicked. See screenshot. Thanks
Hello.
We use createEvent function for creating new event in calendar. On Android it works, but on iOS called error callback with message about 'localizeddescription no calendar set'.
We don't use named calendar, how to fix it?
iPad iOS 6.1.3, iPhone 4, iPhone 5.
In the console log I am receiving this warning from the plugin.
THREAD WARNING: ['Calendar'] took '6732.648926' ms. Plugin should use a background thread.
The calendar find event method breaks the application with error:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'Unable to parse the format string "title == 'Event Title' AND location == 'Address' AND notes == 'Event Notes
'"'
Note: I replaced the event details with dummy text, if you want to see the original content please let me know.
When I checked the Calendar.m
file I found the following semanticError Method definition for 'findEKEventsWithTitle:location:message:startDate:endDate:calendar' not found
I can confirm that findEvent
method is working fine on Android Devices and the above issue is only affecting iOS
we are developing an app using this great plugin (thanks for developing it), I want to increase their functionality adding alarms to the functions, what should I read or check to help me developing this add-on???
Android 4.0.3,HTC Sensation XL
iOS7.0.4,iPad mini,the original version is 6.1.2
This is my full code
function makeCalendar()
{
var title = "小包的主題"; //主題
var startDate = new Date("December 24, 2013 13:00:00"); //開始日期
var endDate = new Date("December 25, 2013 14:30:00"); //結束日期
var location = "小包的地點"; //地點
var notes = "小包的說明"; //說明
var success = function(message) { navigator.notification.alert("成功:" + JSON.stringify(message), null, endMessage_title, endMessage_botton.split(",")[0]); };
var error = function(message) { navigator.notification.alert("失敗:" + message, null, endMessage_title, endMessage_botton.split(",")[0]); };
window.plugins.calendar.createEvent(title,location,notes,startDate,endDate,success,error);
window.plugins.calendar.findEvent(title,location,notes,startDate,endDate,success,error);
var newTitle = "新的主題";
window.plugins.calendar.modifyEvent(title,location,notes,startDate,endDate,newTitle,location,notes,startDate,endDate,success,error);
window.plugins.calendar.deleteEvent(newTitle,location,notes,startDate,endDate,success,error);
}
in Android,this function is work,but the "endDate" is not correct
http://www.littlebau.com/ca01.png
in iOS,this function is not work
http://www.littlebau.com/ca02.png
Is there a way to list phone calendars using your plugin?
Great plugin. Would be great to see at least the findEvent implemented for Android.
this is my code:
showEvents : function(callback){
var calendarName = 'Eventos';
window.plugins.calendar.findAllEventsInNamedCalendar(calendarName,app.success,app.error);
callback();
},success : function(message) {
app.mensaje = JSON.stringify(message);
alert("Success:" + JSON.stringify(message));
},
error : function(message) {
alert("Error: " + message);
}
My problem is when I call my showEvents function sometimes it retrieves me empty response, but is not giving me an error, It enters in the success function, even if i create my events in Calendar App or via this plugin it retrieves me my response empty, but when this happens I discovered that if i create a new event via Calendar App it only brings me that event, not the other ones, only those who were created after it failed.
I hope you can help me.
Thanks in advance, happy new year :)
I am using PGB 3.3
this is my method
window.plugins.calendar.createEventInteractively
when I use plugin < 4.2.2
the method can be work
but now I use the latest 4.2.2
the method can't work
PS
this method can be work in latest 4.2.2
window.plugins.calendar.createEvent
I saw the plugin (is that your friend or?)
https://build.phonegap.com/plugins/402
(because of I saw The upper right corner that you are one of the "contributors")
https://github.com/denisz/Calendar-PhoneGap-Plugin/blob/0515dd0bc514cd1e568085b0dd6036cc3d757839/README.md
but it look like almost as same as yours
https://build.phonegap.com/plugins/168
I think,you are the original
is it necessary to tell the phonegap team,You're the only?!
Hi and thanks for this plugin
I'm trying to use this plugin in my app (using phonegap build 2.9) and under ios 7 works perfect, but when I try to use it under android (4.2.2 in my tests) i got the error: "class not found".
I'm using this line (acording the documentation) window.plugins.calendar.createEvent(title,location,notes,startDate,endDate,success,error);
Any idea about this issue?
Is the date format in the example the only acceptable date format? Can you lease add this to the doco?
Thanks again for taking the time to write this plugin.
If the notes of the events are empty the object returned is incomplete (it has not startDate).
do something like that:
NSString * notes = @"";
if ([event.notes length] > 0)
notes = event.notes;
and use "notes" as the value for creating the returned object.
I don't know if this is issue or I'm making something bad... any one has the same problem??
If I use this code, the example, and it works perfect in android and ios app.
var startDate = new Date("September 24, 2013 13:00:00");
var endDate = new Date("September 24, 2013 14:30:00");
var title = "My nice event";
var location = "Home";
var notes = "Some notes about this event.";
var success = function(message) { alert("Success: " + JSON.stringify(message)); };
var error = function(message) { alert("Error: " + message); };
// create (the only function also supported on Android for now)
window.plugins.calendar.createEvent(title,location,notes,startDate,endDate,success,error);
When I try to get the startDate and endDate from a saved data using localstorage the app broke under ios (closes) but works perfect under android when calendar pluging is called. For example this code:
window.localStorage.setItem("value_start", "September 24, 2013 13:00:00");
window.localStorage.setItem("value_end", "September 24, 2013 13:00:00");
var value_start=window.localStorage.getItem("value_start);
var value_end=window.localStorage.getItem("value_end);
var startDate = new Date(value_start);
var endDate = new Date(value_end);
var title = "My nice event";
var location = "Home";
var notes = "Some notes about this event.";
var success = function(message) { alert("Success: " + JSON.stringify(message)); };
var error = function(message) { alert("Error: " + message); };
// create (the only function also supported on Android for now)
window.plugins.calendar.createEvent(title,location,notes,startDate,endDate,success,error);
Thanks :)
Dear Sir,
Thanks for the great plugin.
Is there any way to add the event silently without showing the add Event Window of the native Calendar in android.
Hi,
I've been trying for the last week to add your plugin to my app. Unfortunately I have had no luck with even so much as a response to the native calendar on iOS. Could the method definition error be the root of the problem?
This is the error in xcode:
Here is also my javascript code if this could also be the problem:
function Calendar_Add() {
var startDate = new Date(2014,2,15,18,30,0,0,0); // beware: month 0 = january, 11 = december
var endDate = new Date(2014,2,15,19,30,0,0,0);
var calendarName = ""
var title = "";
var location = place;
var notes = "";
var success = function(message) { alert("Success: " + JSON.stringify(message)); };
var error = function(message) { alert("Error: " + message); };
window.plugins.calendar.createCalendar(calendarName,success,error);
window.plugins.calendar.findEvent(title,location,notes,success,error);
window.plugins.calednar.createEventInNamedCalendar(title,location,notes,startDate,endDate,calendarName,success,error);
}
function IE_navigate(index) {
Bindex = index;
$.mobile.changePage('#eventPage', 'slidefade');
$.each(data, function(i,item){
if (i == Bindex) {
//Clear if page was previously populated
//Populate page
$('#page-title').html(item.title + "<br />");
$('#page-region').html(item.Region + "<br />");
$('#page-content').html(item.fullInfo + "<br />");
//var year = moment(item.Date,"YYYY,MM,DD,hh,mm,s,ms,a");
startDate = new Date(item.Date);
endDate = new Date(item.Date);
title = item.title;
place = item.Region;
calendarName = item.title;
$(this).ready(function(e) {
$('#page-content').on('click','a', function(e){
e.preventDefault();
currentPage = $(this).attr('href');
window.open(currentPage, '_system', 'location=yes')
});
});
// return false;
return false
}
});
};
Thank you,
David
Hi Is it possible to detect cancel button?
I clicked on a button to add an event into my calendar. The event shows up and gives me the possibility to edit the event and to save or cancel it. A click on cancel wouldn't add the event to my calendar, but fires the success event back to my app. Any suggestions?
Hi Eddy,
Really cool plugin 👍
I have some questions though.
Q1. Why iOS doesn't support "adding events interactively" ?
Q2. On Andorid, when adding events interactively, i can able to see the calendar overlay before adding the event. But, if i click "cancel" in the overlay, "success callback" is getting called instead of "failure callback". Why is it so ? (I can internally call "findEvent" and then call the correct callback but is it possible to do from the plugin itself ?)
Thanks,
Vigneswaran M
how would you add feature for repeat (every day, every week...) and alarm (e.g. on time, 5 min before...) in ios...
it would be nice if the plugin can do that...
thanks
Manage to get working - add calendar event and find calendar event.
However I have not been able to get delete calendar event to work.
window.plugins.calendar.deleteEvent(title,location,notes,startDate,endDate,success,error);
When I call the API, I always get "success:false" return. I have passed in the same params when creating the calender event and find calender event. Have tried it on emulator (4.3 API 18) and on mobile HTC 1 (v 4.4) and Samsung Mini (4.3). All fails. If u need any more info let me know.
Hi,
I have a project with android and iOS, with cordova 3.3. When add the plugin, the plugin add without problem but when build I get this error:
Error: An error occurred while building the ios project.2014-01-23 16:36:30.574 xcodebuild[36038:4403] DeveloperPortal: Using pre-existing current store at URL (file:///Users/manuelcm/Library/Developer/Xcode/DeveloperPortal%205.0.2.db). 2014-01-23 16:36:31.342 xcodebuild[36047:5903] DeveloperPortal: Using pre-existing current store at URL (file:///Users/manuelcm/Library/Developer/Xcode/DeveloperPortal%205.0.2.db). 2014-01-23 16:36:32.134 xcodebuild[36057:4507] DeveloperPortal: Using pre-existing current store at URL (file:///Users/manuelcm/Library/Developer/Xcode/DeveloperPortal%205.0.2.db). ** BUILD FAILED ** The following build commands failed: Ld build/device/Talent.upc.app/Talent.upc normal armv7 (1 failure) ** BUILD FAILED ** The following build commands failed: Ld build/emulator/Talent.upc.app/Talent.upc normal i386 (1 failure) at ChildProcess. (/usr/local/lib/node_modules/cordova/src/compile.js:65:22) at ChildProcess.EventEmitter.emit (events.js:98:17) at maybeClose (child_process.js:735:16) at Socket. (child_process.js:948:11) at Socket.EventEmitter.emit (events.js:95:17) at Pipe.close (net.js:466:12)
If do the build only for android get this error:
Error: An error occurred while building the android project.Error executing "ant debug -f "/Users/manuelcm/Documents/test.ischool.fundacioupc.com/platforms/android/build.xml"": BUILD FAILED /Users/manuelcm/Documents/sdk_android/tools/ant/build.xml:653: The following error occurred while executing this line: /Users/manuelcm/Documents/sdk_android/tools/ant/build.xml:698: null returned: 1 Total time: 4 seconds at ChildProcess. (/usr/local/lib/node_modules/cordova/src/compile.js:65:22) at ChildProcess.EventEmitter.emit (events.js:98:17) at maybeClose (child_process.js:735:16) at Socket. (child_process.js:948:11) at Socket.EventEmitter.emit (events.js:95:17) at Pipe.close (net.js:466:12)
When remove the plugin all works fine.
I need also a social sharing plugin, and i try https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin
and when build for iOS get the same error (android build fine)
Thanks
Hi Eddy,
I am not a Objective C developer. So, bare with my question. I found a link for "Modifying Calendar Event" in IOS.
In the above link, kindly look into "Modifying Event Data". Does the example shows how to open the "Calendar Edit Overlay" ? If so, is it possible to add event interactively in iOS ?
Regards,
Vigneswaran M
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.