1
0

project-deployer.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. Projects = new Mongo.Collection('projects');
  2. if (Meteor.isClient) {
  3. Meteor.subscribe('projects');
  4. Template.management.helpers({
  5. projects: function () {
  6. return Projects.find({}, {sort: {label: 1}});
  7. }
  8. });
  9. Template.projectForm.onRendered(function() {
  10. new Clipboard('.btn.clipboard');
  11. });
  12. Template.projectForm.events({
  13. 'submit .new-project': function (event) {
  14. event.preventDefault();
  15. var form = event.target;
  16. console.log('handled', form.id.value);
  17. if( form.id.value ) {
  18. Meteor.call('editProject',form.id.value, form.label.value, form.git_url.value, form.public_url.value, form.commands.value);
  19. form.id.value = '';
  20. } else {
  21. Meteor.call('addProject', form.label.value, form.git_url.value, form.public_url.value, form.commands.value);
  22. }
  23. Session.set('projectToEdit', undefined);
  24. form.label.value = '';
  25. form.git_url.value = '';
  26. form.public_url.value = '';
  27. form.commands.value = '';
  28. },
  29. 'click .cancel': function(event) {
  30. event.preventDefault();
  31. Session.set('projectToEdit', undefined);
  32. },
  33. 'click .trash': function(event) {
  34. event.preventDefault();
  35. Meteor.call('deleteProject', Session.get('projectToEdit')._id);
  36. Session.set('projectToEdit', undefined);
  37. }
  38. });
  39. Template.projectForm.helpers({
  40. project: function() {
  41. return Session.get('projectToEdit');
  42. },
  43. editionMode: function() {
  44. return Session.get('projectToEdit') ? '' : 'hidden';
  45. },
  46. deployLink: function() {
  47. return Meteor.absoluteUrl('deploy?token=XXXX&project_id=' + Session.get('projectToEdit')._id);
  48. }
  49. });
  50. Template.project.events({
  51. 'click .edit': function(event) {
  52. event.preventDefault();
  53. return Meteor.call('getProject', this._id, function(error, result) {
  54. Session.set('projectToEdit', result);
  55. });
  56. },
  57. });
  58. }
  59. if (Meteor.isServer) {
  60. Meteor.publish('projects', function() {
  61. return Projects.find({});
  62. });
  63. }
  64. Meteor.methods({
  65. listProjects: function() {
  66. return Projects.find({}, {sort: {label: 1}});
  67. },
  68. getProject: function(id) {
  69. return Projects.findOne({_id: id});
  70. },
  71. addProject: function(label, git_url, public_url ,commands) {
  72. console.log('addProjects', arguments);
  73. Projects.insert({
  74. label: label,
  75. git_url: git_url,
  76. public_url: public_url,
  77. commands: commands
  78. });
  79. },
  80. editProject: function(id, label, git_url, public_url ,commands) {
  81. console.log('editProjects', arguments);
  82. Projects.update(
  83. id,
  84. { $set: {
  85. label: label,
  86. git_url: git_url,
  87. public_url: public_url,
  88. commands: commands
  89. }
  90. }
  91. );
  92. },
  93. deleteProject: function(id) {
  94. Projects.remove(id);
  95. }
  96. });