More options to browse GIS data

This commit is contained in:
Madhura Jayaratne 2011-05-22 19:17:57 +05:30
parent 12038bd0c7
commit 48c707a8e1

View File

@ -593,6 +593,15 @@ function PMA_displayTableHeaders(&$is_display, &$fields_meta, $fields_cnt = 0, $
PMA_display_html_checkbox('hide_transformation', __('Hide') . ' ' . __('Browser transformation'), ! empty($_SESSION['tmp_user_values']['hide_transformation']), false);
echo '</div>';
echo '<div class="formelement">';
$choices = array(
'GEOM' => __('Geometry'),
'WKT' => __('Well Known Text'),
'WKB' => __('Well Known Binary')
);
PMA_display_html_radio('geometry_display', $choices, $_SESSION['tmp_user_values']['geometry_display']);
echo '</div>';
echo '<div class="clearfloat"></div>';
echo '</fieldset>';
@ -1386,12 +1395,70 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
}
// g e o m e t r y
} elseif ($meta->type == 'geometry') {
$geometry_text = PMA_handle_non_printable_contents('GEOMETRY', (isset($row[$i]) ? $row[$i] : ''), $transform_function, $transform_options, $default_function, $meta);
// remove 'inline_edit' from $class as we can't edit geometry data.
// Remove 'inline_edit' from $class as we do not allow to inline-edit geometry data.
$class = str_replace('inline_edit', '', $class);
$vertical_display['data'][$row_no][$i] = PMA_buildValueDisplay($class, $condition_field, $geometry_text);
unset($geometry_text);
// Display as [GEOMETRY - (size)]
if ('GEOM' == $_SESSION['tmp_user_values']['geometry_display']) {
$geometry_text = PMA_handle_non_printable_contents(
'GEOMETRY', (isset($row[$i]) ? $row[$i] : ''), $transform_function,
$transform_options, $default_function, $meta
);
$vertical_display['data'][$row_no][$i] = PMA_buildValueDisplay(
$class, $condition_field, $geometry_text
);
// Display in Well Known Text(WKT) format.
} elseif ('WKT' == $_SESSION['tmp_user_values']['geometry_display']) {
// Convert to WKT format
$wktsql = "SELECT ASTEXT (GeomFromWKB(x'" . PMA_substr(bin2hex($row[$i]), 8) . "'))";
$wktresult = PMA_DBI_try_query($wktsql, null, PMA_DBI_QUERY_STORE);
$wktarr = PMA_DBI_fetch_row($wktresult, 0);
$wktval = $wktarr[0];
@PMA_DBI_free_result($wktresult);
if (PMA_strlen($wktval) > $GLOBALS['cfg']['LimitChars']
&& $_SESSION['tmp_user_values']['display_text'] == 'P'
) {
$wktval = PMA_substr($wktval, 0, $GLOBALS['cfg']['LimitChars']) . '...';
$is_field_truncated = true;
}
$vertical_display['data'][$row_no][$i] = '<td ' . PMA_prepare_row_data(
$class, $condition_field, $analyzed_sql, $meta, $map, $wktval, $transform_function,
$default_function, $nowrap, $where_comparison, $transform_options, $is_field_truncated
);
// Display in Well Known Binary(WKB) format.
} else {
if ($_SESSION['tmp_user_values']['display_binary']) {
if ($_SESSION['tmp_user_values']['display_binary_as_hex']
&& PMA_contains_nonprintable_ascii($row[$i])
) {
$wkbval = PMA_substr(bin2hex($row[$i]), 8);
} else {
$wkbval = htmlspecialchars(PMA_replace_binary_contents($row[$i]));
}
if (PMA_strlen($wkbval) > $GLOBALS['cfg']['LimitChars']
&& $_SESSION['tmp_user_values']['display_text'] == 'P'
) {
$wkbval = PMA_substr($wkbval, 0, $GLOBALS['cfg']['LimitChars']) . '...';
$is_field_truncated = true;
}
$vertical_display['data'][$row_no][$i] = '<td ' . PMA_prepare_row_data(
$class, $condition_field, $analyzed_sql, $meta, $map, $wkbval, $transform_function,
$default_function, $nowrap, $where_comparison, $transform_options, $is_field_truncated
);
} else {
$wkbval = PMA_handle_non_printable_contents(
'BINARY', $row[$i], $transform_function, $transform_options, $default_function, $meta, $_url_params
);
$vertical_display['data'][$row_no][$i] = PMA_buildValueDisplay($class, $condition_field, $wkbval);
}
}
// n o t n u m e r i c a n d n o t B L O B
} else {
@ -1788,6 +1855,13 @@ function PMA_displayTable_checkConfigParams()
$_SESSION['tmp_user_values']['query'][$sql_md5]['relational_display'] = 'K';
}
if (PMA_isValid($_REQUEST['geometry_display'], array('WKT', 'WKB', 'GEOM'))) {
$_SESSION['tmp_user_values']['query'][$sql_md5]['geometry_display'] = $_REQUEST['geometry_display'];
unset($_REQUEST['geometry_display']);
} elseif (empty($_SESSION['tmp_user_values']['query'][$sql_md5]['geometry_display'])) {
$_SESSION['tmp_user_values']['query'][$sql_md5]['geometry_display'] = 'GEOM';
}
if (isset($_REQUEST['display_binary'])) {
$_SESSION['tmp_user_values']['query'][$sql_md5]['display_binary'] = true;
unset($_REQUEST['display_binary']);
@ -1846,6 +1920,7 @@ function PMA_displayTable_checkConfigParams()
// populate query configuration
$_SESSION['tmp_user_values']['display_text'] = $_SESSION['tmp_user_values']['query'][$sql_md5]['display_text'];
$_SESSION['tmp_user_values']['relational_display'] = $_SESSION['tmp_user_values']['query'][$sql_md5]['relational_display'];
$_SESSION['tmp_user_values']['geometry_display'] = $_SESSION['tmp_user_values']['query'][$sql_md5]['geometry_display'];
$_SESSION['tmp_user_values']['display_binary'] = isset($_SESSION['tmp_user_values']['query'][$sql_md5]['display_binary']) ? true : false;
$_SESSION['tmp_user_values']['display_binary_as_hex'] = isset($_SESSION['tmp_user_values']['query'][$sql_md5]['display_binary_as_hex']) ? true : false;
$_SESSION['tmp_user_values']['display_blob'] = isset($_SESSION['tmp_user_values']['query'][$sql_md5]['display_blob']) ? true : false;