After upgrading from 3.3 to 3.5 my OpenlayersDataOverlays with exposed filters broke. In views 7.3 I can see the DBqueries running as desigend. In 3.5 I can only get results on the layers by removing the Exposed filters, but this removes critical functionality for my site. On the Mainpage (3.3) the following is set up:

/* Filter criterion: Content: Track Status (field_track_status) */
$handler->display->display_options['filters']['field_track_status_value']['id'] = 'field_track_status_value';
$handler->display->display_options['filters']['field_track_status_value']['table'] = 'field_data_field_track_status';
$handler->display->display_options['filters']['field_track_status_value']['field'] = 'field_track_status_value';
$handler->display->display_options['filters']['field_track_status_value']['exposed'] = TRUE;
$handler->display->display_options['filters']['field_track_status_value']['expose']['operator_id'] = 'field_track_status_value_op';
$handler->display->display_options['filters']['field_track_status_value']['expose']['label'] = 'Track status';
$handler->display->display_options['filters']['field_track_status_value']['expose']['operator'] = 'field_track_status_value_op';
$handler->display->display_options['filters']['field_track_status_value']['expose']['identifier'] = 'field_track_status_value';
$handler->display->display_options['filters']['field_track_status_value']['expose']['remember'] = 1;
$handler->display->display_options['filters']['field_track_status_value']['expose']['reduce'] = 0;

Than I have 3 layers set up, so I can display different categories in different colors.

/* Filter criterion: Content: Track Status (field_track_status) */
$handler->display->display_options['filters']['field_track_status_value']['id'] = 'field_track_status_value';
$handler->display->display_options['filters']['field_track_status_value']['table'] = 'field_data_field_track_status';
$handler->display->display_options['filters']['field_track_status_value']['field'] = 'field_track_status_value';
$handler->display->display_options['filters']['field_track_status_value']['exposed'] = TRUE;
$handler->display->display_options['filters']['field_track_status_value']['expose']['operator_id'] = 'field_track_status_value_op';
$handler->display->display_options['filters']['field_track_status_value']['expose']['label'] = 'Track status';
$handler->display->display_options['filters']['field_track_status_value']['expose']['operator'] = 'field_track_status_value_op';
$handler->display->display_options['filters']['field_track_status_value']['expose']['identifier'] = 'field_track_status_value';
$handler->display->display_options['filters']['field_track_status_value']['expose']['remember'] = 1;
$handler->display->display_options['filters']['field_track_status_value']['expose']['reduce'] = 0;
/* Filter criterion: Content: Track Status (field_track_status) */
$handler->display->display_options['filters']['field_track_status_value_1']['id'] = 'field_track_status_value_1';
$handler->display->display_options['filters']['field_track_status_value_1']['table'] = 'field_data_field_track_status';
$handler->display->display_options['filters']['field_track_status_value_1']['field'] = 'field_track_status_value';
$handler->display->display_options['filters']['field_track_status_value_1']['value'] = array(
'Open' => 'Open',
);

With 'Open' => 'Open', only being the variable that changes (e.g. 'Closed' => 'Closed', )

When the page opens all markers are displayed (exposed filter is set to "any") once the exposed filter is changed to a value, nothing displays. I'm kinda stuck here, tried some different settings in the exposed filter, but nothing seems to work.

Comments

wemmies’s picture

This is the 3.3 query on a datalayer (open):

SELECT node.nid AS nid, location.city AS location_city, location.country AS location_country, node.title AS node_title, 'node' AS field_data_field_map_node_entity_type, 'node' AS field_data_field_friday_node_entity_type, 'node' AS field_data_field_monday_node_entity_type, 'node' AS field_data_field_saturday_node_entity_type, 'node' AS field_data_field_sunday_node_entity_type, 'node' AS field_data_field_thursday_node_entity_type, 'node' AS field_data_field_tuesday_node_entity_type, 'node' AS field_data_field_wednesday_node_entity_type
FROM
{node} node
LEFT JOIN {field_data_field_track_status} field_data_field_track_status ON node.nid = field_data_field_track_status.entity_id AND (field_data_field_track_status.entity_type = 'node' AND field_data_field_track_status.deleted = '0')
LEFT JOIN {location_instance} location_instance ON node.vid = location_instance.vid
LEFT JOIN {location} location ON location_instance.lid = location.lid
WHERE (( (node.status = '1') AND (node.type IN ('mx_tracks')) AND (field_data_field_track_status.field_track_status_value IN ('Open')) ))

---------------------------------------------------------------------------------------------

This is the 3.5 query on the same layer:

SELECT node.nid AS nid, location.city AS location_city, location.country AS location_country, node.title AS node_title, 'node' AS field_data_field_map_node_entity_type, 'node' AS field_data_field_friday_node_entity_type, 'node' AS field_data_field_monday_node_entity_type, 'node' AS field_data_field_saturday_node_entity_type, 'node' AS field_data_field_sunday_node_entity_type, 'node' AS field_data_field_thursday_node_entity_type, 'node' AS field_data_field_tuesday_node_entity_type, 'node' AS field_data_field_wednesday_node_entity_type
FROM
{node} node
INNER JOIN {field_data_field_track_status} field_data_field_track_status ON node.nid = field_data_field_track_status.entity_id AND (field_data_field_track_status.entity_type = 'node' AND field_data_field_track_status.deleted = '0')
LEFT JOIN {field_data_field_track_status} field_data_field_track_status2 ON node.nid = field_data_field_track_status2.entity_id AND field_data_field_track_status2.field_track_status_value != 'Open'
LEFT JOIN {location_instance} location_instance ON node.vid = location_instance.vid
LEFT JOIN {location} location ON location_instance.lid = location.lid
WHERE (( (node.status = '1') AND (node.type IN ('mx_tracks')) AND (field_data_field_track_status.field_track_status_value = 'Open') AND (field_data_field_track_status2.field_track_status_value = 'Open') ))

========================================================================================

Here is the 3.3 for datalayer (closed):

SELECT node.nid AS nid, location.city AS location_city, location.country AS location_country, node.title AS node_title, 'node' AS field_data_field_map_node_entity_type, 'node' AS field_data_field_friday_node_entity_type, 'node' AS field_data_field_monday_node_entity_type, 'node' AS field_data_field_saturday_node_entity_type, 'node' AS field_data_field_sunday_node_entity_type, 'node' AS field_data_field_thursday_node_entity_type, 'node' AS field_data_field_tuesday_node_entity_type, 'node' AS field_data_field_wednesday_node_entity_type
FROM
{node} node
LEFT JOIN {field_data_field_track_status} field_data_field_track_status ON node.nid = field_data_field_track_status.entity_id AND (field_data_field_track_status.entity_type = 'node' AND field_data_field_track_status.deleted = '0')
LEFT JOIN {location_instance} location_instance ON node.vid = location_instance.vid
LEFT JOIN {location} location ON location_instance.lid = location.lid
WHERE (( (node.status = '1') AND (node.type IN ('mx_tracks')) AND (field_data_field_track_status.field_track_status_value IN ('Closed')) ))

--------------------------------------------------------------------------------------------------------

And the 3.5

SELECT node.nid AS nid, location.city AS location_city, location.country AS location_country, node.title AS node_title, 'node' AS field_data_field_map_node_entity_type, 'node' AS field_data_field_friday_node_entity_type, 'node' AS field_data_field_monday_node_entity_type, 'node' AS field_data_field_saturday_node_entity_type, 'node' AS field_data_field_sunday_node_entity_type, 'node' AS field_data_field_thursday_node_entity_type, 'node' AS field_data_field_tuesday_node_entity_type, 'node' AS field_data_field_wednesday_node_entity_type
FROM
{node} node
INNER JOIN {field_data_field_track_status} field_data_field_track_status ON node.nid = field_data_field_track_status.entity_id AND (field_data_field_track_status.entity_type = 'node' AND field_data_field_track_status.deleted = '0')
LEFT JOIN {field_data_field_track_status} field_data_field_track_status2 ON node.nid = field_data_field_track_status2.entity_id AND field_data_field_track_status2.field_track_status_value != 'Closed'
LEFT JOIN {location_instance} location_instance ON node.vid = location_instance.vid
LEFT JOIN {location} location ON location_instance.lid = location.lid
WHERE (( (node.status = '1') AND (node.type IN ('mx_tracks')) AND (field_data_field_track_status.field_track_status_value = 'Closed') AND (field_data_field_track_status2.field_track_status_value = 'Open') ))

=================================================================

I guess there are some things wrong n the 3.5 (marked in bold), there are several things going wrong in the 3.5, but wouldn't know where to change tohes in the settings

wemmies’s picture

So after struggeling a bit more and looking over what I posted above, I got things to work in 3.5. What i did was the following:

On the dataoverlays i had a filter and an exposed filter. Both operators were set to "is one off" and had one option (open or closed) after changing those operators to "is all of" and still have one option selected things started to work.

I'm guessing this is a bug as I would expect "is one of" with only one option selected to return the same results as "is all of" with only one option selected.