選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

field_group.js 2.6 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
  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. },
  9. make: function() {
  10. if(this.fields) {
  11. this._super();
  12. this.refresh();
  13. if(!this.no_submit_on_enter) {
  14. $(this.body).find(".btn:first").removeClass("btn-default").addClass("btn-primary");
  15. this.catch_enter_as_submit();
  16. }
  17. }
  18. },
  19. first_button: false,
  20. // make_fields: function() {
  21. // this.fields_dict = {}; // reset
  22. // for(var i=0; i< this.fields.length; i++) {
  23. // var df = this.fields[i];
  24. // if(!df.fieldname && df.label) {
  25. // df.fieldname = df.label.replace(/ /g, '_').toLowerCase();
  26. // }
  27. // if(!df.fieldtype) df.fieldtype="Data";
  28. //
  29. // var div = $a(this.body, 'div');
  30. // f = make_field(df, null, div, null);
  31. // f.not_in_form = 1;
  32. // f.dialog_wrapper = this.wrapper || null;
  33. // this.fields_dict[df.fieldname] = f
  34. // f.refresh();
  35. //
  36. // // first button primary ?
  37. // if(df.fieldtype=='Button' && !this.first_button) {
  38. // $(f.input).removeClass("btn-default").addClass('btn-info');
  39. // this.first_button = true;
  40. // }
  41. // if(!df.description) {
  42. // $(f.wrapper).find(".help-box").toggle(false);
  43. // }
  44. // }
  45. // },
  46. catch_enter_as_submit: function() {
  47. var me = this;
  48. $(this.body).find('input[type="text"], input[type="password"]').keypress(function(e) {
  49. if(e.which==13) {
  50. $(me.body).find('.btn-primary:first').click();
  51. }
  52. })
  53. },
  54. get_input: function(fieldname) {
  55. var field = this.fields_dict[fieldname];
  56. return $(field.txt ? field.txt : field.input);
  57. },
  58. get_values: function() {
  59. var ret = {};
  60. var errors = [];
  61. for(var key in this.fields_dict) {
  62. var f = this.fields_dict[key];
  63. var v = f.get_parsed_value();
  64. if(f.df.reqd && !v)
  65. errors.push(f.df.label + ' is mandatory');
  66. if(v) ret[f.df.fieldname] = v;
  67. }
  68. if(errors.length) {
  69. msgprint('<b>Please check the following Errors</b>\n' + errors.join('\n'));
  70. return null;
  71. }
  72. return ret;
  73. },
  74. get_value: function(key) {
  75. var f = this.fields_dict[key];
  76. return f && (f.get_parsed_value ? f.get_parsed_value() : null);
  77. },
  78. set_value: function(key, val){
  79. var f = this.fields_dict[key];
  80. if(f) {
  81. f.set_input(val);
  82. }
  83. },
  84. set_values: function(dict) {
  85. for(var key in dict) {
  86. if(this.fields_dict[key]) {
  87. this.set_value(key, dict[key]);
  88. }
  89. }
  90. },
  91. clear: function() {
  92. for(key in this.fields_dict) {
  93. var f = this.fields_dict[key];
  94. if(f) {
  95. f.set_input(f.df['default'] || '');
  96. }
  97. }
  98. },
  99. });