@dovetail-v2/refine 0.3.17-alpha.0 → 0.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,7 +10,6 @@ export type ShowContentViewProps<Model extends ResourceModel> = React.PropsWithC
10
10
  record: Model;
11
11
  }>;
12
12
  hideBackButton?: boolean;
13
- canCollapseTabs?: boolean;
14
13
  hideTopBar?: boolean;
15
14
  className?: string;
16
15
  size?: 'small' | 'medium';
@@ -2,6 +2,7 @@ import { StatusCapsuleColor } from '@cloudtower/eagle';
2
2
  import { useTable } from '@refinedev/core';
3
3
  import { i18n as I18nType } from 'i18next';
4
4
  import { Unstructured } from 'k8s-api-provider';
5
+ import { ConfigMap, Secret } from 'kubernetes-types/core/v1';
5
6
  import { NetworkPolicy } from 'kubernetes-types/networking/v1';
6
7
  import React from 'react';
7
8
  import { JobModel, ResourceModel, WorkloadModel, WorkloadBaseModel, CronJobModel, IngressModel, ServiceModel, StorageClassModel, PersistentVolumeModel, PersistentVolumeClaimModel } from '../../models';
@@ -50,7 +51,7 @@ export declare const ConditionsField: <Model extends ResourceModel<Unstructured>
50
51
  export declare const NodeTaintsField: () => ShowField<ResourceModel<Node & Unstructured>>;
51
52
  export declare const PodsField: <Model extends WorkloadBaseModel>() => ShowField<Model>;
52
53
  export declare const JobsField: <Model extends JobModel | CronJobModel>() => ShowField<Model>;
53
- export declare const DataField: <Model extends ResourceModel<Unstructured>>(i18n: I18nType) => ShowField<Model>;
54
+ export declare const DataField: <Model extends ResourceModel<Unstructured & (ConfigMap | Secret)>>(i18n: I18nType) => ShowField<Model>;
54
55
  export declare const SecretDataField: <Model extends ResourceModel<Unstructured>>() => ShowField<Model>;
55
56
  export declare const StartTimeField: (i18n: I18nType) => ShowField<JobModel>;
56
57
  export declare const ServiceTypeField: <Model extends ServiceModel>(i18n: I18nType) => ShowField<Model>;
@@ -1,16 +1,18 @@
1
1
  import { i18n as I18nType } from 'i18next';
2
+ import { Unstructured } from 'k8s-api-provider';
3
+ import { ConfigMap, Secret } from 'kubernetes-types/core/v1';
2
4
  import { ResourceModel, PodModel, ServiceModel, IngressModel } from 'src/models';
3
5
  import { NetworkPolicyModel } from 'src/models';
4
6
  import { ShowTab } from './fields';
5
- export declare const EventsTab: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>({ i18n, size, }: {
7
+ export declare const EventsTab: <Model extends ResourceModel<Unstructured>>({ i18n, size, }: {
6
8
  i18n: I18nType;
7
9
  size?: "small" | "medium" | undefined;
8
10
  }) => ShowTab<Model>;
9
- export declare const ConditionsTab: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>({ i18n, size, }: {
11
+ export declare const ConditionsTab: <Model extends ResourceModel<Unstructured>>({ i18n, size, }: {
10
12
  i18n: I18nType;
11
13
  size?: "small" | "medium" | undefined;
12
14
  }) => ShowTab<Model>;
13
- export declare const LabelAnnotationsTab: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>({ i18n, size, }: {
15
+ export declare const LabelAnnotationsTab: <Model extends ResourceModel<Unstructured>>({ i18n, size, }: {
14
16
  i18n: I18nType;
15
17
  size?: "small" | "medium" | undefined;
16
18
  }) => ShowTab<Model>;
@@ -21,10 +23,10 @@ export declare const PortsTab: <Model extends ServiceModel>({ i18n, }: {
21
23
  export declare const IngressRulesTab: <Model extends IngressModel>({ i18n, }: {
22
24
  i18n: I18nType;
23
25
  }) => ShowTab<Model>;
24
- export declare const DataTab: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>({ i18n, }: {
26
+ export declare const DataTab: <Model extends ResourceModel<Unstructured & (ConfigMap | Secret)>>({ i18n, }: {
25
27
  i18n: I18nType;
26
28
  }) => ShowTab<Model>;
27
- export declare const SecretDataTab: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>({ i18n, }: {
29
+ export declare const SecretDataTab: <Model extends ResourceModel<Unstructured>>({ i18n, }: {
28
30
  i18n: I18nType;
29
31
  }) => ShowTab<Model>;
30
32
  export declare const NetworkPolicyIngressRulesTab: <Model extends NetworkPolicyModel>({ i18n, }: {
@@ -1,16 +1,18 @@
1
1
  /// <reference types="react" />
2
2
  import { i18n as I18nType } from 'i18next';
3
+ import { Unstructured } from 'k8s-api-provider';
4
+ import { ConfigMap, Secret } from 'kubernetes-types/core/v1';
3
5
  import { Column } from '../../components/InternalBaseTable';
4
- import { JobModel, PodModel, ResourceModel, WorkloadModel, WorkloadBaseModel, CronJobModel, IngressModel, ServiceModel, DaemonSetModel, StorageClassModel, PersistentVolumeModel, PersistentVolumeClaimModel } from '../../models';
6
+ import { JobModel, PodModel, ResourceModel, WorkloadModel, WorkloadBaseModel, CronJobModel, IngressModel, ServiceModel, DaemonSetModel, StorageClassModel, PersistentVolumeModel, PersistentVolumeClaimModel, DeploymentModel } from '../../models';
5
7
  export declare const CommonSorter: (dataIndex: string[]) => (a: unknown, b: unknown) => 0 | 1 | -1;
6
- export declare const NameColumnRenderer: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>(i18n: I18nType, resource?: string) => Column<Model>;
7
- export declare const PlainTextNameColumnRenderer: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>(i18n: I18nType) => Column<Model>;
8
- export declare const NameSpaceColumnRenderer: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>(i18n: I18nType) => Column<Model>;
9
- export declare const StateDisplayColumnRenderer: <Model extends PodModel | ServiceModel | WorkloadModel | JobModel | CronJobModel | DaemonSetModel>(i18n: I18nType) => Column<Model>;
8
+ export declare const NameColumnRenderer: <Model extends ResourceModel<Unstructured>>(i18n: I18nType, resource?: string) => Column<Model>;
9
+ export declare const PlainTextNameColumnRenderer: <Model extends ResourceModel<Unstructured>>(i18n: I18nType) => Column<Model>;
10
+ export declare const NameSpaceColumnRenderer: <Model extends ResourceModel<Unstructured>>(i18n: I18nType) => Column<Model>;
11
+ export declare const StateDisplayColumnRenderer: <Model extends PodModel | ServiceModel | WorkloadModel | DeploymentModel | JobModel | CronJobModel | DaemonSetModel>(i18n: I18nType) => Column<Model>;
10
12
  export declare const WorkloadImageColumnRenderer: <Model extends WorkloadBaseModel>(i18n: I18nType) => Column<Model>;
11
13
  export declare const RestartsColumnRenderer: <Model extends WorkloadModel>(i18n: I18nType) => Column<Model>;
12
14
  export declare const ReplicasColumnRenderer: <Model extends WorkloadModel>(i18n: I18nType) => Column<Model>;
13
- export declare const AgeColumnRenderer: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>(i18n: I18nType, config?: {
15
+ export declare const AgeColumnRenderer: <Model extends ResourceModel<Unstructured>>(i18n: I18nType, config?: {
14
16
  title?: string;
15
17
  width: number;
16
18
  }, { isRelativeTime }?: {
@@ -19,7 +21,7 @@ export declare const AgeColumnRenderer: <Model extends ResourceModel<import("k8s
19
21
  export declare const NodeNameColumnRenderer: <Model extends PodModel>(i18n: I18nType, options?: Partial<Column<Model>> | undefined) => Column<Model>;
20
22
  export declare const PodCountOfJobColumnRenderer: <Model extends JobModel>(i18n: I18nType) => Column<Model>;
21
23
  export declare const DurationColumnRenderer: <Model extends JobModel | CronJobModel>(i18n: I18nType) => Column<Model>;
22
- export declare const ServiceTypeColumnRenderer: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>(i18n: I18nType) => Column<Model>;
24
+ export declare const ServiceTypeColumnRenderer: <Model extends ResourceModel<Unstructured>>(i18n: I18nType) => Column<Model>;
23
25
  export declare function ServiceInClusterAccessTitle(): JSX.Element;
24
26
  export declare const ServiceInClusterAccessColumnRenderer: <Model extends ServiceModel>() => Column<Model>;
25
27
  export declare function ServiceOutClusterAccessTitle(): JSX.Element;
@@ -30,7 +32,7 @@ export declare const IngressDefaultBackendColumnRenderer: <Model extends Ingress
30
32
  export declare const IngressClassColumnRenderer: <Model extends IngressModel>(i18n: I18nType) => Column<Model>;
31
33
  export declare const IngressTlsColumnRenderer: <Model extends IngressModel>(i18n: I18nType) => Column<Model>;
32
34
  export declare const PodContainersNumColumnRenderer: <Model extends PodModel>(i18n: I18nType) => Column<Model>;
33
- export declare const DataKeysColumnRenderer: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>(i18n: I18nType) => Column<Model>;
35
+ export declare const DataKeysColumnRenderer: <Model extends ResourceModel<Unstructured & (ConfigMap | Secret)>>(i18n: I18nType) => Column<Model>;
34
36
  export declare const PortMappingColumnRenderer: <Model extends ServiceModel>(i18n: I18nType) => Column<Model>;
35
37
  export declare const ProvisionerColumnRenderer: <Model extends StorageClassModel>(i18n: I18nType) => Column<Model>;
36
38
  export declare const PVCapacityColumnRenderer: <Model extends PersistentVolumeModel>(i18n: I18nType) => Column<Model>;
package/dist/i18n.d.ts CHANGED
@@ -500,8 +500,6 @@ export declare const resources: {
500
500
  cant_delete_resource_with_name: string;
501
501
  close: string;
502
502
  import_from_file: string;
503
- view_all_info: string;
504
- collapse: string;
505
503
  tcp: string;
506
504
  udp: string;
507
505
  specify_workload: string;
@@ -530,6 +528,7 @@ export declare const resources: {
530
528
  clear_search_condition: string;
531
529
  no_labels: string;
532
530
  no_annotations: string;
531
+ pause_scheduling: string;
533
532
  };
534
533
  };
535
534
  };
@@ -243,8 +243,6 @@ declare const _default: {
243
243
  cant_delete_resource_with_name: string;
244
244
  close: string;
245
245
  import_from_file: string;
246
- view_all_info: string;
247
- collapse: string;
248
246
  tcp: string;
249
247
  udp: string;
250
248
  specify_workload: string;
@@ -273,6 +271,7 @@ declare const _default: {
273
271
  clear_search_condition: string;
274
272
  no_labels: string;
275
273
  no_annotations: string;
274
+ pause_scheduling: string;
276
275
  };
277
276
  };
278
277
  export default _default;
@@ -13,6 +13,7 @@ export declare class DeploymentModel extends WorkloadModel {
13
13
  getReplicaSets(replicaSets: ReplicaSetModel[]): ReplicaSetModel[];
14
14
  get stateDisplay(): ResourceState.UPDATING | ResourceState.READY | ResourceState.STOPPED;
15
15
  get revision(): string | undefined;
16
+ get isPaused(): boolean;
16
17
  getCurrentReplicaSet(replicaSets: ReplicaSetModel[]): ReplicaSetModel | undefined;
17
18
  }
18
19
  export {};
@@ -14,6 +14,7 @@ export type RuleItem = {
14
14
  export declare class IngressModel extends ResourceModel<IngressTypes> {
15
15
  _rawYaml: IngressTypes;
16
16
  constructor(_rawYaml: IngressTypes, _globalStore: GlobalStore);
17
+ get spec(): import("kubernetes-types/networking/v1").IngressSpec;
17
18
  private getFullPath;
18
19
  getFlattenedRules(services?: Service[]): RuleItem[];
19
20
  }
@@ -10,7 +10,7 @@ export declare class ResourceModel<T extends Unstructured = Unstructured> {
10
10
  constructor(_rawYaml: T, _globalStore: GlobalStore);
11
11
  init(): Promise<void>;
12
12
  get name(): string | undefined;
13
- get namespace(): string | undefined;
13
+ get namespace(): string;
14
14
  get labels(): {
15
15
  [name: string]: string;
16
16
  } | undefined;
@@ -1,4 +1,6 @@
1
1
  import { i18n } from 'i18next';
2
+ import { Unstructured } from 'k8s-api-provider';
3
+ import { ConfigMap } from 'kubernetes-types/core/v1';
2
4
  import { ResourceModel } from '../../models';
3
5
  import { ResourceConfig } from '../../types';
4
- export declare const ConfigMapConfig: (i18n: i18n) => ResourceConfig<ResourceModel>;
6
+ export declare const ConfigMapConfig: (i18n: i18n) => ResourceConfig<ResourceModel<Unstructured & ConfigMap>>;
@@ -1,4 +1,6 @@
1
1
  import { i18n } from 'i18next';
2
+ import { Unstructured } from 'k8s-api-provider';
3
+ import { Secret } from 'kubernetes-types/core/v1';
2
4
  import { ResourceModel } from '../../models';
3
5
  import { ResourceConfig } from '../../types';
4
- export declare const SecretsConfig: (i18n: i18n) => ResourceConfig<ResourceModel>;
6
+ export declare const SecretsConfig: (i18n: i18n) => ResourceConfig<ResourceModel<Unstructured & Secret>>;
package/dist/refine.cjs CHANGED
@@ -1202,8 +1202,6 @@ const cant_delete_resource = "无法删除{{resource}}";
1202
1202
  const cant_delete_resource_with_name = "无法删除{{resource}} <0>{{name}}</0> 。";
1203
1203
  const close = "关闭";
1204
1204
  const import_from_file = "从文件读取";
1205
- const view_all_info = "查看全部信息";
1206
- const collapse = "收起";
1207
1205
  const tcp = "TCP";
1208
1206
  const udp = "UDP";
1209
1207
  const specify_workload = "指定工作负载";
@@ -1232,6 +1230,7 @@ const no_search_result = "无搜索结果";
1232
1230
  const clear_search_condition = "清空搜索条件";
1233
1231
  const no_labels = "无标签";
1234
1232
  const no_annotations = "无注解";
1233
+ const pause_scheduling = "暂停调度";
1235
1234
  const dovetail = {
1236
1235
  copy,
1237
1236
  reset_arguments,
@@ -1476,8 +1475,6 @@ const dovetail = {
1476
1475
  cant_delete_resource_with_name,
1477
1476
  close,
1478
1477
  import_from_file,
1479
- view_all_info,
1480
- collapse,
1481
1478
  tcp,
1482
1479
  udp,
1483
1480
  specify_workload,
@@ -1505,7 +1502,8 @@ const dovetail = {
1505
1502
  no_search_result,
1506
1503
  clear_search_condition,
1507
1504
  no_labels,
1508
- no_annotations
1505
+ no_annotations,
1506
+ pause_scheduling
1509
1507
  };
1510
1508
  const ZH = {
1511
1509
  dovetail
@@ -8363,7 +8361,7 @@ function useSubmitForm(options) {
8363
8361
  onSubmit
8364
8362
  };
8365
8363
  }
8366
- const index_10dq51k = "";
8364
+ const index_e7f1dg = "";
8367
8365
  const EditButtonStyle = "esoz3jw";
8368
8366
  function EditFieldModal(props) {
8369
8367
  const {
@@ -8683,7 +8681,7 @@ class ResourceModel {
8683
8681
  }
8684
8682
  get namespace() {
8685
8683
  var _a;
8686
- return (_a = this._rawYaml.metadata) == null ? void 0 : _a.namespace;
8684
+ return ((_a = this._rawYaml.metadata) == null ? void 0 : _a.namespace) || "default";
8687
8685
  }
8688
8686
  get labels() {
8689
8687
  var _a;
@@ -8718,6 +8716,9 @@ class IngressModel extends ResourceModel {
8718
8716
  super(_rawYaml, _globalStore);
8719
8717
  this._rawYaml = _rawYaml;
8720
8718
  }
8719
+ get spec() {
8720
+ return this._rawYaml.spec;
8721
+ }
8721
8722
  getFullPath(rule2, path2 = "", port2) {
8722
8723
  if (!rule2.host) {
8723
8724
  return path2 || "";
@@ -9856,6 +9857,10 @@ class DeploymentModel extends WorkloadModel {
9856
9857
  var _a, _b;
9857
9858
  return (_b = (_a = this.metadata) == null ? void 0 : _a.annotations) == null ? void 0 : _b["deployment.kubernetes.io/revision"];
9858
9859
  }
9860
+ get isPaused() {
9861
+ var _a;
9862
+ return !!((_a = this.spec) == null ? void 0 : _a.paused);
9863
+ }
9859
9864
  getCurrentReplicaSet(replicaSets) {
9860
9865
  const myReplicaSets = this.getReplicaSets(replicaSets);
9861
9866
  return myReplicaSets.find((rs) => rs.revision === this.revision);
@@ -12603,11 +12608,15 @@ const DataField = (i18n2) => {
12603
12608
  return {
12604
12609
  key: "data",
12605
12610
  path: ["data"],
12606
- renderContent: (val) => {
12611
+ renderContent: (val, record) => {
12612
+ const finalData = {
12613
+ ...val,
12614
+ ..."binaryData" in record._rawYaml ? record._rawYaml.binaryData : {}
12615
+ };
12607
12616
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx("div", {
12608
12617
  className: "c91cpym",
12609
12618
  children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(KeyValue, {
12610
- data: val,
12619
+ data: finalData,
12611
12620
  empty: i18n2.t("dovetail.no_resource", {
12612
12621
  kind: i18n2.t("dovetail.data")
12613
12622
  })
@@ -13802,7 +13811,7 @@ function Tabs(props) {
13802
13811
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.TabsTabPane, { tab: tab.title, children: tab.children }, tab.title);
13803
13812
  }) });
13804
13813
  }
13805
- const ShowContentView_1gmp0tu = "";
13814
+ const ShowContentView_196cma3 = "";
13806
13815
  const ShowContentWrapperStyle = "soapvs9";
13807
13816
  const BackButton = "b13d603q";
13808
13817
  const ToolBarWrapper = "tm8eaia";
@@ -13859,7 +13868,6 @@ const ShowContentView = (props) => {
13859
13868
  children,
13860
13869
  Dropdown = K8sDropdown,
13861
13870
  hideBackButton = false,
13862
- canCollapseTabs = false,
13863
13871
  className,
13864
13872
  hideTopBar = false,
13865
13873
  size = "medium"
@@ -13946,7 +13954,7 @@ const ShowContentView = (props) => {
13946
13954
  function renderGroup(group, isBasicGroup = false) {
13947
13955
  let GroupContainer = React.Fragment;
13948
13956
  let FieldContainer = React.Fragment;
13949
- const groupContainerProps = {
13957
+ let groupContainerProps = {
13950
13958
  title: group.title || "",
13951
13959
  size
13952
13960
  };
@@ -13955,6 +13963,8 @@ const ShowContentView = (props) => {
13955
13963
  GroupContainer = BasicShowGroupComponent;
13956
13964
  } else if (group.title) {
13957
13965
  GroupContainer = ShowGroupWithTitleComponent;
13966
+ } else {
13967
+ groupContainerProps = {};
13958
13968
  }
13959
13969
  const shouldRenderRow = !!(isBasicGroup || group.title);
13960
13970
  if (shouldRenderRow) {
@@ -13979,6 +13989,7 @@ const ShowContentView = (props) => {
13979
13989
  }, group.title);
13980
13990
  }
13981
13991
  const stateDisplay = lodashEs.get(record, "stateDisplay");
13992
+ const isPausedDeployment = record.kind === "Deployment" && record.isPaused;
13982
13993
  const topBar = /* @__PURE__ */ common.jsxRuntimeExports.jsxs("div", {
13983
13994
  className: ToolBarWrapper,
13984
13995
  style: {
@@ -14017,7 +14028,11 @@ const ShowContentView = (props) => {
14017
14028
  }), stateDisplay ? /* @__PURE__ */ common.jsxRuntimeExports.jsx(StateTag, {
14018
14029
  state: stateDisplay,
14019
14030
  customResourceStateMap: showConfig.resourceStateMap
14020
- }) : void 0]
14031
+ }) : void 0, isPausedDeployment ? /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.StatusCapsule, {
14032
+ className: common.cx_default(StateTagStyle, "c18272tc"),
14033
+ color: "yellow",
14034
+ children: i18n2.t("dovetail.pause_scheduling")
14035
+ }) : null]
14021
14036
  }), /* @__PURE__ */ common.jsxRuntimeExports.jsxs(eagle.Space, {
14022
14037
  children: [(_d = showConfig.renderExtraButton) == null ? void 0 : _d.call(showConfig, record), !config.hideEdit ? /* @__PURE__ */ common.jsxRuntimeExports.jsx(core.CanAccess, {
14023
14038
  resource: resourceName,
@@ -14068,42 +14083,12 @@ const ShowContentView = (props) => {
14068
14083
  direction: "vertical",
14069
14084
  className: ShowContentHeaderStyle,
14070
14085
  children: topBar
14071
- }), basicInfo, canCollapseTabs ? /* @__PURE__ */ common.jsxRuntimeExports.jsx(CollapseTabs, {
14072
- children: tabs
14073
- }) : tabs, children]
14074
- });
14075
- };
14076
- const CollapseTabs = (props) => {
14077
- const [isCollapsed, setIsCollapsed] = React.useState(true);
14078
- const {
14079
- t: t2
14080
- } = common.useTranslation();
14081
- return /* @__PURE__ */ common.jsxRuntimeExports.jsxs(common.jsxRuntimeExports.Fragment, {
14082
- children: [isCollapsed ? null : props.children, /* @__PURE__ */ common.jsxRuntimeExports.jsx("div", {
14083
- style: {
14084
- display: "flex"
14085
- },
14086
- children: /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Button, {
14087
- style: {
14088
- margin: "8px auto",
14089
- cursor: "pointer"
14090
- },
14091
- size: "small",
14092
- type: "link",
14093
- onClick: () => setIsCollapsed((v) => !v),
14094
- suffixIcon: isCollapsed ? /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Icon, {
14095
- src: iconsReact.ArrowChevronDownSmall16BlueIcon
14096
- }) : /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Icon, {
14097
- src: iconsReact.ArrowChevronUpSmall16BlueIcon
14098
- }),
14099
- children: isCollapsed ? t2("dovetail.view_all_info") : t2("dovetail.collapse")
14100
- })
14101
- })]
14086
+ }), basicInfo, tabs, children]
14102
14087
  });
14103
14088
  };
14104
14089
  const ShowContent = (props) => {
14105
14090
  var _a;
14106
- const { showConfig, formatter, Dropdown = K8sDropdown, children, canCollapseTabs } = props;
14091
+ const { showConfig, formatter, Dropdown = K8sDropdown, children } = props;
14107
14092
  const parsed = core.useParsed();
14108
14093
  const { resource } = core.useResource();
14109
14094
  const id = (_a = parsed == null ? void 0 : parsed.params) == null ? void 0 : _a.id;
@@ -14115,7 +14100,6 @@ const ShowContent = (props) => {
14115
14100
  showConfig,
14116
14101
  formatter,
14117
14102
  Dropdown,
14118
- canCollapseTabs,
14119
14103
  children
14120
14104
  }
14121
14105
  );
@@ -14746,14 +14730,14 @@ const SectionTitle = React.forwardRef(function SectionTitle2(props, ref) {
14746
14730
  const {
14747
14731
  t: t2
14748
14732
  } = common.useTranslation();
14749
- const [collapse2, setCollapse] = React.useState(defaultCollapse);
14733
+ const [collapse, setCollapse] = React.useState(defaultCollapse);
14750
14734
  React.useImperativeHandle(ref, () => ({
14751
14735
  setCollapse
14752
14736
  }), [setCollapse]);
14753
14737
  return /* @__PURE__ */ common.jsxRuntimeExports.jsxs("div", {
14754
14738
  className: common.cx_default(className),
14755
14739
  children: [/* @__PURE__ */ common.jsxRuntimeExports.jsxs("div", {
14756
- className: common.cx_default(TitleWrapperStyle$1, collapse2 && CollapsedTitleStyle),
14740
+ className: common.cx_default(TitleWrapperStyle$1, collapse && CollapsedTitleStyle),
14757
14741
  children: [/* @__PURE__ */ common.jsxRuntimeExports.jsx("span", {
14758
14742
  className: eagle.Typo.Label.l4_bold_title,
14759
14743
  children: title
@@ -14761,18 +14745,18 @@ const SectionTitle = React.forwardRef(function SectionTitle2(props, ref) {
14761
14745
  type: "link",
14762
14746
  size: "small",
14763
14747
  className: common.cx_default(ButtonStyle),
14764
- onClick: () => setCollapse(!collapse2),
14765
- children: [collapse2 ? t2("dovetail.expand") : t2("dovetail.fold"), /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Icon, {
14748
+ onClick: () => setCollapse(!collapse),
14749
+ children: [collapse ? t2("dovetail.expand") : t2("dovetail.fold"), /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Icon, {
14766
14750
  style: {
14767
14751
  marginLeft: 4
14768
14752
  },
14769
- src: collapse2 ? iconsReact.ArrowChevronDown16BlueIcon : iconsReact.ArrowChevronUp16BlueIcon
14753
+ src: collapse ? iconsReact.ArrowChevronDown16BlueIcon : iconsReact.ArrowChevronUp16BlueIcon
14770
14754
  })]
14771
14755
  }) : null]
14772
14756
  }), /* @__PURE__ */ common.jsxRuntimeExports.jsx("div", {
14773
14757
  className: common.cx_default(contentClassName),
14774
14758
  style: {
14775
- display: collapse2 ? "none" : "block"
14759
+ display: collapse ? "none" : "block"
14776
14760
  },
14777
14761
  children
14778
14762
  })]
@@ -18983,13 +18967,25 @@ const IngressRulesComponent = ({ ingress }) => {
18983
18967
  });
18984
18968
  const flattenedRules = (serviceData == null ? void 0 : serviceData.data) ? ingress.getFlattenedRules(serviceData == null ? void 0 : serviceData.data) : [];
18985
18969
  const result = flattenedRules.map((r2) => {
18986
- const divider = " > ";
18970
+ var _a, _b;
18971
+ const arrow = " → ";
18972
+ const divider = " | ";
18973
+ const secretName = (_b = (_a = ingress.spec.tls) == null ? void 0 : _a.find(
18974
+ ({ hosts }) => hosts == null ? void 0 : hosts.includes(r2.host || "")
18975
+ )) == null ? void 0 : _b.secretName;
18976
+ let tooltip = r2.fullPath;
18977
+ if (r2.serviceName) {
18978
+ tooltip += `${arrow}${r2.serviceName}:${r2.servicePort}`;
18979
+ }
18980
+ if (secretName) {
18981
+ tooltip += `${divider}${secretName}`;
18982
+ }
18987
18983
  return /* @__PURE__ */ common.jsxRuntimeExports.jsx(
18988
18984
  eagle.OverflowTooltip,
18989
18985
  {
18990
18986
  content: /* @__PURE__ */ common.jsxRuntimeExports.jsxs(common.jsxRuntimeExports.Fragment, { children: [
18991
18987
  /* @__PURE__ */ common.jsxRuntimeExports.jsx(LinkFallback, { fullPath: r2.fullPath }),
18992
- /* @__PURE__ */ common.jsxRuntimeExports.jsx("span", { children: divider }),
18988
+ /* @__PURE__ */ common.jsxRuntimeExports.jsx("span", { children: arrow }),
18993
18989
  r2.serviceName ? /* @__PURE__ */ common.jsxRuntimeExports.jsxs(common.jsxRuntimeExports.Fragment, { children: [
18994
18990
  /* @__PURE__ */ common.jsxRuntimeExports.jsx(
18995
18991
  ResourceLink,
@@ -19003,9 +18999,20 @@ const IngressRulesComponent = ({ ingress }) => {
19003
18999
  ":",
19004
19000
  r2.servicePort
19005
19001
  ] })
19006
- ] }) : r2.resourceName
19002
+ ] }) : r2.resourceName,
19003
+ secretName ? /* @__PURE__ */ common.jsxRuntimeExports.jsxs(common.jsxRuntimeExports.Fragment, { children: [
19004
+ /* @__PURE__ */ common.jsxRuntimeExports.jsx("span", { children: divider }),
19005
+ /* @__PURE__ */ common.jsxRuntimeExports.jsx(
19006
+ ResourceLink,
19007
+ {
19008
+ resourceName: "secrets",
19009
+ namespace: ingress.metadata.namespace || "default",
19010
+ name: secretName
19011
+ }
19012
+ )
19013
+ ] }) : void 0
19007
19014
  ] }),
19008
- tooltip: `${r2.fullPath}${divider}:${r2.servicePort}`
19015
+ tooltip
19009
19016
  },
19010
19017
  r2.fullPath
19011
19018
  );
@@ -19112,10 +19119,26 @@ const StateDisplayColumnRenderer = (i18n2) => {
19112
19119
  sortable: true,
19113
19120
  width: 120,
19114
19121
  sorter: CommonSorter(dataIndex),
19115
- render: (v) => /* @__PURE__ */ common.jsxRuntimeExports.jsx(StateTag, {
19116
- state: v,
19117
- hideBackground: true
19118
- })
19122
+ render: (v, record) => {
19123
+ if (record.kind === "Deployment" && record.isPaused) {
19124
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsxs("span", {
19125
+ children: [/* @__PURE__ */ common.jsxRuntimeExports.jsx(StateTag, {
19126
+ state: v,
19127
+ hideBackground: true
19128
+ }), /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.Tag, {
19129
+ color: "yellow",
19130
+ style: {
19131
+ marginLeft: "4px"
19132
+ },
19133
+ children: i18n2.t("dovetail.pause_scheduling")
19134
+ })]
19135
+ });
19136
+ }
19137
+ return /* @__PURE__ */ common.jsxRuntimeExports.jsx(StateTag, {
19138
+ state: v,
19139
+ hideBackground: true
19140
+ });
19141
+ }
19119
19142
  };
19120
19143
  };
19121
19144
  const WorkloadImageColumnRenderer = (i18n2) => {
@@ -19493,8 +19516,11 @@ const DataKeysColumnRenderer = (i18n2) => {
19493
19516
  display: true,
19494
19517
  dataIndex: ["data"],
19495
19518
  title: i18n2.t("dovetail.data"),
19496
- render(data2) {
19497
- const keys2 = Object.keys(data2 || {});
19519
+ render(data2, record) {
19520
+ const keys2 = Object.keys({
19521
+ ...data2,
19522
+ ..."binaryData" in record._rawYaml ? record._rawYaml.binaryData : {}
19523
+ });
19498
19524
  return keys2.length ? keys2.map((key2) => /* @__PURE__ */ common.jsxRuntimeExports.jsx(eagle.OverflowTooltip, {
19499
19525
  content: key2
19500
19526
  }, key2)) : /* @__PURE__ */ common.jsxRuntimeExports.jsx(ValueDisplay, {
package/dist/refine.js CHANGED
@@ -12,7 +12,7 @@ import { parse, stringify } from "qs";
12
12
  import React, { createElement, isValidElement, cloneElement, Children, useContext, useCallback, createContext, useState, useEffect, useMemo, useRef, useImperativeHandle, lazy, Suspense, memo, forwardRef } from "react";
13
13
  import { useLocation, useHistory, useParams, matchPath, Link, Route, NavLink, Router } from "react-router-dom";
14
14
  import { usePushModal, usePopModal, DeleteDialog, Tag, RejectDialog, RejectDialogType, Typo, Input, Select, AntdOption, Button, Form, Space, TextArea, kitContext, Loading, Table as Table$2, Pagination, Alert, ImmersiveDialog, SmallDialog, Fields, Units, Link as Link$1, OverflowTooltip, Tooltip, StatusCapsule, Dropdown, Menu as Menu$1, Icon, Divider, LegacyModal, Popover, AntdTable, Upload, TableForm, AutoComplete, getOptions, DonutChart, SegmentControl, Checkbox, Tabs as Tabs$1, TabsTabPane, Col, Row, useMessage, SearchInput, Token, AntdSelectOptGroup, WizardDialog, MenuItemGroup, Layout as Layout$1, InputGroup, InputInteger, Time as Time$1, ModalStack, KitStoreProvider, ConfigProvider } from "@cloudtower/eagle";
15
- import { EditPen16PrimaryIcon, Download16GradientBlueIcon, TrashBinDelete16Icon, MoreEllipsis324BoldSecondaryIcon, MoreEllipsis324BoldBlueIcon, MoreEllipsis316BoldBlueIcon, PlusAddCreateNew16BoldOntintIcon, ViewEye16GradientGrayIcon, EntityFilterIgnoreGradient16GrayIcon, InfoICircleFill16GrayIcon, InfoICircleFill16Gray70Icon, RecoverContinue16GradientBlueIcon, SuspendedPause16GradientBlueIcon, ArrowChevronLeft16BoldTertiaryIcon, ArrowChevronLeftSmall16BoldBlueIcon, ArrowChevronDownSmall16BlueIcon, ArrowChevronUpSmall16BlueIcon, Retry16GradientBlueIcon, OpenTerminal16GradientBlueIcon, ArrowChevronDown16BlueIcon, ArrowChevronUp16BlueIcon, HierarchyTriangleRight16GrayIcon, HierarchyTriangleRight16BlueIcon, ClipboardCopy16GradientGrayIcon, ClipboardCopy16GradientBlueIcon, Retry16GradientGrayIcon, EditPen16GradientGrayIcon, EditPen16GradientBlueIcon, Showdiff16GradientGrayIcon, Showdiff16GradientBlueIcon, XmarkFailedSeriousWarningFill16RedIcon, Pause16GradientBlueIcon, EditPen16BlueIcon } from "@cloudtower/icons-react";
15
+ import { EditPen16PrimaryIcon, Download16GradientBlueIcon, TrashBinDelete16Icon, MoreEllipsis324BoldSecondaryIcon, MoreEllipsis324BoldBlueIcon, MoreEllipsis316BoldBlueIcon, PlusAddCreateNew16BoldOntintIcon, ViewEye16GradientGrayIcon, EntityFilterIgnoreGradient16GrayIcon, InfoICircleFill16GrayIcon, InfoICircleFill16Gray70Icon, RecoverContinue16GradientBlueIcon, SuspendedPause16GradientBlueIcon, ArrowChevronLeft16BoldTertiaryIcon, ArrowChevronLeftSmall16BoldBlueIcon, Retry16GradientBlueIcon, OpenTerminal16GradientBlueIcon, ArrowChevronDown16BlueIcon, ArrowChevronUp16BlueIcon, HierarchyTriangleRight16GrayIcon, HierarchyTriangleRight16BlueIcon, ClipboardCopy16GradientGrayIcon, ClipboardCopy16GradientBlueIcon, Retry16GradientGrayIcon, EditPen16GradientGrayIcon, EditPen16GradientBlueIcon, Showdiff16GradientGrayIcon, Showdiff16GradientBlueIcon, XmarkFailedSeriousWarningFill16RedIcon, Pause16GradientBlueIcon, EditPen16BlueIcon } from "@cloudtower/icons-react";
16
16
  import { first, get as get$2, cloneDeep, set, omit as omit$1, merge, isEqual as isEqual$1, debounce, last, setWith, clone, isObject as isObject$4, uniq, keyBy } from "lodash-es";
17
17
  import yaml$2 from "js-yaml";
18
18
  import { useLocalStorage } from "usehooks-ts";
@@ -1183,8 +1183,6 @@ const cant_delete_resource = "无法删除{{resource}}";
1183
1183
  const cant_delete_resource_with_name = "无法删除{{resource}} <0>{{name}}</0> 。";
1184
1184
  const close = "关闭";
1185
1185
  const import_from_file = "从文件读取";
1186
- const view_all_info = "查看全部信息";
1187
- const collapse = "收起";
1188
1186
  const tcp = "TCP";
1189
1187
  const udp = "UDP";
1190
1188
  const specify_workload = "指定工作负载";
@@ -1213,6 +1211,7 @@ const no_search_result = "无搜索结果";
1213
1211
  const clear_search_condition = "清空搜索条件";
1214
1212
  const no_labels = "无标签";
1215
1213
  const no_annotations = "无注解";
1214
+ const pause_scheduling = "暂停调度";
1216
1215
  const dovetail = {
1217
1216
  copy,
1218
1217
  reset_arguments,
@@ -1457,8 +1456,6 @@ const dovetail = {
1457
1456
  cant_delete_resource_with_name,
1458
1457
  close,
1459
1458
  import_from_file,
1460
- view_all_info,
1461
- collapse,
1462
1459
  tcp,
1463
1460
  udp,
1464
1461
  specify_workload,
@@ -1486,7 +1483,8 @@ const dovetail = {
1486
1483
  no_search_result,
1487
1484
  clear_search_condition,
1488
1485
  no_labels,
1489
- no_annotations
1486
+ no_annotations,
1487
+ pause_scheduling
1490
1488
  };
1491
1489
  const ZH = {
1492
1490
  dovetail
@@ -8344,7 +8342,7 @@ function useSubmitForm(options) {
8344
8342
  onSubmit
8345
8343
  };
8346
8344
  }
8347
- const index_10dq51k = "";
8345
+ const index_e7f1dg = "";
8348
8346
  const EditButtonStyle = "esoz3jw";
8349
8347
  function EditFieldModal(props) {
8350
8348
  const {
@@ -8664,7 +8662,7 @@ class ResourceModel {
8664
8662
  }
8665
8663
  get namespace() {
8666
8664
  var _a;
8667
- return (_a = this._rawYaml.metadata) == null ? void 0 : _a.namespace;
8665
+ return ((_a = this._rawYaml.metadata) == null ? void 0 : _a.namespace) || "default";
8668
8666
  }
8669
8667
  get labels() {
8670
8668
  var _a;
@@ -8699,6 +8697,9 @@ class IngressModel extends ResourceModel {
8699
8697
  super(_rawYaml, _globalStore);
8700
8698
  this._rawYaml = _rawYaml;
8701
8699
  }
8700
+ get spec() {
8701
+ return this._rawYaml.spec;
8702
+ }
8702
8703
  getFullPath(rule2, path2 = "", port2) {
8703
8704
  if (!rule2.host) {
8704
8705
  return path2 || "";
@@ -9837,6 +9838,10 @@ class DeploymentModel extends WorkloadModel {
9837
9838
  var _a, _b;
9838
9839
  return (_b = (_a = this.metadata) == null ? void 0 : _a.annotations) == null ? void 0 : _b["deployment.kubernetes.io/revision"];
9839
9840
  }
9841
+ get isPaused() {
9842
+ var _a;
9843
+ return !!((_a = this.spec) == null ? void 0 : _a.paused);
9844
+ }
9840
9845
  getCurrentReplicaSet(replicaSets) {
9841
9846
  const myReplicaSets = this.getReplicaSets(replicaSets);
9842
9847
  return myReplicaSets.find((rs) => rs.revision === this.revision);
@@ -12584,11 +12589,15 @@ const DataField = (i18n2) => {
12584
12589
  return {
12585
12590
  key: "data",
12586
12591
  path: ["data"],
12587
- renderContent: (val) => {
12592
+ renderContent: (val, record) => {
12593
+ const finalData = {
12594
+ ...val,
12595
+ ..."binaryData" in record._rawYaml ? record._rawYaml.binaryData : {}
12596
+ };
12588
12597
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", {
12589
12598
  className: "c91cpym",
12590
12599
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(KeyValue, {
12591
- data: val,
12600
+ data: finalData,
12592
12601
  empty: i18n2.t("dovetail.no_resource", {
12593
12602
  kind: i18n2.t("dovetail.data")
12594
12603
  })
@@ -13783,7 +13792,7 @@ function Tabs(props) {
13783
13792
  return /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTabPane, { tab: tab.title, children: tab.children }, tab.title);
13784
13793
  }) });
13785
13794
  }
13786
- const ShowContentView_1gmp0tu = "";
13795
+ const ShowContentView_196cma3 = "";
13787
13796
  const ShowContentWrapperStyle = "soapvs9";
13788
13797
  const BackButton = "b13d603q";
13789
13798
  const ToolBarWrapper = "tm8eaia";
@@ -13840,7 +13849,6 @@ const ShowContentView = (props) => {
13840
13849
  children,
13841
13850
  Dropdown: Dropdown2 = K8sDropdown,
13842
13851
  hideBackButton = false,
13843
- canCollapseTabs = false,
13844
13852
  className,
13845
13853
  hideTopBar = false,
13846
13854
  size = "medium"
@@ -13927,7 +13935,7 @@ const ShowContentView = (props) => {
13927
13935
  function renderGroup(group, isBasicGroup = false) {
13928
13936
  let GroupContainer = React.Fragment;
13929
13937
  let FieldContainer = React.Fragment;
13930
- const groupContainerProps = {
13938
+ let groupContainerProps = {
13931
13939
  title: group.title || "",
13932
13940
  size
13933
13941
  };
@@ -13936,6 +13944,8 @@ const ShowContentView = (props) => {
13936
13944
  GroupContainer = BasicShowGroupComponent;
13937
13945
  } else if (group.title) {
13938
13946
  GroupContainer = ShowGroupWithTitleComponent;
13947
+ } else {
13948
+ groupContainerProps = {};
13939
13949
  }
13940
13950
  const shouldRenderRow = !!(isBasicGroup || group.title);
13941
13951
  if (shouldRenderRow) {
@@ -13960,6 +13970,7 @@ const ShowContentView = (props) => {
13960
13970
  }, group.title);
13961
13971
  }
13962
13972
  const stateDisplay = get$2(record, "stateDisplay");
13973
+ const isPausedDeployment = record.kind === "Deployment" && record.isPaused;
13963
13974
  const topBar = /* @__PURE__ */ jsxRuntimeExports.jsxs("div", {
13964
13975
  className: ToolBarWrapper,
13965
13976
  style: {
@@ -13998,7 +14009,11 @@ const ShowContentView = (props) => {
13998
14009
  }), stateDisplay ? /* @__PURE__ */ jsxRuntimeExports.jsx(StateTag, {
13999
14010
  state: stateDisplay,
14000
14011
  customResourceStateMap: showConfig.resourceStateMap
14001
- }) : void 0]
14012
+ }) : void 0, isPausedDeployment ? /* @__PURE__ */ jsxRuntimeExports.jsx(StatusCapsule, {
14013
+ className: cx_default(StateTagStyle, "c18272tc"),
14014
+ color: "yellow",
14015
+ children: i18n2.t("dovetail.pause_scheduling")
14016
+ }) : null]
14002
14017
  }), /* @__PURE__ */ jsxRuntimeExports.jsxs(Space, {
14003
14018
  children: [(_d = showConfig.renderExtraButton) == null ? void 0 : _d.call(showConfig, record), !config.hideEdit ? /* @__PURE__ */ jsxRuntimeExports.jsx(CanAccess, {
14004
14019
  resource: resourceName,
@@ -14049,42 +14064,12 @@ const ShowContentView = (props) => {
14049
14064
  direction: "vertical",
14050
14065
  className: ShowContentHeaderStyle,
14051
14066
  children: topBar
14052
- }), basicInfo, canCollapseTabs ? /* @__PURE__ */ jsxRuntimeExports.jsx(CollapseTabs, {
14053
- children: tabs
14054
- }) : tabs, children]
14055
- });
14056
- };
14057
- const CollapseTabs = (props) => {
14058
- const [isCollapsed, setIsCollapsed] = useState(true);
14059
- const {
14060
- t: t2
14061
- } = useTranslation();
14062
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, {
14063
- children: [isCollapsed ? null : props.children, /* @__PURE__ */ jsxRuntimeExports.jsx("div", {
14064
- style: {
14065
- display: "flex"
14066
- },
14067
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Button, {
14068
- style: {
14069
- margin: "8px auto",
14070
- cursor: "pointer"
14071
- },
14072
- size: "small",
14073
- type: "link",
14074
- onClick: () => setIsCollapsed((v) => !v),
14075
- suffixIcon: isCollapsed ? /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, {
14076
- src: ArrowChevronDownSmall16BlueIcon
14077
- }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, {
14078
- src: ArrowChevronUpSmall16BlueIcon
14079
- }),
14080
- children: isCollapsed ? t2("dovetail.view_all_info") : t2("dovetail.collapse")
14081
- })
14082
- })]
14067
+ }), basicInfo, tabs, children]
14083
14068
  });
14084
14069
  };
14085
14070
  const ShowContent = (props) => {
14086
14071
  var _a;
14087
- const { showConfig, formatter, Dropdown: Dropdown2 = K8sDropdown, children, canCollapseTabs } = props;
14072
+ const { showConfig, formatter, Dropdown: Dropdown2 = K8sDropdown, children } = props;
14088
14073
  const parsed = useParsed();
14089
14074
  const { resource } = useResource();
14090
14075
  const id = (_a = parsed == null ? void 0 : parsed.params) == null ? void 0 : _a.id;
@@ -14096,7 +14081,6 @@ const ShowContent = (props) => {
14096
14081
  showConfig,
14097
14082
  formatter,
14098
14083
  Dropdown: Dropdown2,
14099
- canCollapseTabs,
14100
14084
  children
14101
14085
  }
14102
14086
  );
@@ -14727,14 +14711,14 @@ const SectionTitle = React.forwardRef(function SectionTitle2(props, ref) {
14727
14711
  const {
14728
14712
  t: t2
14729
14713
  } = useTranslation();
14730
- const [collapse2, setCollapse] = useState(defaultCollapse);
14714
+ const [collapse, setCollapse] = useState(defaultCollapse);
14731
14715
  useImperativeHandle(ref, () => ({
14732
14716
  setCollapse
14733
14717
  }), [setCollapse]);
14734
14718
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", {
14735
14719
  className: cx_default(className),
14736
14720
  children: [/* @__PURE__ */ jsxRuntimeExports.jsxs("div", {
14737
- className: cx_default(TitleWrapperStyle$1, collapse2 && CollapsedTitleStyle),
14721
+ className: cx_default(TitleWrapperStyle$1, collapse && CollapsedTitleStyle),
14738
14722
  children: [/* @__PURE__ */ jsxRuntimeExports.jsx("span", {
14739
14723
  className: Typo.Label.l4_bold_title,
14740
14724
  children: title
@@ -14742,18 +14726,18 @@ const SectionTitle = React.forwardRef(function SectionTitle2(props, ref) {
14742
14726
  type: "link",
14743
14727
  size: "small",
14744
14728
  className: cx_default(ButtonStyle),
14745
- onClick: () => setCollapse(!collapse2),
14746
- children: [collapse2 ? t2("dovetail.expand") : t2("dovetail.fold"), /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, {
14729
+ onClick: () => setCollapse(!collapse),
14730
+ children: [collapse ? t2("dovetail.expand") : t2("dovetail.fold"), /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, {
14747
14731
  style: {
14748
14732
  marginLeft: 4
14749
14733
  },
14750
- src: collapse2 ? ArrowChevronDown16BlueIcon : ArrowChevronUp16BlueIcon
14734
+ src: collapse ? ArrowChevronDown16BlueIcon : ArrowChevronUp16BlueIcon
14751
14735
  })]
14752
14736
  }) : null]
14753
14737
  }), /* @__PURE__ */ jsxRuntimeExports.jsx("div", {
14754
14738
  className: cx_default(contentClassName),
14755
14739
  style: {
14756
- display: collapse2 ? "none" : "block"
14740
+ display: collapse ? "none" : "block"
14757
14741
  },
14758
14742
  children
14759
14743
  })]
@@ -18964,13 +18948,25 @@ const IngressRulesComponent = ({ ingress }) => {
18964
18948
  });
18965
18949
  const flattenedRules = (serviceData == null ? void 0 : serviceData.data) ? ingress.getFlattenedRules(serviceData == null ? void 0 : serviceData.data) : [];
18966
18950
  const result = flattenedRules.map((r2) => {
18967
- const divider = " > ";
18951
+ var _a, _b;
18952
+ const arrow = " → ";
18953
+ const divider = " | ";
18954
+ const secretName = (_b = (_a = ingress.spec.tls) == null ? void 0 : _a.find(
18955
+ ({ hosts }) => hosts == null ? void 0 : hosts.includes(r2.host || "")
18956
+ )) == null ? void 0 : _b.secretName;
18957
+ let tooltip = r2.fullPath;
18958
+ if (r2.serviceName) {
18959
+ tooltip += `${arrow}${r2.serviceName}:${r2.servicePort}`;
18960
+ }
18961
+ if (secretName) {
18962
+ tooltip += `${divider}${secretName}`;
18963
+ }
18968
18964
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
18969
18965
  OverflowTooltip,
18970
18966
  {
18971
18967
  content: /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
18972
18968
  /* @__PURE__ */ jsxRuntimeExports.jsx(LinkFallback, { fullPath: r2.fullPath }),
18973
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: divider }),
18969
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: arrow }),
18974
18970
  r2.serviceName ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
18975
18971
  /* @__PURE__ */ jsxRuntimeExports.jsx(
18976
18972
  ResourceLink,
@@ -18984,9 +18980,20 @@ const IngressRulesComponent = ({ ingress }) => {
18984
18980
  ":",
18985
18981
  r2.servicePort
18986
18982
  ] })
18987
- ] }) : r2.resourceName
18983
+ ] }) : r2.resourceName,
18984
+ secretName ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
18985
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: divider }),
18986
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
18987
+ ResourceLink,
18988
+ {
18989
+ resourceName: "secrets",
18990
+ namespace: ingress.metadata.namespace || "default",
18991
+ name: secretName
18992
+ }
18993
+ )
18994
+ ] }) : void 0
18988
18995
  ] }),
18989
- tooltip: `${r2.fullPath}${divider}:${r2.servicePort}`
18996
+ tooltip
18990
18997
  },
18991
18998
  r2.fullPath
18992
18999
  );
@@ -19093,10 +19100,26 @@ const StateDisplayColumnRenderer = (i18n2) => {
19093
19100
  sortable: true,
19094
19101
  width: 120,
19095
19102
  sorter: CommonSorter(dataIndex),
19096
- render: (v) => /* @__PURE__ */ jsxRuntimeExports.jsx(StateTag, {
19097
- state: v,
19098
- hideBackground: true
19099
- })
19103
+ render: (v, record) => {
19104
+ if (record.kind === "Deployment" && record.isPaused) {
19105
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("span", {
19106
+ children: [/* @__PURE__ */ jsxRuntimeExports.jsx(StateTag, {
19107
+ state: v,
19108
+ hideBackground: true
19109
+ }), /* @__PURE__ */ jsxRuntimeExports.jsx(Tag, {
19110
+ color: "yellow",
19111
+ style: {
19112
+ marginLeft: "4px"
19113
+ },
19114
+ children: i18n2.t("dovetail.pause_scheduling")
19115
+ })]
19116
+ });
19117
+ }
19118
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(StateTag, {
19119
+ state: v,
19120
+ hideBackground: true
19121
+ });
19122
+ }
19100
19123
  };
19101
19124
  };
19102
19125
  const WorkloadImageColumnRenderer = (i18n2) => {
@@ -19474,8 +19497,11 @@ const DataKeysColumnRenderer = (i18n2) => {
19474
19497
  display: true,
19475
19498
  dataIndex: ["data"],
19476
19499
  title: i18n2.t("dovetail.data"),
19477
- render(data2) {
19478
- const keys2 = Object.keys(data2 || {});
19500
+ render(data2, record) {
19501
+ const keys2 = Object.keys({
19502
+ ...data2,
19503
+ ..."binaryData" in record._rawYaml ? record._rawYaml.binaryData : {}
19504
+ });
19479
19505
  return keys2.length ? keys2.map((key2) => /* @__PURE__ */ jsxRuntimeExports.jsx(OverflowTooltip, {
19480
19506
  content: key2
19481
19507
  }, key2)) : /* @__PURE__ */ jsxRuntimeExports.jsx(ValueDisplay, {
package/dist/style.css CHANGED
@@ -906,9 +906,12 @@
906
906
  /* fisheye */
907
907
  /* z-index */
908
908
  .esoz3jw.ant-btn.ant-btn-link {
909
- font-size: 13px;
909
+ font-size: 12px;
910
910
  height: 18px;
911
911
  margin-left: 8px;
912
+ }
913
+ .esoz3jw.ant-btn.ant-btn-link span {
914
+ height: 18px;
912
915
  }/* // basic */
913
916
  /* FishEye Color Variables and Functions */
914
917
  /*
@@ -3634,6 +3637,10 @@
3634
3637
  .c1lh8loq.ant-row {
3635
3638
  row-gap: 4px;
3636
3639
  margin-right: 0 !important;
3640
+ }
3641
+
3642
+ .c18272tc {
3643
+ margin-left: 8px;
3637
3644
  }/* // basic */
3638
3645
  /* FishEye Color Variables and Functions */
3639
3646
  /*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dovetail-v2/refine",
3
- "version": "0.3.17-alpha.0",
3
+ "version": "0.3.17",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",