Skip to content

Commit

Permalink
Fixed enum in forms
Browse files Browse the repository at this point in the history
  • Loading branch information
gubi committed Sep 5, 2014
1 parent 76bb2bc commit 8d3147b
Show file tree
Hide file tree
Showing 3 changed files with 165 additions and 42 deletions.
10 changes: 8 additions & 2 deletions common/css/bootstrap/bootstrap.css
Original file line number Diff line number Diff line change
Expand Up @@ -531,6 +531,12 @@ a.text-warning:hover {
a.text-danger:hover {
color: #843534;
}
.text-default {
color: #333;
}
a.text-default:hover {
color: #666;
}
.bg-primary {
color: #fff;
background-color: #3c9332;
Expand Down Expand Up @@ -1779,11 +1785,11 @@ input[type="date"] {
.radio-inline,
.checkbox-inline {
display: inline-block;
padding-left: 20px;
/*padding-left: 20px;*/
margin-bottom: 0;
font-weight: normal;
vertical-align: middle;
cursor: pointer;
cursor: default;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
Expand Down
29 changes: 21 additions & 8 deletions common/css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -612,6 +612,7 @@ section.container {
padding: 75px 0 0 0;
position: fixed;
width: 100%;
background-color: #fff;
}

#breadcrumb {
Expand Down Expand Up @@ -758,24 +759,36 @@ div.back_indent a {
padding-right: 20px;
}
.btn.treeselect .caret {
margin-top: 0.6em;
position: absolute;
right: 40px;
margin-top: 0.6em;
position: absolute;
right: 40px;
}
ul.tree.open {
margin-left: 23px;
border-bottom: #ddd 1px solid;
padding: 0;
border-bottom: 1px dashed #ddd;
border-left: 1px dashed #ddd;
margin-bottom: 0;
margin-left: 9px;
margin-top: 5px;
padding: 0 0 10px 16px;
}
.tree.open li {
margin: 0;
overflow: hidden;
padding: 0;
text-overflow: ellipsis;
white-space: pre;
line-height: 0;
}
.tree.open li a.btn.disabled {
padding: 2px;
}

.tree.open .checkbox {
margin: 5px 0;
margin: 0 0 5px;
padding-left: 5px;
}
.list-group .checkbox {
padding-left: 5px;
}
span.info {
color: #829ea5;
Expand Down Expand Up @@ -2059,7 +2072,7 @@ label.checkbox {
}
#accordion .list-group-item,
.popover .list-group-item {
padding: 0;
padding: 5px 0;
border: 0px none;
}
#accordion .list-group-item-heading,
Expand Down
168 changes: 136 additions & 32 deletions common/js/_main/form.js
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@
treeselect_id = $(this).find("a.treeselect").attr("id"),
treeselect_title = '<div class="dropdown-header"><div class="input-group"><input type="text" class="form-control" placeholder="Filter" /><span class="input-group-addon"><span class="fa fa-search"></span></span></div></div>',
//treeselect_content = '<div class="dropdown-content"><ul></ul></div>';
treeselect_content = '<div class="dropdown-content"><ul></ul></div>';
treeselect_content = '<div class="dropdown-content"><ul class="list-group"></ul></div>';

$item.addClass("disabled");
$form.find(".dropdown-menu").html(treeselect_title + treeselect_content);
Expand All @@ -325,7 +325,7 @@

$.ask_to_service(kapi_obj, function(res) {
$.each(res[kAPI_RESPONSE_RESULTS], function(k, v) {
$form.find(".dropdown-menu .dropdown-content > ul").append($.create_tree(v, $(this)));
$form.find(".dropdown-menu .dropdown-content > ul").append($.create_tree(v, $item));
});
$item.removeClass("disabled");
$form.find(".dropdown-toggle").dropdown("toggle");
Expand Down Expand Up @@ -1347,6 +1347,7 @@
$.remove_storage("pgrdg_cache.search.criteria.traitAutocomplete");
$.remove_storage("pgrdg_cache.search.criteria.forms." + search_id);
$.remove_storage("pgrdg_cache.search.criteria.selected_forms." + search_id);
$.remove_storage("pgrdg_cache.search.criteria.selected_enums");
$.remove_storage("pgrdg_cache.search.criteria.local.forms_data." + search_id);
});
}
Expand Down Expand Up @@ -1486,6 +1487,7 @@
if(content == "forms") {
$.remove_storage("pgrdg_cache.search.criteria.forms");
$.remove_storage("pgrdg_cache.search.criteria.selected_forms");
$.remove_storage("pgrdg_cache.search.criteria.selected_enums");
$.remove_storage("pgrdg_cache.search.criteria.fulltext");
$.remove_storage("pgrdg_cache.search.criteria.traitAutocomplete");
//$.remove_storage("pgrdg_cache.search.criteria.grouping");
Expand Down Expand Up @@ -3107,51 +3109,153 @@
};

var $panel = item,
panel_input_term_id = $panel.find('input[name="term"]').attr("id"),
panel_input_term_id = $panel.attr("id") + "_term",
$form = $panel.closest("form"),
item_id = $form.closest(".panel-success").prev().attr("id"),
id = $form.find("input.reference").attr("data-id"),
content = "",
triangle = '<a class="tree-toggler text-muted" onclick="$.get_node(\'' + v.node + '\'); return false;" id="' + v.node + '_toggler" href="javascript: void(0);"><span class="fa fa-fw fa-caret-right"></span></a>',
checked = false;

if(storage.isSet("pgrdg_cache.search.criteria.selected_enums." + item_id) && $.obj_len(storage.get("pgrdg_cache.search.criteria.selected_enums." + item_id)) > 0) {
if($.inArray(v.label, storage.get("pgrdg_cache.search.criteria.selected_enums." + item_id + ".label")) !== -1) {
checked = true;
selected_enums = storage.get("pgrdg_cache.search.criteria.selected_enums." + item_id + ".label");
selected_enums_term = storage.get("pgrdg_cache.search.criteria.selected_enums." + item_id + ".term");

$form.find("#" + id + "_label").val(selected_enums.join(","));
$form.find("#" + id + "_term").val(selected_enums_term.join(","));

$form.find("a.treeselect").attr("title", selected_enums.join(", ")).attr("data-title", selected_enums.join(", ")).tooltip();
$form.find("a.treeselect > span:first-child").text(((selected_enums.length > 1) ? selected_enums.length + " items selected" : ((selected_enums.length === 0) ? "Choose..." : selected_enums.join(", "))));
} else {
checked = false;
}
}
checkbox = '<div class="checkbox">';
checkbox += '<label class="' + ((v[kAPI_PARAM_RESPONSE_COUNT] === undefined || v[kAPI_PARAM_RESPONSE_COUNT] === 0) ? 'text-muted' : '') + '">';
checkbox += '<input type="checkbox" value="' + v.term + '" id="' + $.md5(v.term) + '_checkbox" onclick="$.manage_tree_checkbox(\'' + v.term + '\', \'' + v.label + '\', \'' + panel_input_term_id + '\');" ';
if(v[kAPI_PARAM_RESPONSE_COUNT] === undefined || v[kAPI_PARAM_RESPONSE_COUNT] === 0) {
checkbox += 'disabled="disabled"';
}
checkbox += ' /> {LABEL}</label></div>';
checkbox += '<a href="javascript: void(0);" class="' + ((v[kAPI_PARAM_RESPONSE_COUNT] === undefined || v[kAPI_PARAM_RESPONSE_COUNT] === 0) ? 'btn text-muted disabled' : '') + '" value="' + v.term + '" id="' + $.md5(v.term) + '_checkbox" onclick="$.manage_tree_checkbox(\'' + $.rawurlencode(JSON.stringify(v)) + '\', \'' + panel_input_term_id + '\');">';
checkbox += '<span class="fa"><big class="fa ' + ((checked) ? "fa-check-square-o" : "fa-square-o") + '"></big></span> {LABEL}</a></div>';


var checkbox_inline = '<div class="checkbox-inline">';
checkbox_inline += '<label>';
checkbox_inline += '<input type="checkbox" value="' + v.term + '" id="' + $.md5(v.term) + '_checkbox" onclick="$.manage_tree_checkbox(\'' + v.term + '\', \'' + v.label + '\', \'' + panel_input_term_id + '\');" /> {LABEL}</label></div>';
checkbox_inline += '<a href="javascript: void(0);" class="text-default" data-count="' + v.count + '" data-value="' + v.term + '" id="' + $.md5(v.term) + '_checkbox" onclick="$.manage_tree_checkbox(\'' + $.rawurlencode(JSON.stringify(v)) + '\', \'' + panel_input_term_id + '\');"><span class="fa"><big class="fa fa-fw ' + ((checked) ? "fa-check-square-o" : "fa-square-o") + '"></big></span> {LABEL}</a></div>';
// checkbox_inline += '<label>';
// checkbox_inline += '<input type="checkbox" value="' + v.term + '" id="' + $.md5(v.term) + '_checkbox" onclick="$.manage_tree_checkbox(\'' + v.term + '\', \'' + v.label + '\', \'' + panel_input_term_id + '\', \'' + $.md5(v.term) + '_checkbox\');" /> {LABEL}</label></div>';

if (v.children !== undefined && v.children > 0) {
content += '<li class="list-group-item">' + triangle + '<span title="' + $.get_title(v) + '">' + ((v.value !== undefined && v.value) ? checkbox_inline.replace("{LABEL}", v.label) : '<a class="btn-text" href="javascript: void(0);" onclick="$.get_node(\'' + v.node + '\'); return false;">' + v.label + '</a>') + '</span><ul id="node_' + v.node + '" style="display: none;" class="tree"></ul></li>';
content += '<li class="list-group-item">' + triangle + '<span title="' + $.get_title(v) + '"> ' + ((v.value !== undefined && v.value) ? checkbox_inline.replace("{LABEL}", v.label) : '<a class="btn btn-text disabled" href="javascript: void(0);" onclick="$.get_node(\'' + v.node + '\'); return false;">' + v.label + '</a>') + '</span><ul id="node_' + v.node + '" style="display: none;" class="tree"></ul></li>';
} else {
content += '<li class="list-group-item" value="' + v.term + '" title="' + $.get_title(v) + '">' + ((v.value !== undefined && v.value) ? checkbox.replace("{LABEL}", v.label) : '<a class="btn-text" href="javascript: void(0);">' + v.label + '</a>') + '</li>';
content += '<li class="" value="' + v.term + '" title="' + $.get_title(v) + '"> ' + ((v.value !== undefined && v.value) ? checkbox.replace("{LABEL}", v.label) : '<a class="btn btn-text disabled" href="javascript: void(0);">' + v.label + '</a>') + '</li>';
}
return content;
};

/**
* Manage checkbox tree
*/
$.manage_tree_checkbox = function(term, label, item) {
var selected_enums = [],
selected_enums_terms = [],
id = item.replace("_term", ""),
item_val = $("#" + item).val(),
item_label_val = $("#" + item.replace("_term", "_label")).val();

if(item_val !== "") { selected_enums = item_val.split(","); }
if(item_label_val !== "") { selected_enums_terms = item_label_val.split(","); }
if($("#" + $.md5(term) + "_checkbox").is(":checked")) {
selected_enums.push(term);
selected_enums_terms.push(label);
$.manage_tree_checkbox = function(obj, panel) {
// Disabled function (too low -> crash the user browser)
// Keep warning when call
$.iterate_childrens = function(item) {
var $form = $this.closest("form"),
label_input = $form.find("input.reference").attr("data-id"),
$label_input_label = $("#" + label_input + "_label"),
$label_input_term = $("#" + label_input + "_term"),
selected_enums, selected_enums_term;
// Get the storage
if(storage.isSet("pgrdg_cache.search.criteria.selected_enums." + label_input) && $.obj_len("pgrdg_cache.search.criteria.selected_enums." + label_input) > 0) {
selected_enums = storage.get("pgrdg_cache.search.criteria.selected_enums." + label_input + ".label");
selected_enums_term = storage.get("pgrdg_cache.search.criteria.selected_enums." + label_input + ".term");
} else {
selected_enums = [];
selected_enums_term = [];
}

$("#loader").addClass("system").fadeIn(300, function() {
var $this = item;

$.each($this.find("ul li"), function(k, v) {
var $li = $(this);

if($li.find("a.tree-toggler").length > 0) {
$li.find("a.tree-toggler").click();
}
if($li.find("span > div > a:not(.disabled) > big").hasClass("fa-square-o")) {
selected_enums.push(v.label);
selected_enums_term.push(v.term);
$this.addClass("checked").find("big").removeClass("fa-square-o").addClass("fa-check-square-o");

// Set the storage
storage.set("pgrdg_cache.search.criteria.selected_enums." + label_input, {label: selected_enums, term: selected_enums_term});
$.iterate_childrens($this.closest("li"));
} else {
selected_enums.splice($.inArray(v.label, selected_enums), 1);
selected_enums_term.splice($.inArray(v.term, selected_enums_term), 1);

// Set the storage
storage.set("pgrdg_cache.search.criteria.selected_enums." + label_input, {label: selected_enums, term: selected_enums_term});
}
});
setTimeout(function(){
$("#loader").fadeOut(0).removeClass("system");
}, 1000);

});
}

var i = 0,
v = JSON.parse($.rawurldecode(obj)),
id = $.md5(v.term),
$this = $("#" + id + "_checkbox"),
$form = $this.closest("form"),
item_id = $form.closest(".panel-success").prev().attr("id"),
label_input = $form.find("input.reference").attr("data-id"),
$label_input_label = $("#" + label_input + "_label"),
$label_input_term = $("#" + label_input + "_term"),
selected_enums, selected_enums_term;
// Get the storage
if(storage.isSet("pgrdg_cache.search.criteria.selected_enums." + item_id) && $.obj_len("pgrdg_cache.search.criteria.selected_enums." + item_id) > 0) {
selected_enums = storage.get("pgrdg_cache.search.criteria.selected_enums." + item_id + ".label");
selected_enums_term = storage.get("pgrdg_cache.search.criteria.selected_enums." + item_id + ".term");
} else {
selected_enums.splice($.inArray(term, selected_enums), 1);
selected_enums_terms.splice($.inArray(label, selected_enums_terms), 1);
selected_enums = [];
selected_enums_term = [];
}
$("#" + item).val(selected_enums);
$("#" + item.replace("_term", "_label")).val(selected_enums_terms);
$("#" + id).attr("title", selected_enums.join(", ")).attr("data-title", selected_enums.join(", ")).tooltip();
$("#" + id + " span:first-child").text(((selected_enums_terms.length > 1) ? selected_enums_terms.length + " items selected" : ((selected_enums_terms.length === 0) ? "Choose..." : selected_enums_terms.join(", "))));

if($this.find("big").hasClass("fa-square-o")) {
selected_enums.push(v.label);
selected_enums_term.push(v.term);
$this.addClass("checked").find("big").removeClass("fa-square-o").addClass("fa-check-square-o");

$.each($this.closest("li").find("ul > li a > big.fa-check-square-o"), function(index) {
i++;
});
if(v.node !== undefined && i === 0) {
$.get_node(v.node);
}

// Set the storage
storage.set("pgrdg_cache.search.criteria.selected_enums." + item_id, {label: selected_enums, term: selected_enums_term});
} else {
selected_enums.splice($.inArray(v.label, selected_enums), 1);
selected_enums_term.splice($.inArray(v.term, selected_enums_term), 1);
$this.removeClass("checked").find("big").removeClass("fa-check-square-o").addClass("fa-square-o");

$.each($this.closest("li").find("ul > li a > big.fa-check-square-o"), function(index) {
i++;
});
if(v.node !== undefined && i === 0 && !$this.find("big").hasClass("fa-check-square-o")) {
$.get_node(v.node);
}
// Set the storage
storage.set("pgrdg_cache.search.criteria.selected_enums." + item_id, {label: selected_enums, term: selected_enums_term});
}

// $this.val(selected_enums);
$label_input_label.val(selected_enums);
$label_input_term.val(selected_enums_term);
$form.find("a.treeselect").attr("title", selected_enums.join(", ")).attr("data-title", selected_enums.join(", ")).tooltip();
$form.find("a.treeselect > span:first-child").text(((selected_enums.length > 1) ? selected_enums.length + " items selected" : ((selected_enums.length === 0) ? "Choose..." : selected_enums.join(", "))));
};

/**
Expand Down Expand Up @@ -3196,7 +3300,7 @@
if (jQuery.type(callback) == "function") {
callback.call(this);
}
return '<input type="hidden" name="' + kAPI_PARAM_INPUT_TYPE + '" value="' + kAPI_PARAM_INPUT_ENUM + '" /><input type="hidden" id="' + options.id + '_label" value="" /><input id="' + options.id + '_term" type="hidden" name="' + kAPI_RESULT_ENUM_TERM + '" value="" />' + select;
return '<input type="hidden" data-id="' + options.id + '" class="reference" name="' + kAPI_PARAM_INPUT_TYPE + '" value="' + kAPI_PARAM_INPUT_ENUM + '" /><input type="hidden" id="' + options.id + '_label" value="" /><input id="' + options.id + '_term" type="hidden" name="' + kAPI_RESULT_ENUM_TERM + '" value="" />' + select;
};


Expand Down

0 comments on commit 8d3147b

Please sign in to comment.