You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

field_group.js 2.2 KiB

11 years ago
11 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
  2. // MIT License. See license.txt
  3. wn.provide('wn.ui');
  4. wn.ui.FieldGroup = wn.ui.form.Layout.extend({
  5. init: function(opts) {
  6. $.extend(this, opts);
  7. this._super();
  8. $.each(this.fields || [], function(i, f) {
  9. if(!f.fieldname && f.label) {
  10. f.fieldname = f.label.replace(/ /g, "_").toLowerCase();
  11. }
  12. })
  13. },
  14. make: function() {
  15. if(this.fields) {
  16. this._super();
  17. this.refresh();
  18. // set default
  19. $.each(this.fields_list, function(i, f) {
  20. if(f.df["default"]) f.set_input(f.df["default"]);
  21. })
  22. if(!this.no_submit_on_enter) {
  23. $(this.body).find("[data-fieldtype='Button']").filter(":first")
  24. .removeClass("btn-default").addClass("btn-primary");
  25. this.catch_enter_as_submit();
  26. }
  27. }
  28. },
  29. first_button: false,
  30. catch_enter_as_submit: function() {
  31. var me = this;
  32. $(this.body).find('input[type="text"], input[type="password"]').keypress(function(e) {
  33. if(e.which==13) {
  34. $(me.body).find('.btn-primary:first').click();
  35. }
  36. })
  37. },
  38. get_input: function(fieldname) {
  39. var field = this.fields_dict[fieldname];
  40. return $(field.txt ? field.txt : field.input);
  41. },
  42. get_values: function() {
  43. var ret = {};
  44. var errors = [];
  45. for(var key in this.fields_dict) {
  46. var f = this.fields_dict[key];
  47. if(f.get_parsed_value) {
  48. var v = f.get_parsed_value();
  49. if(f.df.reqd && !v)
  50. errors.push('- ' + wn._(f.df.label) + "<br>");
  51. if(v) ret[f.df.fieldname] = v;
  52. }
  53. }
  54. if(errors.length) {
  55. msgprint('<i class="icon-warning-sign"></i> <b>' + wn._('Missing Values Required') + '</b>:<br><br>' + errors.join('\n'));
  56. return null;
  57. }
  58. return ret;
  59. },
  60. get_value: function(key) {
  61. var f = this.fields_dict[key];
  62. return f && (f.get_parsed_value ? f.get_parsed_value() : null);
  63. },
  64. set_value: function(key, val){
  65. var f = this.fields_dict[key];
  66. if(f) {
  67. f.set_input(val);
  68. }
  69. },
  70. set_values: function(dict) {
  71. for(var key in dict) {
  72. if(this.fields_dict[key]) {
  73. this.set_value(key, dict[key]);
  74. }
  75. }
  76. },
  77. clear: function() {
  78. for(key in this.fields_dict) {
  79. var f = this.fields_dict[key];
  80. if(f) {
  81. f.set_input(f.df['default'] || '');
  82. }
  83. }
  84. },
  85. });