1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- Tasks = new Mongo.Collection("tasks");
- if (Meteor.isServer) {
- Meteor.publish('tasks', function () {
- var ret = Tasks.find();
- return ret;
- })
- }
- if (Meteor.isClient) {
- // This code only runs on the client
- Meteor.subscribe('tasks');
- Template.body.helpers({
- tasks: function () {
- if (Session.get('hideCompleted')) {
- return Tasks.find({ checked : { $ne : true }}, { sort: { createdAt: -1 }});
- } else {
- return Tasks.find({}, {sort: {createdAt: -1}});
- }
- },
- hideCompleted: function () {
- var ret = Session.get("hideCompleted");
- return ret;
- },
- incompleteCount: function () {
- var ret = Tasks.find({ checked: { $ne: true }}).count();
- return ret;
- }
- });
- // Inside the if (Meteor.isClient) block, right after Template.body.helpers:
- Template.body.events({
- "submit .new-task": function (event) {
- // This function is called when the new task form is submitted
- var text = event.target.text.value;
- // Insert a task into the collection.
- Meteor.call('addTask', text);
- // Clear form
- event.target.text.value = "";
- // Prevent default form submit
- return false;
- },
- 'change .hide-completed input': function (e) {
- Session.set('hideCompleted', e.target.checked);
- }
- });
- Template.task.events({
- 'click .delete': function (e) {
- Meteor.call('deleteTask', this._id);
- },
- 'click .toggle-checked' : function (e) {
- Meteor.call('setChecked', this._id, !this.checked);
- }
- });
- Accounts.ui.config({
- passwordSignupFields: "USERNAME_ONLY"
- });
- }
- Meteor.methods({
- addTask: function (text) {
- if (!Meteor.userId()) {
- throw new Meteor.Error('not-authorized');
- }
- var task = {
- text: text,
- createdAt: new Date(),
- owner: Meteor.userId(),
- username: Meteor.user().username
- };
- Tasks.insert(task);
- },
- deleteTask: function (taskId) {
- // Even not logged-in ?
- Tasks.remove(taskId);
- },
- setChecked: function (taskId, setChecked) {
- Tasks.update(taskId, { $set : { checked: setChecked }});
- }
- });
|