mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Parse jsonPath expressions (#1793)
* Fix jsonPath calls by removing \ characters and using $..[] notation Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com> * Parse jsonPath properly Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com> * Cleanup Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com> * More cleanup Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com> * Improve parsing Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com> * Finetuning Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com> * Stringify children only if value is object or array Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com> * Test other escaped characters do not cause issues Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
This commit is contained in:
1 parent
c8a93414b2
commit
e8f36e97a3
4 files changed
+92
-6
No files matched your search
@@ -13,6 +13,7 @@ import { crdStore } from "./crd.store";
|
||||
import { KubeObjectMeta } from "../kube-object/kube-object-meta";
|
||||
import { Input } from "../input";
|
||||
import { AdditionalPrinterColumnsV1, CustomResourceDefinition } from "../../api/endpoints/crd.api";
|
||||
import { parseJsonPath } from "../../utils/jsonPath";
|
||||
|
||||
interface Props extends KubeObjectDetailsProps<CustomResourceDefinition> {
|
||||
}
|
||||
@@ -46,7 +47,7 @@ export class CrdResourceDetails extends React.Component<Props> {
|
||||
renderAdditionalColumns(crd: CustomResourceDefinition, columns: AdditionalPrinterColumnsV1[]) {
|
||||
return columns.map(({ name, jsonPath: jp }) => (
|
||||
<DrawerItem key={name} name={name} renderBoolean>
|
||||
{convertSpecValue(jsonPath.value(crd, jp.slice(1)))}
|
||||
{convertSpecValue(jsonPath.value(crd, parseJsonPath(jp.slice(1))))}
|
||||
</DrawerItem>
|
||||
));
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import { autorun, computed } from "mobx";
|
||||
import { crdStore } from "./crd.store";
|
||||
import { TableSortCallback } from "../table";
|
||||
import { apiManager } from "../../api/api-manager";
|
||||
import { parseJsonPath } from "../../utils/jsonPath";
|
||||
|
||||
interface Props extends RouteComponentProps<ICRDRouteParams> {
|
||||
}
|
||||
@@ -61,7 +62,7 @@ export class CrdResources extends React.Component<Props> {
|
||||
};
|
||||
|
||||
extraColumns.forEach(column => {
|
||||
sortingCallbacks[column.name] = (item: KubeObject) => jsonPath.value(item, column.jsonPath.slice(1));
|
||||
sortingCallbacks[column.name] = (item: KubeObject) => jsonPath.value(item, parseJsonPath(column.jsonPath.slice(1)));
|
||||
});
|
||||
|
||||
return (
|
||||
@@ -91,10 +92,18 @@ export class CrdResources extends React.Component<Props> {
|
||||
renderTableContents={(crdInstance: KubeObject) => [
|
||||
crdInstance.getName(),
|
||||
isNamespaced && crdInstance.getNs(),
|
||||
...extraColumns.map(column => ({
|
||||
renderBoolean: true,
|
||||
children: JSON.stringify(jsonPath.value(crdInstance, column.jsonPath.slice(1))),
|
||||
})),
|
||||
...extraColumns.map((column) => {
|
||||
let value = jsonPath.value(crdInstance, parseJsonPath(column.jsonPath.slice(1)));
|
||||
|
||||
if (Array.isArray(value) || typeof value === "object") {
|
||||
value = JSON.stringify(value);
|
||||
}
|
||||
|
||||
return {
|
||||
renderBoolean: true,
|
||||
children: value,
|
||||
};
|
||||
}),
|
||||
crdInstance.getAge(),
|
||||
]}
|
||||
/>
|
||||
|
||||
Reference in new issue
Block a user