var FIELD_REQUEST_CHANGE = 301;
var FIELD_REQUEST_ADD = 302;
var FIELD_REQUEST_REMOVE = 303;
-var FIELD_REQUEST_RESET = 304;
+var FIELD_REQUEST_ADD_RESET = 304;
+var FIELD_REQUEST_REMOVE_RESET = 305;
// status
var FIELD_REQUEST_PENDING = 401;
var FIELD_REQUEST_SUCCESS = 402;
break;
case FIELD_REQUEST_ADD:
if ($.inArray(value.value, update_query_orig.params[value.key]) != -1)
- value.request = FIELD_REQUEST_RESET;
+ value.request = FIELD_REQUEST_ADD_RESET;
update_query.params[value.key].push(value.value);
break;
case FIELD_REQUEST_REMOVE:
if ($.inArray(value.value, update_query_orig.params[value.key]) == -1)
- value.request = FIELD_REQUEST_RESET;
+ value.request = FIELD_REQUEST_REMOVE_RESET;
var arr = update_query.params[value.key];
arr = $.grep(arr, function(x) { return x != value.value; });
update_query.params[value.key] = arr;
break;
- case FIELD_REQUEST_RESET:
+ case FIELD_REQUEST_ADD_RESET:
+ case FIELD_REQUEST_REMOVE_RESET:
// XXX We would need to keep track of the original query
throw "Not implemented";
break;
* License: GPLv3
*/
+/* BUGS:
+ * - infowindow is not properly reopened when the maps has not the focus
+ */
+
(function($){
var GoogleMaps = Plugin.extend({
set_checkbox: function(record, checked)
{
+ /* Default: checked = true */
+ if (typeof checked === 'undefined')
+ checked = true;
+
var key_value;
/* The function accepts both records and their key */
switch (manifold.get_type(record)) {
var dict_info = this.map_markers[unfold.escape_id(key_value).replace(/\\/g, '')];
- /* Default: swap check status */
- if (typeof checked === 'undefined')
- dict_info.in_set = !dict_info.in_set;
- else
- dict_info.in_set = checked;
// Update the marker content
+ dict_info.in_set = checked;
dict_info.marker.content = this.get_marker_content(dict_info.record, checked);
// Update opened infowindow
// XXX Factor this code
this.infowindow.close();
- this.infowindow.setContent(dict_info.marker.content);
this.infowindow.open(this.map, dict_info.marker);
+ this.infowindow.setContent(dict_info.marker.content);
this.els('map-button').unbind('click').click(this, this._button_click);
//var button = this.checkbox(record, checked);
{
switch(data.request) {
case FIELD_REQUEST_ADD:
+ case FIELD_REQUEST_ADD_RESET:
this.set_checkbox(data.value, true);
break;
case FIELD_REQUEST_REMOVE:
+ case FIELD_REQUEST_REMOVE_RESET:
this.set_checkbox(data.value, false);
break;
- case FIELD_REQUEST_RESET:
- this.set_checkbox(data.value); // swap
- break;
default:
break;
}
set_checkbox: function(record, checked)
{
+ /* Default: checked = true */
+ if (typeof checked === 'undefined')
+ checked = true;
+
var key_value;
/* The function accepts both records and their key */
switch (manifold.get_type(record)) {
var element = $(checkbox_id, this.table.fnGetNodes());
- /* Default: swap check status */
- if (typeof checked === 'undefined')
- checked = !(element.is(':checked'));
-
element.attr('checked', checked);
},
{
switch(data.request) {
case FIELD_REQUEST_ADD:
+ case FIELD_REQUEST_ADD_RESET:
this.set_checkbox(data.value, true);
break;
case FIELD_REQUEST_REMOVE:
+ case FIELD_REQUEST_REMOVE_RESET:
this.set_checkbox(data.value, false);
break;
- case FIELD_REQUEST_RESET:
- this.set_checkbox(data.value); // swap
- break;
default:
break;
}
_check_click: function(e)
{
+ e.stopPropagation();
var self = e.data;
var row;
- if (data.request == FIELD_REQUEST_RESET) {
- // find line
- // delete it
- row = this.find_row(data.value);
- if (row) {
- this.table.fnDeleteRow(row.nTr);
- }
- return;
- }
-
switch(data.request) {
+ case FIELD_REQUEST_ADD_RESET:
+ case FIELD_REQUEST_REMOVE_RESET:
+ // find line and delete it
+ row = this.find_row(data.value);
+ if (row)
+ this.table.fnDeleteRow(row.nTr);
+ return;
case FIELD_REQUEST_CHANGE:
action = 'UPDATE';
break;