Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCode Raguet <ignacio.code@gmail.com>2013-07-26 17:03:26 (GMT)
committer Code Raguet <ignacio.code@gmail.com>2013-07-26 17:03:26 (GMT)
commit7d5efa895780a5ad18d792f84716aa1a70b31ffb (patch)
treeb68fc1bc9799b5f9e7006dcbe272d9c8fa5064d9
parent6afdf12f096bcb0d6a1acdbed26d137f6d540a45 (diff)
Refactor: move factoryField from dynamic_structure to his own file.
-rw-r--r--webapp/js_tests/files.json1
-rw-r--r--webapp/polls/templates/tags/structure.html1
-rw-r--r--webapp/webapp/static/js/dynamic_structure.js171
-rw-r--r--webapp/webapp/static/js/factoryField.js171
4 files changed, 173 insertions, 171 deletions
diff --git a/webapp/js_tests/files.json b/webapp/js_tests/files.json
index f7e5203..b0e9f4f 100644
--- a/webapp/js_tests/files.json
+++ b/webapp/js_tests/files.json
@@ -4,6 +4,7 @@
"/static/js/jquery.min.js",
"/static/js/jquery-ui.js",
"/static/js/mustache-0.7.0.js",
+ "/static/js/factoryField.js",
"/static/js/dynamic_structure.js"
],
"media_files": [
diff --git a/webapp/polls/templates/tags/structure.html b/webapp/polls/templates/tags/structure.html
index 7f4c0d9..efe46d9 100644
--- a/webapp/polls/templates/tags/structure.html
+++ b/webapp/polls/templates/tags/structure.html
@@ -49,6 +49,7 @@
<!-- Dynamic structure methods -->
+<script src="{{ STATIC_URL }}js/factoryField.js"></script>
<script src="{{ STATIC_URL }}js/dynamic_structure.js"></script>
diff --git a/webapp/webapp/static/js/dynamic_structure.js b/webapp/webapp/static/js/dynamic_structure.js
index 1773100..9a6aef9 100644
--- a/webapp/webapp/static/js/dynamic_structure.js
+++ b/webapp/webapp/static/js/dynamic_structure.js
@@ -433,177 +433,6 @@ var change_dependence_form = function(widget, field_widget) {
_parentesis.show();
}
-var factoryField = function(order, value) {
- // Get field.widget_type
- var widget_type = value['widget_type'],
- group_order = value['group_order'],
- errors = [];
-
- // If errors, prepare it
- if (value.hasOwnProperty('errors')){
- $.each(value['errors'], function(i, error){
- errors.push({'error': error});
- });
- }
-
- // Preparing values for render widget type select box
- var widget_types = [].concat(WIDGET_TYPES);
- widget_types = $.each(widget_types, function(i, v){
- if (widget_type == v['key']) {
- $.extend(v, {"selected": true});
- } else {
- // TODO: ver como pasar por copia valores en javascript
- 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']) {
- $.extend(v, {"selected": true});
- }
- }
- }),
- with_dependence_form = group_order != 0 || ( group_order == 0 && order != 0 );
-
- var 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,
- })
- )
-
- // Get remove field button and bind remove field widget envent
- var remove_button = field_widget.find('.WField_remove');
- bindFieldRemoveButton(remove_button);
-
- var add_option_button = field_widget.find('.WFieldOptions_add_button');
- bindFieldAddOptionButton(add_option_button);
-
- var add_option_none_button = field_widget.find('.WFieldOptionsNone_add_button');
- bindFieldAddOptionButton(add_option_none_button);
-
- // Bind change widget type event
- var widget_types_select_box = field_widget.find('.WFieldWidgetType');
- bindFieldWidgetTypeSelectBox(widget_types_select_box);
-
- // Adding add_option button if is needed
- buttons_container = field_widget.find('.WFieldAddOptionButton_container');
- if (widget_type && $.inArray(widget_type, WITH_OPTIONS) != -1) {
- var 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) {
- var 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'});
- }
-
- // Render options
- if ($.inArray(widget_type, WITH_OPTIONS) != -1){
- if ($.inArray(widget_type, WITH_IMAGES) == -1){
- // Basic option
- $.each(value['options'] || [], function(id, opt_value){
- options_container = field_widget.find('.WFieldOptions_container');
- factoryOption(id, opt_value, options_container, group_order, order);
- });
- } else {
- // Image option
- $.each(value['options'] || [], function(id, opt_value){
- options_container = field_widget.find('.WFieldOptions_container');
- if (opt_value.hasOwnProperty('img_name')){
- factoryImageOptionThumbnail(id, opt_value, options_container, group_order, order);
- } else {
- 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){
- factoryOptionDefault(group_order, field_widget, id, opt_value['text']);
- });
- } else {
- factoryOptionDefault(group_order, field_widget, undefined, undefined);
- }
- }
-
- // Show dependences
- var values = [],
- dependence_container = field_widget.find(".dependence"),
- widget;
-
- if (value['dependence'])
- values = value['dependence'].values;
-
- for (var i=values.length; i < 7; i++)
- values[i] = '';
- factoryDependences(dependence_container, values, order, group_order);
-
- var dependences = field_widget.find('[name*=".dependence.values"]');
- $.each(dependences, function(index, dependence){
- if ($(dependence).attr("value") != '')
- $(dependence).addClass("ui-state-highlight");
- });
-
- var parentesis_open = field_widget.find("._parentesis_open");
- if (parentesis_open.length == 8) {
- $(parentesis_open[0]).addClass('1 2 3');
- $(parentesis_open[4]).addClass('1');
- }
-
- var 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');
- }
-
- var widget_selected_dependence_form = field_widget.find('.dependence_form');
- $(widget_selected_dependence_form).on('change', function(event){
- 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();
- }
-
- var droppable = field_widget.find(".droppable");
- droppable.droppable({
- drop: function( event, ui ) {
- var value = ui.draggable[0]['innerText'];
- $(this)
- .addClass("ui-state-highlight")
- .attr("value", value);
- }
- });
- droppable.focusout(function(){
- if ($(this).attr('value') == ""){
- $(this).removeClass("ui-state-highlight");
- }
- });
-
- // Show the field widget
- var container = value['container'];
- container.append(field_widget);
-};
/// METHODS FOR GROUPS ///
diff --git a/webapp/webapp/static/js/factoryField.js b/webapp/webapp/static/js/factoryField.js
new file mode 100644
index 0000000..3073c89
--- /dev/null
+++ b/webapp/webapp/static/js/factoryField.js
@@ -0,0 +1,171 @@
+function factoryField(order, value) {
+ // Get field.widget_type
+ var widget_type = value['widget_type'],
+ group_order = value['group_order'],
+ errors = [];
+
+ // If errors, prepare it
+ if (value.hasOwnProperty('errors')){
+ $.each(value['errors'], function(i, error){
+ errors.push({'error': error});
+ });
+ }
+
+ // Preparing values for render widget type select box
+ var widget_types = [].concat(WIDGET_TYPES);
+ widget_types = $.each(widget_types, function(i, v){
+ if (widget_type == v['key']) {
+ $.extend(v, {"selected": true});
+ } else {
+ // TODO: ver como pasar por copia valores en javascript
+ 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']) {
+ $.extend(v, {"selected": true});
+ }
+ }
+ }),
+ with_dependence_form = group_order != 0 || ( group_order == 0 && order != 0 );
+
+ var 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,
+ })
+ )
+
+ // Get remove field button and bind remove field widget envent
+ var remove_button = field_widget.find('.WField_remove');
+ bindFieldRemoveButton(remove_button);
+
+ var add_option_button = field_widget.find('.WFieldOptions_add_button');
+ bindFieldAddOptionButton(add_option_button);
+
+ var add_option_none_button = field_widget.find('.WFieldOptionsNone_add_button');
+ bindFieldAddOptionButton(add_option_none_button);
+
+ // Bind change widget type event
+ var widget_types_select_box = field_widget.find('.WFieldWidgetType');
+ bindFieldWidgetTypeSelectBox(widget_types_select_box);
+
+ // Adding add_option button if is needed
+ buttons_container = field_widget.find('.WFieldAddOptionButton_container');
+ if (widget_type && $.inArray(widget_type, WITH_OPTIONS) != -1) {
+ var 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) {
+ var 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'});
+ }
+
+ // Render options
+ if ($.inArray(widget_type, WITH_OPTIONS) != -1){
+ if ($.inArray(widget_type, WITH_IMAGES) == -1){
+ // Basic option
+ $.each(value['options'] || [], function(id, opt_value){
+ options_container = field_widget.find('.WFieldOptions_container');
+ factoryOption(id, opt_value, options_container, group_order, order);
+ });
+ } else {
+ // Image option
+ $.each(value['options'] || [], function(id, opt_value){
+ options_container = field_widget.find('.WFieldOptions_container');
+ if (opt_value.hasOwnProperty('img_name')){
+ factoryImageOptionThumbnail(id, opt_value, options_container, group_order, order);
+ } else {
+ 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){
+ factoryOptionDefault(group_order, field_widget, id, opt_value['text']);
+ });
+ } else {
+ factoryOptionDefault(group_order, field_widget, undefined, undefined);
+ }
+ }
+
+ // Show dependences
+ var values = [],
+ dependence_container = field_widget.find(".dependence"),
+ widget;
+
+ if (value['dependence'])
+ values = value['dependence'].values;
+
+ for (var i=values.length; i < 7; i++)
+ values[i] = '';
+ factoryDependences(dependence_container, values, order, group_order);
+
+ var dependences = field_widget.find('[name*=".dependence.values"]');
+ $.each(dependences, function(index, dependence){
+ if ($(dependence).attr("value") != '')
+ $(dependence).addClass("ui-state-highlight");
+ });
+
+ var parentesis_open = field_widget.find("._parentesis_open");
+ if (parentesis_open.length == 8) {
+ $(parentesis_open[0]).addClass('1 2 3');
+ $(parentesis_open[4]).addClass('1');
+ }
+
+ var 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');
+ }
+
+ var widget_selected_dependence_form = field_widget.find('.dependence_form');
+ $(widget_selected_dependence_form).on('change', function(event){
+ 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();
+ }
+
+ var droppable = field_widget.find(".droppable");
+ droppable.droppable({
+ drop: function( event, ui ) {
+ var value = ui.draggable[0]['innerText'];
+ $(this)
+ .addClass("ui-state-highlight")
+ .attr("value", value);
+ }
+ });
+ droppable.focusout(function(){
+ if ($(this).attr('value') == ""){
+ $(this).removeClass("ui-state-highlight");
+ }
+ });
+
+ // Show the field widget
+ var container = value['container'];
+ container.append(field_widget);
+}; \ No newline at end of file