Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/webapp/webapp/static/js/factoryField.js
blob: 1c292d47b219fa090299f4758f0a0c6335d89b69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
// Generated by CoffeeScript 1.6.3
(function() {
  var factoryField;

  factoryField = function(order, value) {
    var add_option_button, add_option_none_button, buttons_container, container, dependence_container, dependence_forms, dependences, droppable, errors, field_widget, group_order, i, parentesis_close, parentesis_open, remove_button, values, widget_selected_dependence_form, widget_type, widget_types, widget_types_select_box, with_dependence_form, _i;
    widget_type = value['widget_type'];
    group_order = value['group_order'];
    errors = [];
    if (value.hasOwnProperty('errors')) {
      $.each(value['errors'], function(i, error) {
        return errors.push({
          'error': error
        });
      });
    }
    widget_types = [].concat(WIDGET_TYPES);
    widget_types = $.each(widget_types, function(i, v) {
      if (widget_type === v['key']) {
        return $.extend(v, {
          "selected": true
        });
      } else {
        return delete v.selected;
      }
    });
    dependence_forms = [
      {
        'key': "4",
        'value': "Sin parentesis"
      }, {
        'key': "1",
        'value': "( ID o/y ID ) o/y ( ID o/y ID )"
      }, {
        'key': "2",
        'value': "( ID o/y ID o/y ID ) o/y ID"
      }, {
        'key': "3",
        'value': "( ID o/y ID ) o/y ID o/y ID"
      }
    ];
    dependence_forms = $.each(dependence_forms, function(i, v) {
      if (value.hasOwnProperty('dependence')) {
        if (value['dependence'].form === v['key']) {
          return $.extend(v, {
            "selected": true
          });
        }
      }
    });
    with_dependence_form = group_order !== 0 || (group_order === 0 && order !== 0);
    field_widget = $(Mustache.render(TEMPLATES['field'], {
      "order": order,
      "group_order": group_order,
      "name": value['name'],
      "dependence": value['dependence'],
      "errors": errors,
      "visible_errors": errors.length,
      "WIDGET_TYPES": widget_types,
      "dependence_forms": dependence_forms
    }));
    remove_button = field_widget.find('.WField_remove');
    bindFieldRemoveButton(remove_button);
    add_option_button = field_widget.find('.WFieldOptions_add_button');
    bindFieldAddOptionButton(add_option_button);
    add_option_none_button = field_widget.find('.WFieldOptionsNone_add_button');
    bindFieldAddOptionButton(add_option_none_button);
    widget_types_select_box = field_widget.find('.WFieldWidgetType');
    bindFieldWidgetTypeSelectBox(widget_types_select_box);
    buttons_container = field_widget.find('.WFieldAddOptionButton_container');
    if (widget_type && $.inArray(widget_type, WITH_OPTIONS) !== -1) {
      add_option_button = $(Mustache.render(TEMPLATES['field_add_option_button'], {}));
      buttons_container.append(add_option_button);
      bindFieldAddOptionButton(add_option_button);
    }
    if (widget_type && $.inArray(widget_type, ["MultipleCheckBox", "ImageCheckBox"]) !== -1) {
      add_option_none_button = $(Mustache.render(TEMPLATES['field_add_option_none_button'], {}));
      buttons_container.append(add_option_none_button);
      bindFieldAddOptionButton(add_option_none_button, {
        none: 'True'
      });
    }
    if ($.inArray(widget_type, WITH_OPTIONS) !== -1) {
      if ($.inArray(widget_type, WITH_IMAGES) === -1) {
        $.each(value['options'] || [], function(id, opt_value) {
          var options_container;
          options_container = field_widget.find('.WFieldOptions_container');
          return factoryOption(id, opt_value, options_container, group_order, order);
        });
      } else {
        $.each(value['options'] || [], function(id, opt_value) {
          var options_container;
          options_container = field_widget.find('.WFieldOptions_container');
          if (opt_value.hasOwnProperty('img_name')) {
            return factoryImageOptionThumbnail(id, opt_value, options_container, group_order, order);
          } else {
            return factoryImageOptionUpload(id, opt_value, options_container, group_order, order);
          }
        });
      }
    } else {
      if (value['options'] && Object.keys(value['options']).length) {
        $.each(value['options'] || [], function(id, opt_value) {
          return factoryOptionDefault(group_order, field_widget, id, opt_value['text']);
        });
      } else {
        factoryOptionDefault(group_order, field_widget, void 0, void 0);
      }
    }
    values = [];
    dependence_container = field_widget.find(".dependence");
    if (value['dependence']) {
      values = value['dependence'].values;
    }
    for (i = _i = 0; _i <= 6; i = ++_i) {
      if (i >= values.length) {
        values[i] = '';
      }
    }
    factoryDependences(dependence_container, values, order, group_order);
    dependences = field_widget.find('[name*=".dependence.values"]');
    $.each(dependences, function(index, dependence) {
      if ($(dependence).attr("value") !== '') {
        return $(dependence).addClass("ui-state-highlight");
      }
    });
    parentesis_open = field_widget.find("._parentesis_open");
    if (parentesis_open.length === 8) {
      $(parentesis_open[0]).addClass('1 2 3');
      $(parentesis_open[4]).addClass('1');
    }
    parentesis_close = field_widget.find("._parentesis_close");
    if (parentesis_close.length === 8) {
      $(parentesis_close[3]).addClass('1 3');
      $(parentesis_close[5]).addClass('2');
      $(parentesis_close[7]).addClass('1');
    }
    widget_selected_dependence_form = field_widget.find('.dependence_form');
    $(widget_selected_dependence_form).on('change', function(event) {
      return change_dependence_form(this, null);
    });
    change_dependence_form(widget_selected_dependence_form[0], field_widget);
    if (!with_dependence_form) {
      $(field_widget).find(".dependence_form").remove();
      $(field_widget).find(".dependence_form_label").remove();
      $(field_widget).find(".dependence").remove();
      $(field_widget).find(".dependence_label").remove();
    }
    droppable = field_widget.find(".droppable");
    droppable.droppable({
      drop: function(event, ui) {
        value = ui.draggable[0]['innerText'];
        return $(this).addClass("ui-state-highlight").attr("value", value);
      }
    });
    droppable.focusout(function() {
      if ($(this).attr('value') === "") {
        return $(this).removeClass("ui-state-highlight");
      }
    });
    container = value['container'];
    return container.append(field_widget);
  };

  window.factoryField = factoryField;

}).call(this);