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 18:40:27 (GMT)
committer Code Raguet <ignacio.code@gmail.com>2013-07-26 18:40:27 (GMT)
commit688a5c1f463bd187b878d2de6b56ac580dc7391c (patch)
treeb3e45c499c59ce85457a2166a69323fd65f688ed
parent7d5efa895780a5ad18d792f84716aa1a70b31ffb (diff)
Refactor: factoryField is now compiled using coffee
-rw-r--r--webapp/coffee/factoryField.coffee173
-rw-r--r--webapp/webapp/static/js/factoryField.js12
2 files changed, 183 insertions, 2 deletions
diff --git a/webapp/coffee/factoryField.coffee b/webapp/coffee/factoryField.coffee
new file mode 100644
index 0000000..993724f
--- /dev/null
+++ b/webapp/coffee/factoryField.coffee
@@ -0,0 +1,173 @@
+factoryField = `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);
+};`
+
+window.factoryField = factoryField \ No newline at end of file
diff --git a/webapp/webapp/static/js/factoryField.js b/webapp/webapp/static/js/factoryField.js
index 3073c89..0fb86ca 100644
--- a/webapp/webapp/static/js/factoryField.js
+++ b/webapp/webapp/static/js/factoryField.js
@@ -1,4 +1,8 @@
-function factoryField(order, value) {
+// Generated by CoffeeScript 1.6.3
+(function() {
+ var factoryField;
+
+ factoryField = function factoryField(order, value) {
// Get field.widget_type
var widget_type = value['widget_type'],
group_order = value['group_order'],
@@ -168,4 +172,8 @@ function factoryField(order, value) {
// Show the field widget
var container = value['container'];
container.append(field_widget);
-}; \ No newline at end of file
+};;
+
+ window.factoryField = factoryField;
+
+}).call(this);