PageRenderTime 40ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/js/angajati.js

https://gitlab.com/adiclepcea/fisaautoturism
JavaScript | 135 lines | 122 code | 12 blank | 1 comment | 5 complexity | 7729e60a4f32fe4575d654229dcbe5a2 MD5 | raw file
  1. var Angajat = Backbone.Model.extend({
  2. url:"/angajati",
  3. defaults:{
  4. name: "",
  5. position : ""
  6. },
  7. className: "row",
  8. validate: function(attrs){
  9. var errors = [];
  10. if(!attrs.name){
  11. errors.push({name:"addName", message:"Trebuie sa introduceti numele angajatului!"});
  12. }
  13. if(!attrs.position){
  14. errors.push({name:"addPosition",message:"Trebuie sa introduceti functia angajatului!"});
  15. }
  16. return errors.length > 0 ? errors: false;
  17. }
  18. });
  19. var Angajati = Backbone.Collection.extend({
  20. model: Angajat
  21. });
  22. var angajat1 = new Angajat({
  23. name: "Mircea Nistor",
  24. position: "Head of security"
  25. });
  26. var AngajatView = Backbone.View.extend({
  27. tagName:"tr",
  28. model: new Angajat({name:"",position:""}),
  29. template:_.template($("#tmplAngajat").html()),
  30. initialize:function(){
  31. this.render();
  32. },
  33. events: {
  34. "click .editAngajat": 'editAngajat',
  35. "click .cancelAngajat": 'cancelAngajat',
  36. "click .delAngajat": 'delAngajat',
  37. "click .saveAngajat": 'saveAngajat'
  38. },
  39. editAngajat: function(e){
  40. $(".editAngajat").hide();
  41. $(".delAngajat").hide();
  42. this.$(".saveAngajat").show();
  43. this.$(".cancelAngajat").show();
  44. name=this.$(".name").html();
  45. position=this.$(".position").html();
  46. this.$(".name").html("<input type='TEXT' class='form-control name-update' value='"+name+"'/>");
  47. this.$(".position").html("<input type='TEXT' class='form-control position-update' value='"+position+"'/>");
  48. },
  49. cancelAngajat: function(e){
  50. $(".editAngajat").show();
  51. $(".delAngajat").show();
  52. $(".saveAngajat").hide();
  53. $(".cancelAngajat").hide();
  54. this.render();
  55. },
  56. delAngajat : function(e){
  57. if(!confirm("Sigur doriti stergerea angajatului selectat?")){
  58. this.cancelAngajat();
  59. return;
  60. }
  61. this.model.destroy();
  62. },
  63. saveAngajat: function(){
  64. this.model.set("name",this.$(".name-update").val());
  65. this.model.set("position",this.$(".position-update").val());
  66. this.render();
  67. this.cancelAngajat();
  68. },
  69. render: function(){
  70. var data = this.model ? this.model.toJSON() : {};
  71. this.$el.html(this.template(data));
  72. return this;
  73. }
  74. });
  75. var angajati = new Angajati([angajat1]);
  76. var AngajatiView = Backbone.View.extend({
  77. el: $("#container"),
  78. model: angajati,
  79. template: _.template($("#tmplAngajati").html()),
  80. initialize: function(options){
  81. this.model.on("remove",this.render,this);
  82. self = this;
  83. this.model.on("invalid",function(error){
  84. var err = "";
  85. self.clearErrorSigns();
  86. _.each(error.validationError, function(error){
  87. err+=error.message+"\n";
  88. $("#div"+error.name).addClass("has-error");
  89. });
  90. alert(err);
  91. });
  92. },
  93. clearErrorSigns: function(){
  94. $("div .form-group").removeClass("has-error");
  95. },
  96. events:{
  97. "click #addAngajat":'add'
  98. },
  99. add: function(e){
  100. e.preventDefault();
  101. var a = new Angajat({
  102. name:$("#addName").val(),
  103. position:$("#addPosition").val()
  104. });
  105. if(this.model.create(a).validationError==null){
  106. this.render();
  107. }
  108. //console.log(this.model.add([a],{validate:true})[0]);
  109. },
  110. render: function(){
  111. $("#MainMenu").find("li").removeClass("active");
  112. $('a[href="#Angajati"]').parent().addClass("active");
  113. $("#header").html("");
  114. var data = this.model ? this.model.toJSON() : {};
  115. this.$el.html(this.template(data));
  116. _.each(this.model.toArray(),function(a){
  117. if(a.validationError==null){
  118. $("#tblAngajati tbody").append(new AngajatView({model:a}).render().el);
  119. }
  120. });
  121. return this;
  122. }
  123. });