|
3 | 3 | var filters; |
4 | 4 |
|
5 | 5 | $.filters = filters = { |
6 | | - options: { |
7 | | - regional: { |
8 | | - datePicker: { |
9 | | - dateFormat: 'mm/dd/yy' |
10 | | - } |
11 | | - } |
12 | | - }, |
13 | | - |
14 | | - append: function(field_label, field_name, field_type, field_value, field_operator, field_options, index) { |
15 | | - var value_name = 'f[' + field_name + '][' + index + '][v]'; |
| 6 | + append: function(options) { |
| 7 | + options = options || {}; |
| 8 | + var field_label = options['label']; |
| 9 | + var field_name = options['name']; |
| 10 | + var field_type = options['type']; |
| 11 | + var field_value = options['value']; |
| 12 | + var field_operator = options['operator']; |
| 13 | + var select_options = options['select_options']; |
| 14 | + var index = options['index']; |
| 15 | + var value_name = 'f[' + field_name + '][' + index + '][v]'; |
16 | 16 | var operator_name = 'f[' + field_name + '][' + index + '][o]'; |
| 17 | + var control = null; |
| 18 | + var additional_control = null; |
| 19 | + |
17 | 20 | switch(field_type) { |
18 | 21 | case 'boolean': |
19 | 22 | var control = '<select class="input-sm form-control" name="' + value_name + '">' + |
|
26 | 29 | '</select>'; |
27 | 30 | break; |
28 | 31 | case 'date': |
| 32 | + additional_control = |
| 33 | + '<input size="20" class="date additional-fieldset default input-sm form-control" style="display:' + ((!field_operator || field_operator == "default") ? 'inline-block' : 'none') + ';" type="text" name="' + value_name + '[]" value="' + (field_value[0] || '') + '" /> ' + |
| 34 | + '<input size="20" placeholder="-∞" class="date additional-fieldset between input-sm form-control" style="display:' + ((field_operator == "between") ? 'inline-block' : 'none') + ';" type="text" name="' + value_name + '[]" value="' + (field_value[1] || '') + '" /> ' + |
| 35 | + '<input size="20" placeholder="∞" class="date additional-fieldset between input-sm form-control" style="display:' + ((field_operator == "between") ? 'inline-block' : 'none') + ';" type="text" name="' + value_name + '[]" value="' + (field_value[2] || '') + '" />'; |
29 | 36 | case 'datetime': |
30 | 37 | case 'timestamp': |
31 | | - var control = '<select class="switch-additionnal-fieldsets input-sm form-control" name="' + operator_name + '">' + |
| 38 | + control = control || '<select class="switch-additionnal-fieldsets input-sm form-control" name="' + operator_name + '">' + |
32 | 39 | '<option ' + (field_operator == "default" ? 'selected="selected"' : '') + ' data-additional-fieldset="default" value="default">' + RailsAdmin.I18n.t("date") + '</option>' + |
33 | 40 | '<option ' + (field_operator == "between" ? 'selected="selected"' : '') + ' data-additional-fieldset="between" value="between">' + RailsAdmin.I18n.t("between_and_") + '</option>' + |
34 | 41 | '<option ' + (field_operator == "today" ? 'selected="selected"' : '') + ' value="today">' + RailsAdmin.I18n.t("today") + '</option>' + |
|
39 | 46 | '<option ' + (field_operator == "_not_null" ? 'selected="selected"' : '') + ' value="_not_null">' + RailsAdmin.I18n.t("is_present") + '</option>' + |
40 | 47 | '<option ' + (field_operator == "_null" ? 'selected="selected"' : '') + ' value="_null" >' + RailsAdmin.I18n.t("is_blank") + '</option>' + |
41 | 48 | '</select>' |
42 | | - var additional_control = |
43 | | - '<input class="date additional-fieldset default input-sm form-control" style="display:' + ((!field_operator || field_operator == "default") ? 'inline-block' : 'none') + ';" type="text" name="' + value_name + '[]" value="' + (field_value[0] || '') + '" /> ' + |
44 | | - '<input placeholder="-∞" class="date additional-fieldset between input-sm form-control" style="display:' + ((field_operator == "between") ? 'inline-block' : 'none') + ';" type="text" name="' + value_name + '[]" value="' + (field_value[1] || '') + '" /> ' + |
45 | | - '<input placeholder="∞" class="date additional-fieldset between input-sm form-control" style="display:' + ((field_operator == "between") ? 'inline-block' : 'none') + ';" type="text" name="' + value_name + '[]" value="' + (field_value[2] || '') + '" />'; |
| 49 | + additional_control = additional_control || |
| 50 | + '<input size="25" class="datetime additional-fieldset default input-sm form-control" style="display:' + ((!field_operator || field_operator == "default") ? 'inline-block' : 'none') + ';" type="text" name="' + value_name + '[]" value="' + (field_value[0] || '') + '" /> ' + |
| 51 | + '<input size="25" placeholder="-∞" class="datetime additional-fieldset between input-sm form-control" style="display:' + ((field_operator == "between") ? 'inline-block' : 'none') + ';" type="text" name="' + value_name + '[]" value="' + (field_value[1] || '') + '" /> ' + |
| 52 | + '<input size="25" placeholder="∞" class="datetime additional-fieldset between input-sm form-control" style="display:' + ((field_operator == "between") ? 'inline-block' : 'none') + ';" type="text" name="' + value_name + '[]" value="' + (field_value[2] || '') + '" />'; |
46 | 53 | break; |
47 | 54 | case 'enum': |
48 | 55 | var multiple_values = ((field_value instanceof Array) ? true : false) |
49 | | - var control = '<select style="display:' + (multiple_values ? 'none' : 'inline-block') + '" ' + (multiple_values ? '' : 'name="' + value_name + '"') + ' data-name="' + value_name + '" class="select-single input-sm form-control">' + |
| 56 | + control = '<select style="display:' + (multiple_values ? 'none' : 'inline-block') + '" ' + (multiple_values ? '' : 'name="' + value_name + '"') + ' data-name="' + value_name + '" class="select-single input-sm form-control">' + |
50 | 57 | '<option value="_discard">...</option>' + |
51 | 58 | '<option ' + (field_value == "_present" ? 'selected="selected"' : '') + ' value="_present">' + RailsAdmin.I18n.t("is_present") + '</option>' + |
52 | 59 | '<option ' + (field_value == "_blank" ? 'selected="selected"' : '') + ' value="_blank">' + RailsAdmin.I18n.t("is_blank") + '</option>' + |
53 | 60 | '<option disabled="disabled">---------</option>' + |
54 | | - field_options + |
| 61 | + select_options + |
55 | 62 | '</select>' + |
56 | 63 | '<select multiple="multiple" style="display:' + (multiple_values ? 'inline-block' : 'none') + '" ' + (multiple_values ? 'name="' + value_name + '[]"' : '') + ' data-name="' + value_name + '[]" class="select-multiple input-sm form-control">' + |
57 | | - field_options + |
| 64 | + select_options + |
58 | 65 | '</select> ' + |
59 | 66 | '<a href="#" class="switch-select"><i class="icon-' + (multiple_values ? 'minus' : 'plus') + '"></i></a>'; |
60 | 67 | break; |
61 | 68 | case 'string': |
62 | 69 | case 'text': |
63 | 70 | case 'belongs_to_association': |
64 | | - var control = '<select class="switch-additionnal-fieldsets input-sm form-control" value="' + field_operator + '" name="' + operator_name + '">' + |
| 71 | + control = '<select class="switch-additionnal-fieldsets input-sm form-control" value="' + field_operator + '" name="' + operator_name + '">' + |
65 | 72 | '<option data-additional-fieldset="additional-fieldset"' + (field_operator == "like" ? 'selected="selected"' : '') + ' value="like">' + RailsAdmin.I18n.t("contains") + '</option>' + |
66 | 73 | '<option data-additional-fieldset="additional-fieldset"' + (field_operator == "is" ? 'selected="selected"' : '') + ' value="is">' + RailsAdmin.I18n.t("is_exactly") + '</option>' + |
67 | 74 | '<option data-additional-fieldset="additional-fieldset"' + (field_operator == "starts_with" ? 'selected="selected"' : '') + ' value="starts_with">' + RailsAdmin.I18n.t("starts_with") + '</option>' + |
|
70 | 77 | '<option ' + (field_operator == "_not_null" ? 'selected="selected"' : '') + ' value="_not_null">' + RailsAdmin.I18n.t("is_present") + '</option>' + |
71 | 78 | '<option ' + (field_operator == "_null" ? 'selected="selected"' : '') + ' value="_null">' + RailsAdmin.I18n.t("is_blank") + '</option>' + |
72 | 79 | '</select>' |
73 | | - var additional_control = '<input class="additional-fieldset input-sm form-control" style="display:' + (field_operator == "_blank" || field_operator == "_present" ? 'none' : 'inline-block') + ';" type="text" name="' + value_name + '" value="' + field_value + '" /> '; |
| 80 | + additional_control = '<input class="additional-fieldset input-sm form-control" style="display:' + (field_operator == "_blank" || field_operator == "_present" ? 'none' : 'inline-block') + ';" type="text" name="' + value_name + '" value="' + field_value + '" /> '; |
74 | 81 | break; |
75 | 82 | case 'integer': |
76 | 83 | case 'decimal': |
77 | 84 | case 'float': |
78 | | - var control = '<select class="switch-additionnal-fieldsets input-sm form-control" name="' + operator_name + '">' + |
| 85 | + control = '<select class="switch-additionnal-fieldsets input-sm form-control" name="' + operator_name + '">' + |
79 | 86 | '<option ' + (field_operator == "default" ? 'selected="selected"' : '') + ' data-additional-fieldset="default" value="default">' + RailsAdmin.I18n.t("number") + '</option>' + |
80 | 87 | '<option ' + (field_operator == "between" ? 'selected="selected"' : '') + ' data-additional-fieldset="between" value="between">' + RailsAdmin.I18n.t("between_and_") + '</option>' + |
81 | 88 | '<option disabled="disabled">---------</option>' + |
82 | 89 | '<option ' + (field_operator == "_not_null" ? 'selected="selected"' : '') + ' value="_not_null">' + RailsAdmin.I18n.t("is_present") +'</option>' + |
83 | 90 | '<option ' + (field_operator == "_null" ? 'selected="selected"' : '') + ' value="_null" >' + RailsAdmin.I18n.t("is_blank") + '</option>' + |
84 | 91 | '</select>' |
85 | | - var additional_control = |
| 92 | + additional_control = |
86 | 93 | '<input class="additional-fieldset default input-sm form-control" style="display:' + ((!field_operator || field_operator == "default") ? 'inline-block' : 'none') + ';" type="' + field_type + '" name="' + value_name + '[]" value="' + (field_value[0] || '') + '" /> ' + |
87 | 94 | '<input placeholder="-∞" class="additional-fieldset between input-sm form-control" style="display:' + ((field_operator == "between") ? 'inline-block' : 'none') + ';" type="' + field_type + '" name="' + value_name + '[]" value="' + (field_value[1] || '') + '" /> ' + |
88 | 95 | '<input placeholder="∞" class="additional-fieldset between input-sm form-control" style="display:' + ((field_operator == "between") ? 'inline-block' : 'none') + ';" type="' + field_type + '" name="' + value_name + '[]" value="' + (field_value[2] || '') + '" />'; |
89 | 96 | break; |
90 | 97 | default: |
91 | | - var control = '<input type="text" class="input-sm form-control" name="' + value_name + '" value="' + field_value + '"/> '; |
| 98 | + control = '<input type="text" class="input-sm form-control" name="' + value_name + '" value="' + field_value + '"/> '; |
92 | 99 | break; |
93 | 100 | } |
94 | 101 |
|
95 | | - var content = '<p class="filter form-search">' + |
96 | | - '<span class="label label-info form-label"><a href="#" class="delete"><i class="icon-trash icon-white"></i></a> ' + field_label + '</span> ' + |
97 | | - control + " " + |
98 | | - (additional_control || '') + |
99 | | - '</p> '; |
100 | | - $('#filters_box').append(content); |
101 | | - $('#filters_box .date').datepicker(this.options.regional.datePicker); |
| 102 | + var $content = $('<p>') |
| 103 | + .addClass('filter form-search') |
| 104 | + .append('<span class="label label-info form-label"><a href="#delete" class="delete"><i class="fa fa-trash-o fa-fw icon-white"></i></a> ' + field_label + '</span>') |
| 105 | + .append(' ' + control + ' ' + (additional_control || '')); |
| 106 | + |
| 107 | + $('#filters_box').append($content); |
| 108 | + |
| 109 | + $content.find('.date, .datetime').datetimepicker({ |
| 110 | + locale: RailsAdmin.I18n.locale, |
| 111 | + showTodayButton: true, |
| 112 | + format: options['datetimepicker_format'] |
| 113 | + }); |
| 114 | + |
102 | 115 | $("hr.filters_box:hidden").show('slow'); |
103 | 116 | } |
104 | 117 | } |
105 | 118 |
|
106 | 119 | $(document).on('click', "#filters a", function(e) { |
107 | 120 | e.preventDefault(); |
108 | | - $.filters.append( |
109 | | - $(this).data('field-label'), |
110 | | - $(this).data('field-name'), |
111 | | - $(this).data('field-type'), |
112 | | - $(this).data('field-value'), |
113 | | - $(this).data('field-operator'), |
114 | | - $(this).data('field-options'), |
115 | | - $.now().toString().slice(6,11) |
116 | | - ); |
| 121 | + $.filters.append({ |
| 122 | + label: $(this).data('field-label'), |
| 123 | + name: $(this).data('field-name'), |
| 124 | + type: $(this).data('field-type'), |
| 125 | + value: $(this).data('field-value'), |
| 126 | + operator: $(this).data('field-operator'), |
| 127 | + select_options: $(this).data('field-options'), |
| 128 | + index: $.now().toString().slice(6,11), |
| 129 | + datetimepicker_format: $(this).data('field-datetimepicker-format') |
| 130 | + }); |
117 | 131 | }); |
118 | 132 |
|
119 | 133 | $(document).on('click', "#filters_box .delete", function(e) { |
|
0 commit comments