react-semaphor 0.1.128 → 0.1.130
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.
- package/dist/chunks/{dashboard-controls-I6kqudDF.js → dashboard-controls-CyXjMFyG.js} +3 -3
- package/dist/chunks/{dashboard-controls-Dd27T34x.js → dashboard-controls-D0NNMMTV.js} +1 -1
- package/dist/chunks/{dashboard-export-dialog-CiZbDQ5t.js → dashboard-export-dialog-74K44GrY.js} +1 -1
- package/dist/chunks/{dashboard-export-dialog-DEOlAtvs.js → dashboard-export-dialog-QHSc2H4A.js} +3 -3
- package/dist/chunks/{dashboard-json-A6ShtMJP.js → dashboard-json-B1EghOQb.js} +1 -1
- package/dist/chunks/{dashboard-json-D_muUlA0.js → dashboard-json-CBKxJ8vr.js} +1 -1
- package/dist/chunks/edit-dashboard-visual-BbJWSwV8.js +195 -0
- package/dist/chunks/{edit-dashboard-visual-KhJjpeit.js → edit-dashboard-visual-hxtJTX_r.js} +1506 -1430
- package/dist/chunks/{editor-action-buttons-cJ_lq4jv.js → editor-action-buttons-C-kNSpbT.js} +1 -1
- package/dist/chunks/{editor-action-buttons-umPHWm3K.js → editor-action-buttons-DVUG-IfI.js} +2 -2
- package/dist/chunks/{index-Bko2LZ3Y.js → index-BwqkWrot.js} +20867 -20658
- package/dist/chunks/{index-CM_yfKlN.js → index-Dv8xdR3_.js} +219 -219
- package/dist/chunks/{resource-management-panel-DvgyBS2t.js → resource-management-panel-BZsjvW6g.js} +1 -1
- package/dist/chunks/{resource-management-panel-DAdIhRme.js → resource-management-panel-DzZ_mzro.js} +2 -2
- package/dist/chunks/{use-visual-utils-80E0OR0x.js → use-visual-utils-BWlOHrm7.js} +1 -1
- package/dist/chunks/{use-visual-utils-C7QMpNLz.js → use-visual-utils-DtS7MAqv.js} +1 -1
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +4 -4
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +1 -1
- package/dist/types/dashboard.d.ts +26 -0
- package/dist/types/main.d.ts +26 -0
- package/dist/types/surfboard.d.ts +26 -0
- package/dist/types/types.d.ts +26 -0
- package/package.json +1 -1
- package/dist/chunks/edit-dashboard-visual-BgRPk31F.js +0 -195
package/dist/chunks/{resource-management-panel-DvgyBS2t.js → resource-management-panel-BZsjvW6g.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./index-Dv8xdR3_.js"),m=require("react"),re=require("./use-visual-utils-BWlOHrm7.js"),ue=require("./use-click-outside-B9T3lmcw.js");/**
|
|
2
2
|
* @license lucide-react v0.453.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
package/dist/chunks/{resource-management-panel-DAdIhRme.js → resource-management-panel-DzZ_mzro.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as e, jsxs as a, Fragment as me } from "react/jsx-runtime";
|
|
2
|
-
import { b as Ke, u as de, f as qe, an as ne, b4 as We, b5 as Ye, c as ee, b6 as Qe, aF as Xe, aG as Ze, B as J, aH as $e, aI as ke, aJ as Y, b7 as ce, L as ie, b8 as et, b9 as tt, ba as st, bb as Ne, bc as pe, bd as at, be as nt, I as it, bf as we, bg as re, bh as Ce, bi as ve, bj as rt, J as ye, R as Se, bk as Ve, aN as Ee, aO as Le, aP as Ae, aR as Te, aS as Oe, aT as Pe, aU as Re, aV as Ie, bl as ot, bm as lt, bn as Ue, bo as je, bp as Me, bq as dt, br as Fe, bs as ct, aD as ae, am as ut, bt as ht, bu as ze, bv as mt, bw as pt, ar as ft, as as gt, at as Dt, au as xt, av as Nt, aw as be, ax as ue, aA as bt, bx as wt, by as Ct, bz as vt, bA as yt } from "./index-
|
|
2
|
+
import { b as Ke, u as de, f as qe, an as ne, b4 as We, b5 as Ye, c as ee, b6 as Qe, aF as Xe, aG as Ze, B as J, aH as $e, aI as ke, aJ as Y, b7 as ce, L as ie, b8 as et, b9 as tt, ba as st, bb as Ne, bc as pe, bd as at, be as nt, I as it, bf as we, bg as re, bh as Ce, bi as ve, bj as rt, J as ye, R as Se, bk as Ve, aN as Ee, aO as Le, aP as Ae, aR as Te, aS as Oe, aT as Pe, aU as Re, aV as Ie, bl as ot, bm as lt, bn as Ue, bo as je, bp as Me, bq as dt, br as Fe, bs as ct, aD as ae, am as ut, bt as ht, bu as ze, bv as mt, bw as pt, ar as ft, as as gt, at as Dt, au as xt, av as Nt, aw as be, ax as ue, aA as bt, bx as wt, by as Ct, bz as vt, bA as yt } from "./index-BwqkWrot.js";
|
|
3
3
|
import St, { useState as g, useEffect as he } from "react";
|
|
4
|
-
import { a as Be } from "./use-visual-utils-
|
|
4
|
+
import { a as Be } from "./use-visual-utils-DtS7MAqv.js";
|
|
5
5
|
import { u as Vt } from "./use-click-outside-CMeO_QFI.js";
|
|
6
6
|
/**
|
|
7
7
|
* @license lucide-react v0.453.0 - ISC
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const o=require("./index-
|
|
1
|
+
"use strict";const o=require("./index-Dv8xdR3_.js"),b=require("react");function _(e){const a=e.toUpperCase().indexOf("WHERE"),r=e.toUpperCase().indexOf("GROUP BY"),t=e.toUpperCase().indexOf("LIMIT"),d=e.toUpperCase().indexOf("ORDER BY");let c=e.length;if(d!==-1&&(c=d),t!==-1&&t<c&&(c=t),a!==-1){const n=e.substring(0,a),s=e.substring(a);return`${n} {{ filters | where }} AND ${s.substring(6)}`}else if(r!==-1){const n=e.substring(0,r),s=e.substring(r);return`${n} {{ filters | where }} ${s}`}else{const n=e.substring(0,c),s=e.substring(c);return console.log("beforeClause",n),console.log("afterClause",s),s?`${n} {{ filters | where }} ${s}`:`${n.replace(/;$/,"")} {{ filters | where }}`}}function B(e){const[a,r]=b.useState(null),[t,d]=b.useState(null),c=o.useEnsureReactGlobals();return b.useEffect(()=>{if(!e||e.trim()===""){r(null),d(null);return}if(!c)return;(async()=>{try{if(!e.startsWith("http://")&&!e.startsWith("https://"))throw new Error(`Invalid URL format: ${e}`);try{new URL(e)}catch{throw new Error(`Invalid URL: ${e}`)}const l=`${e.endsWith("/")?e:`${e}/`}index.js`;try{if(!(await fetch(l,{method:"HEAD"})).ok)throw new Error(`Module not found at ${l}`)}catch{}const m=await import(l);if(typeof m.useChartStore!="function")throw new Error("useChartStore is not a function");r(()=>m.useChartStore),d(null)}catch(s){const l=s instanceof Error?s.message:"Unknown error";console.error("Failed to load remote chart store:",l),d(l),r(null)}})()},[e,c]),a}function H(e,a){if(e.length===0)return"";if(a){const r=e.find(t=>t.id===a);if(r){const t=r.tabTitle;if(t=="All__Header")return e[0].id;if(t&&t.endsWith("__Header")){const c=t.split("__")[0],n=e.find(s=>s.tabTitle===c);return n?n.id:e[0].id}return a}}return e[0].id}async function j(e,a,r,t){if(!a||!r)throw new Error("Missing auth token or visual ID");const d=["resource-by-id","visual",r],c=t.getQueryData(d);if(c)return console.log("Using cached visual data for:",r),{data:c,fromCache:!0};console.log("Fetching visual data from network for:",r);const n=o.ue.loading("Loading visual...",{position:"top-center"});try{const s=await fetch(`${e}/management/v1/visuals/${r}`,{headers:{Authorization:`Bearer ${a}`}});if(!s.ok)throw new Error("Failed to load visual");const l=await s.json();return t.setQueryData(d,l),o.ue.dismiss(n),{data:l,fromCache:!1}}catch(s){throw o.ue.dismiss(n),s}}function T(e){if(typeof e=="string")return JSON.parse(e);if(typeof e=="object")return e;throw new Error("Invalid frame object format")}function Q(e,a){var c,n;const r=(e==null?void 0:e.frameObject)??((c=e==null?void 0:e.visual)==null?void 0:c.frameObject);if(!r)return!1;const t=T(r);if(!(t!=null&&t.cards)||t.cards.length===0)return!1;const d=(n=t.cards)==null?void 0:n.find(s=>s.id===t.activeCardId);return d?(o.setupEditorWithCard({...a,frame:t,card:d,visualId:(e==null?void 0:e.id)||t.visualId}),!0):!1}function G(){var g;const{setCardSql:e}=o.useEditorActions(),a=o.useEditorStore(i=>i.frame),r=o.useEditorStore(i=>i.card),t=B(((g=r.customCardPreferences)==null?void 0:g.url)||""),d=o.useEditorStore(i=>i.selectedSchemaName),c=o.useEditorStore(i=>i.selectedDatamodelId),n=o.useEditorStore(i=>i.selectedDatabaseName),s=o.useEditorStore(i=>i.selectedTableName),l=o.useEditorStore(i=>i.selectedConnectionId),m=o.useEditorStore(i=>i.isShowingVisual),f=r.sql;return{getUpdatedFrame:b.useCallback(()=>{var E;let i=f;f&&!f.includes("{{")&&(i=_(f),e(i));const C=(E=t==null?void 0:t.getState())==null?void 0:E.settings,U={...r,dataSource:r.dataSource||{mode:"directSource"},lastSelectedSchema:d,lastSelectedDatamodelId:c,lastSelectedDatabase:n,lastSelectedTable:s,connectionId:l,sql:i,customCfg:m?r.customCfg:null,preferences:r.preferences,...C&&{customCardPreferences:{...r.customCardPreferences,settings:C}}},w=a.cards.map(S=>S.id===r.id?U:S);return{...a,cards:w,activeCardId:H(w,a.activeCardId)}},[r,a,m,d,c,n,s,l,e,t,f])}}function z(){const{authToken:e,tokenProps:a}=o.useSemaphorContext(),r=o.useQueryClient(),t=o.useSelectedVisual(),{selectVisual:d}=o.useManagementActions(),{setFrame:c,setCard:n,setIsDevMode:s,setActiveTabCardId:l,updateDataSource:m,setQueryResultColumns:f,setSelectedConnectionId:V,setSelectedDatabaseName:g,setSelectedSchemaName:i,setSelectedTableName:C,setSelectedDatamodelId:U,setFilterValues:w,setApplyFilters:E}=o.useEditorActions(),{setIsDashboardEditing:S,setIsVisualEditing:$,setSelectedFrameId:v,clearSelectedFrameId:A,addFrame:N,setIsDashboardPanelOpen:R}=o.useDashboardActions(),I=o.useDashboardStore(u=>u.selectedSheetId),D=o.useDashboardStore(u=>u.selectedFrameId),O=o.useDashboardStore(u=>u.dashboard),x=o.useDashboardStore(u=>u.filterValues),y=o.useVisualById((t==null?void 0:t.id)||"",{enabled:!!(t!=null&&t.id)&&!!(e!=null&&e.accessToken)}),M=b.useCallback(async u=>{try{d(u),A();const{data:p,fromCache:h}=await j(a.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,r);if(!Q(p,{setFrame:c,setCard:n,setIsDevMode:s,setActiveTabCardId:l,updateDataSource:m,setQueryResultColumns:f,setSelectedConnectionId:V,setSelectedDatabaseName:g,setSelectedSchemaName:i,setSelectedTableName:C,setSelectedDatamodelId:U,setFilterValues:w,setApplyFilters:E,setIsDashboardEditing:S,setIsVisualEditing:$,dashboard:O,selectedSheetId:I,selectedFrameId:D,filterValues:x}))throw new Error("Failed to setup editor with visual data");return{success:!0,fromCache:h}}catch(p){return console.error("Error editing visual:",p),{success:!1,error:"Failed to load visual for editing"}}},[e==null?void 0:e.accessToken,a.apiServiceUrl,r,d,c,n,S,$,s,l,m,f,V,g,i,C,U,w,E,A,O,I,D,x]),k=b.useCallback(async u=>{var p;try{if(d(u),!I)return{success:!1,error:"No sheet selected. Please select a sheet first."};const{data:h,fromCache:W}=await j(a.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,r),L=(h==null?void 0:h.frameObject)??((p=h==null?void 0:h.visual)==null?void 0:p.frameObject);if(!L)return{success:!1,error:"Visual has no frame data"};const F=T(L);if(!(F!=null&&F.cards)||F.cards.length===0)return{success:!1,error:"Visual frame is malformed"};const P={...o.cloneFrameWithNewIds(F),visualId:u.id};return N(I,P,"end"),S(!0),v(P.id),R(!1),{success:!0,fromCache:W}}catch(h){return console.error("Error adding visual:",h),{success:!1,error:"Failed to add visual to dashboard"}}},[e==null?void 0:e.accessToken,a.apiServiceUrl,r,d,I,N,S,v,R]);return{visual:y.data,isLoading:y.isLoading,isError:y.isError,error:y.error,handleEditLibraryVisual:M,handleAddLibraryVisual:k,getUpdatedFrame:G().getUpdatedFrame,refetch:y.refetch}}exports.useRemoteChartStore=B;exports.useVisualUtils=z;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { al as G, am as z, h as Y, i as J, an as K, e as _, g as X, u as U, ao as Z, ap as q, l as v, aq as ee, f as h } from "./index-
|
|
1
|
+
import { al as G, am as z, h as Y, i as J, an as K, e as _, g as X, u as U, ao as Z, ap as q, l as v, aq as ee, f as h } from "./index-BwqkWrot.js";
|
|
2
2
|
import { useState as T, useEffect as te, useCallback as V } from "react";
|
|
3
3
|
function re(e) {
|
|
4
4
|
const o = e.toUpperCase().indexOf("WHERE"), r = e.toUpperCase().indexOf("GROUP BY"), t = e.toUpperCase().indexOf("LIMIT"), i = e.toUpperCase().indexOf("ORDER BY");
|
package/dist/dashboard/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-Dv8xdR3_.js"),r=require("../types/index.cjs");exports.Dashboard=e.Dashboard;exports.EMPTY_SELECTION=r.EMPTY_SELECTION;
|
package/dist/dashboard/index.js
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/index-Dv8xdR3_.js"),S=require("./types/index.cjs"),a=require("react/jsx-runtime"),g=require("react"),j=require("./chunks/resource-management-panel-BZsjvW6g.js"),u=require("./chunks/dashboard-export-dialog-74K44GrY.js");require("react-dom");function P(r){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const s in r)if(s!=="default"){const i=Object.getOwnPropertyDescriptor(r,s);Object.defineProperty(t,s,i.get?i:{enumerable:!0,get:()=>r[s]})}}return t.default=r,Object.freeze(t)}const C=P(g);/**
|
|
2
2
|
* @license lucide-react v0.453.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { b as S, E as y, F as P, S as w, U as M, m as k, n as A, u as F, o as g, p as L, P as R, q as I, B as V, c as v, r as _, s as U, t as B, v as W, I as j, w as q, x as z, y as H, z as O, C as G } from "./chunks/index-
|
|
2
|
-
import { Y as oa, Z as na, D as ta, M as ia, a1 as la, R as da, H as ca, H as ua, J as ha, a as pa, Q as fa, ak as ma, a8 as Ca, V as va, N as ba, O as Da, a2 as ga, aa as ya, a9 as xa, ad as Ea, ae as Na, a7 as Ta, T as Sa, a6 as Pa, $ as wa, a0 as Ma, _ as ka, ab as Aa, a5 as Fa, a4 as La, a3 as Ra, af as Ia, ac as Va, K as _a, ah as Ua, aj as Ba, ai as Wa, g as ja, W as qa, A as za, e as Ha, ag as Oa, f as Ga, G as Qa } from "./chunks/index-
|
|
1
|
+
import { b as S, E as y, F as P, S as w, U as M, m as k, n as A, u as F, o as g, p as L, P as R, q as I, B as V, c as v, r as _, s as U, t as B, v as W, I as j, w as q, x as z, y as H, z as O, C as G } from "./chunks/index-BwqkWrot.js";
|
|
2
|
+
import { Y as oa, Z as na, D as ta, M as ia, a1 as la, R as da, H as ca, H as ua, J as ha, a as pa, Q as fa, ak as ma, a8 as Ca, V as va, N as ba, O as Da, a2 as ga, aa as ya, a9 as xa, ad as Ea, ae as Na, a7 as Ta, T as Sa, a6 as Pa, $ as wa, a0 as Ma, _ as ka, ab as Aa, a5 as Fa, a4 as La, a3 as Ra, af as Ia, ac as Va, K as _a, ah as Ua, aj as Ba, ai as Wa, g as ja, W as qa, A as za, e as Ha, ag as Oa, f as Ga, G as Qa } from "./chunks/index-BwqkWrot.js";
|
|
3
3
|
import { EMPTY_SELECTION as Ya } from "./types/index.js";
|
|
4
4
|
import { jsx as a, jsxs as l } from "react/jsx-runtime";
|
|
5
5
|
import * as p from "react";
|
|
6
6
|
import { useMemo as Q } from "react";
|
|
7
|
-
import { ResourceManagementPanel as Ja } from "./chunks/resource-management-panel-
|
|
8
|
-
import { A as Za, D as ae, S as ee, U as se, V as re, u as oe } from "./chunks/dashboard-export-dialog-
|
|
7
|
+
import { ResourceManagementPanel as Ja } from "./chunks/resource-management-panel-DzZ_mzro.js";
|
|
8
|
+
import { A as Za, D as ae, S as ee, U as se, V as re, u as oe } from "./chunks/dashboard-export-dialog-QHSc2H4A.js";
|
|
9
9
|
import "react-dom";
|
|
10
10
|
/**
|
|
11
11
|
* @license lucide-react v0.453.0 - ISC
|
package/dist/surfboard/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-Dv8xdR3_.js"),r=require("../types/index.cjs");exports.Surfboard=e.DashboardPlus;exports.EMPTY_SELECTION=r.EMPTY_SELECTION;
|
package/dist/surfboard/index.js
CHANGED
|
@@ -271,6 +271,7 @@ declare interface ColumnSettings {
|
|
|
271
271
|
timezone?: string;
|
|
272
272
|
sourceTimezone?: string;
|
|
273
273
|
};
|
|
274
|
+
linkFormat: LinkFormat;
|
|
274
275
|
colorRanges: ColorRange_2[];
|
|
275
276
|
}
|
|
276
277
|
|
|
@@ -835,6 +836,14 @@ export declare type KPICardProps = {
|
|
|
835
836
|
|
|
836
837
|
export declare type Level = 'database' | 'schema' | 'table';
|
|
837
838
|
|
|
839
|
+
declare interface LinkFormat {
|
|
840
|
+
urlTemplate: string;
|
|
841
|
+
labelType: 'value' | 'static' | 'column';
|
|
842
|
+
staticLabel?: string;
|
|
843
|
+
labelColumn?: string;
|
|
844
|
+
openInNewTab: boolean;
|
|
845
|
+
}
|
|
846
|
+
|
|
838
847
|
export declare type LoadingProps = {
|
|
839
848
|
message?: string;
|
|
840
849
|
};
|
|
@@ -1238,6 +1247,7 @@ export declare type TCardPreferences = {
|
|
|
1238
1247
|
bulletConfig?: TBulletConfig;
|
|
1239
1248
|
heatmapConfig?: THeatmapConfig;
|
|
1240
1249
|
bubbleScatterConfig?: TBubbleScatterConfig;
|
|
1250
|
+
funnelConfig?: TFunnelConfig;
|
|
1241
1251
|
tablePrefs?: TablePreferences;
|
|
1242
1252
|
allowDownload?: boolean;
|
|
1243
1253
|
customVisualCode?: string;
|
|
@@ -1478,6 +1488,22 @@ export declare type TFrame = {
|
|
|
1478
1488
|
activeCardId: string;
|
|
1479
1489
|
};
|
|
1480
1490
|
|
|
1491
|
+
export declare type TFunnelConfig = {
|
|
1492
|
+
/**
|
|
1493
|
+
* How to calculate percentage in tooltips and data labels.
|
|
1494
|
+
* - 'percentOfTotal': Each stage shows % of total sum (default/current behavior)
|
|
1495
|
+
* - 'percentOfFirst': First stage = 100%, others relative to first
|
|
1496
|
+
*/
|
|
1497
|
+
percentMode?: TFunnelPercentMode;
|
|
1498
|
+
};
|
|
1499
|
+
|
|
1500
|
+
/**
|
|
1501
|
+
* Tooltip/data label percentage calculation mode for funnel charts.
|
|
1502
|
+
* - 'percentOfTotal': Percentage relative to sum of all values (default)
|
|
1503
|
+
* - 'percentOfFirst': Percentage relative to the first stage value (first stage = 100%)
|
|
1504
|
+
*/
|
|
1505
|
+
export declare type TFunnelPercentMode = 'percentOfTotal' | 'percentOfFirst';
|
|
1506
|
+
|
|
1481
1507
|
export declare type THeatmapConfig = {
|
|
1482
1508
|
colorMode?: 'continuous' | 'stepped';
|
|
1483
1509
|
steps?: number;
|
package/dist/types/main.d.ts
CHANGED
|
@@ -576,6 +576,7 @@ declare interface ColumnSettings {
|
|
|
576
576
|
timezone?: string;
|
|
577
577
|
sourceTimezone?: string;
|
|
578
578
|
};
|
|
579
|
+
linkFormat: LinkFormat;
|
|
579
580
|
colorRanges: ColorRange_2[];
|
|
580
581
|
}
|
|
581
582
|
|
|
@@ -1643,6 +1644,14 @@ export declare type KPICardProps = {
|
|
|
1643
1644
|
|
|
1644
1645
|
export declare type Level = 'database' | 'schema' | 'table';
|
|
1645
1646
|
|
|
1647
|
+
declare interface LinkFormat {
|
|
1648
|
+
urlTemplate: string;
|
|
1649
|
+
labelType: 'value' | 'static' | 'column';
|
|
1650
|
+
staticLabel?: string;
|
|
1651
|
+
labelColumn?: string;
|
|
1652
|
+
openInNewTab: boolean;
|
|
1653
|
+
}
|
|
1654
|
+
|
|
1646
1655
|
export declare type LoadingProps = {
|
|
1647
1656
|
message?: string;
|
|
1648
1657
|
};
|
|
@@ -2171,6 +2180,7 @@ export declare type TCardPreferences = {
|
|
|
2171
2180
|
bulletConfig?: TBulletConfig;
|
|
2172
2181
|
heatmapConfig?: THeatmapConfig;
|
|
2173
2182
|
bubbleScatterConfig?: TBubbleScatterConfig;
|
|
2183
|
+
funnelConfig?: TFunnelConfig;
|
|
2174
2184
|
tablePrefs?: TablePreferences;
|
|
2175
2185
|
allowDownload?: boolean;
|
|
2176
2186
|
customVisualCode?: string;
|
|
@@ -2413,6 +2423,22 @@ export declare type TFrame = {
|
|
|
2413
2423
|
activeCardId: string;
|
|
2414
2424
|
};
|
|
2415
2425
|
|
|
2426
|
+
export declare type TFunnelConfig = {
|
|
2427
|
+
/**
|
|
2428
|
+
* How to calculate percentage in tooltips and data labels.
|
|
2429
|
+
* - 'percentOfTotal': Each stage shows % of total sum (default/current behavior)
|
|
2430
|
+
* - 'percentOfFirst': First stage = 100%, others relative to first
|
|
2431
|
+
*/
|
|
2432
|
+
percentMode?: TFunnelPercentMode;
|
|
2433
|
+
};
|
|
2434
|
+
|
|
2435
|
+
/**
|
|
2436
|
+
* Tooltip/data label percentage calculation mode for funnel charts.
|
|
2437
|
+
* - 'percentOfTotal': Percentage relative to sum of all values (default)
|
|
2438
|
+
* - 'percentOfFirst': Percentage relative to the first stage value (first stage = 100%)
|
|
2439
|
+
*/
|
|
2440
|
+
export declare type TFunnelPercentMode = 'percentOfTotal' | 'percentOfFirst';
|
|
2441
|
+
|
|
2416
2442
|
export declare type THeatmapConfig = {
|
|
2417
2443
|
colorMode?: 'continuous' | 'stepped';
|
|
2418
2444
|
steps?: number;
|
|
@@ -271,6 +271,7 @@ declare interface ColumnSettings {
|
|
|
271
271
|
timezone?: string;
|
|
272
272
|
sourceTimezone?: string;
|
|
273
273
|
};
|
|
274
|
+
linkFormat: LinkFormat;
|
|
274
275
|
colorRanges: ColorRange_2[];
|
|
275
276
|
}
|
|
276
277
|
|
|
@@ -838,6 +839,14 @@ export declare type KPICardProps = {
|
|
|
838
839
|
|
|
839
840
|
export declare type Level = 'database' | 'schema' | 'table';
|
|
840
841
|
|
|
842
|
+
declare interface LinkFormat {
|
|
843
|
+
urlTemplate: string;
|
|
844
|
+
labelType: 'value' | 'static' | 'column';
|
|
845
|
+
staticLabel?: string;
|
|
846
|
+
labelColumn?: string;
|
|
847
|
+
openInNewTab: boolean;
|
|
848
|
+
}
|
|
849
|
+
|
|
841
850
|
export declare type LoadingProps = {
|
|
842
851
|
message?: string;
|
|
843
852
|
};
|
|
@@ -1243,6 +1252,7 @@ export declare type TCardPreferences = {
|
|
|
1243
1252
|
bulletConfig?: TBulletConfig;
|
|
1244
1253
|
heatmapConfig?: THeatmapConfig;
|
|
1245
1254
|
bubbleScatterConfig?: TBubbleScatterConfig;
|
|
1255
|
+
funnelConfig?: TFunnelConfig;
|
|
1246
1256
|
tablePrefs?: TablePreferences;
|
|
1247
1257
|
allowDownload?: boolean;
|
|
1248
1258
|
customVisualCode?: string;
|
|
@@ -1483,6 +1493,22 @@ export declare type TFrame = {
|
|
|
1483
1493
|
activeCardId: string;
|
|
1484
1494
|
};
|
|
1485
1495
|
|
|
1496
|
+
export declare type TFunnelConfig = {
|
|
1497
|
+
/**
|
|
1498
|
+
* How to calculate percentage in tooltips and data labels.
|
|
1499
|
+
* - 'percentOfTotal': Each stage shows % of total sum (default/current behavior)
|
|
1500
|
+
* - 'percentOfFirst': First stage = 100%, others relative to first
|
|
1501
|
+
*/
|
|
1502
|
+
percentMode?: TFunnelPercentMode;
|
|
1503
|
+
};
|
|
1504
|
+
|
|
1505
|
+
/**
|
|
1506
|
+
* Tooltip/data label percentage calculation mode for funnel charts.
|
|
1507
|
+
* - 'percentOfTotal': Percentage relative to sum of all values (default)
|
|
1508
|
+
* - 'percentOfFirst': Percentage relative to the first stage value (first stage = 100%)
|
|
1509
|
+
*/
|
|
1510
|
+
export declare type TFunnelPercentMode = 'percentOfTotal' | 'percentOfFirst';
|
|
1511
|
+
|
|
1486
1512
|
export declare type THeatmapConfig = {
|
|
1487
1513
|
colorMode?: 'continuous' | 'stepped';
|
|
1488
1514
|
steps?: number;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -270,6 +270,7 @@ declare interface ColumnSettings {
|
|
|
270
270
|
timezone?: string;
|
|
271
271
|
sourceTimezone?: string;
|
|
272
272
|
};
|
|
273
|
+
linkFormat: LinkFormat;
|
|
273
274
|
colorRanges: ColorRange_2[];
|
|
274
275
|
}
|
|
275
276
|
|
|
@@ -832,6 +833,14 @@ export declare type KPICardProps = {
|
|
|
832
833
|
|
|
833
834
|
export declare type Level = 'database' | 'schema' | 'table';
|
|
834
835
|
|
|
836
|
+
declare interface LinkFormat {
|
|
837
|
+
urlTemplate: string;
|
|
838
|
+
labelType: 'value' | 'static' | 'column';
|
|
839
|
+
staticLabel?: string;
|
|
840
|
+
labelColumn?: string;
|
|
841
|
+
openInNewTab: boolean;
|
|
842
|
+
}
|
|
843
|
+
|
|
835
844
|
export declare type LoadingProps = {
|
|
836
845
|
message?: string;
|
|
837
846
|
};
|
|
@@ -1235,6 +1244,7 @@ export declare type TCardPreferences = {
|
|
|
1235
1244
|
bulletConfig?: TBulletConfig;
|
|
1236
1245
|
heatmapConfig?: THeatmapConfig;
|
|
1237
1246
|
bubbleScatterConfig?: TBubbleScatterConfig;
|
|
1247
|
+
funnelConfig?: TFunnelConfig;
|
|
1238
1248
|
tablePrefs?: TablePreferences;
|
|
1239
1249
|
allowDownload?: boolean;
|
|
1240
1250
|
customVisualCode?: string;
|
|
@@ -1475,6 +1485,22 @@ export declare type TFrame = {
|
|
|
1475
1485
|
activeCardId: string;
|
|
1476
1486
|
};
|
|
1477
1487
|
|
|
1488
|
+
export declare type TFunnelConfig = {
|
|
1489
|
+
/**
|
|
1490
|
+
* How to calculate percentage in tooltips and data labels.
|
|
1491
|
+
* - 'percentOfTotal': Each stage shows % of total sum (default/current behavior)
|
|
1492
|
+
* - 'percentOfFirst': First stage = 100%, others relative to first
|
|
1493
|
+
*/
|
|
1494
|
+
percentMode?: TFunnelPercentMode;
|
|
1495
|
+
};
|
|
1496
|
+
|
|
1497
|
+
/**
|
|
1498
|
+
* Tooltip/data label percentage calculation mode for funnel charts.
|
|
1499
|
+
* - 'percentOfTotal': Percentage relative to sum of all values (default)
|
|
1500
|
+
* - 'percentOfFirst': Percentage relative to the first stage value (first stage = 100%)
|
|
1501
|
+
*/
|
|
1502
|
+
export declare type TFunnelPercentMode = 'percentOfTotal' | 'percentOfFirst';
|
|
1503
|
+
|
|
1478
1504
|
export declare type THeatmapConfig = {
|
|
1479
1505
|
colorMode?: 'continuous' | 'stepped';
|
|
1480
1506
|
steps?: number;
|