diff --git a/src/CommandMenu.tsx b/src/CommandMenu.tsx
index f368813..d36cd44 100644
--- a/src/CommandMenu.tsx
+++ b/src/CommandMenu.tsx
@@ -354,8 +354,7 @@ const CommandMenu = ({metaData}: Props) =>
nCreate a New Record
rRefresh the Query
- cOpen the Columns Panel
- fOpen the Filter Panel
+ fOpen the Filter Builder (Advanced mode only)
Record View
diff --git a/src/qqq/components/widgets/charts/StackedBarChart.tsx b/src/qqq/components/widgets/charts/StackedBarChart.tsx
index c72d3fe..29b4e80 100644
--- a/src/qqq/components/widgets/charts/StackedBarChart.tsx
+++ b/src/qqq/components/widgets/charts/StackedBarChart.tsx
@@ -39,65 +39,79 @@ ChartJS.register(
Legend
);
-export const options = {
- maintainAspectRatio: false,
- responsive: true,
- animation: {
- duration: 0
- },
- elements: {
- bar: {
- borderRadius: 4
- }
- },
- plugins: {
- tooltip: {
- // todo - some configs around this
- callbacks: {
- title: function(context: any)
- {
- return ("");
- },
- label: function(context: any)
- {
- if(context.dataset.label.startsWith(context.label))
- {
- return `${context.label}: ${context.formattedValue}`;
- }
- else
+export const makeOptions = (data: DefaultChartData) =>
+{
+ return({
+ maintainAspectRatio: false,
+ responsive: true,
+ animation: {
+ duration: 0
+ },
+ elements: {
+ bar: {
+ borderRadius: 4
+ }
+ },
+ onHover: function (event: any, elements: any[], chart: any)
+ {
+ if(event.type == "mousemove" && elements.length > 0 && data.urls && data.urls.length > elements[0].index && data.urls[elements[0].index])
+ {
+ chart.canvas.style.cursor = "pointer";
+ }
+ else
+ {
+ chart.canvas.style.cursor = "default";
+ }
+ },
+ plugins: {
+ tooltip: {
+ // todo - some configs around this
+ callbacks: {
+ title: function(context: any)
{
return ("");
+ },
+ label: function(context: any)
+ {
+ if(context.dataset.label.startsWith(context.label))
+ {
+ return `${context.label}: ${context.formattedValue}`;
+ }
+ else
+ {
+ return ("");
+ }
+ }
+ }
+ },
+ legend: {
+ position: "bottom",
+ labels: {
+ usePointStyle: true,
+ pointStyle: "circle",
+ boxHeight: 6,
+ boxWidth: 6,
+ padding: 12,
+ font: {
+ size: 14
}
}
}
},
- legend: {
- position: "bottom",
- labels: {
- usePointStyle: true,
- pointStyle: "circle",
- boxHeight: 6,
- boxWidth: 6,
- padding: 12,
- font: {
- size: 14
- }
- }
- }
- },
- scales: {
- x: {
- stacked: true,
- grid: {display: false},
- ticks: {autoSkip: false, maxRotation: 90}
+ scales: {
+ x: {
+ stacked: true,
+ grid: {display: false},
+ ticks: {autoSkip: false, maxRotation: 90}
+ },
+ y: {
+ stacked: true,
+ position: "right",
+ ticks: {precision: 0}
+ },
},
- y: {
- stacked: true,
- position: "right",
- ticks: {precision: 0}
- },
- },
-};
+ });
+}
interface Props
{
@@ -151,7 +165,7 @@ function StackedBarChart({data, chartSubheaderData}: Props): JSX.Element
{chartSubheaderData && ()}
-
+
) : ;
diff --git a/src/qqq/components/widgets/charts/piechart/PieChart.tsx b/src/qqq/components/widgets/charts/piechart/PieChart.tsx
index 18ac555..e562e59 100644
--- a/src/qqq/components/widgets/charts/piechart/PieChart.tsx
+++ b/src/qqq/components/widgets/charts/piechart/PieChart.tsx
@@ -70,7 +70,7 @@ function PieChart({description, chartData, chartSubheaderData}: Props): JSX.Elem
chartData.dataset.backgroundColors = chartColors;
}
}
- const {data, options} = configs(chartData?.labels || [], chartData?.dataset || {});
+ const {data, options} = configs(chartData?.labels || [], chartData?.dataset || {}, chartData?.dataset?.urls);
useEffect(() =>
{
diff --git a/src/qqq/components/widgets/charts/piechart/PieChartConfigs.ts b/src/qqq/components/widgets/charts/piechart/PieChartConfigs.ts
index 0fa202e..30bda5b 100644
--- a/src/qqq/components/widgets/charts/piechart/PieChartConfigs.ts
+++ b/src/qqq/components/widgets/charts/piechart/PieChartConfigs.ts
@@ -23,7 +23,7 @@ import colors from "qqq/assets/theme/base/colors";
const {gradients, dark} = colors;
-function configs(labels: any, datasets: any)
+function configs(labels: any, datasets: any, urls: string[] | undefined)
{
const backgroundColors = [];
@@ -66,6 +66,17 @@ function configs(labels: any, datasets: any)
options: {
maintainAspectRatio: false,
responsive: true,
+ onHover: function (event: any, elements: any[], chart: any)
+ {
+ if(event.type == "mousemove" && elements.length > 0 && urls && urls.length > elements[0].index && urls[elements[0].index])
+ {
+ chart.canvas.style.cursor = "pointer";
+ }
+ else
+ {
+ chart.canvas.style.cursor = "default";
+ }
+ },
plugins: {
tooltip: {
callbacks: {
diff --git a/src/qqq/pages/records/query/RecordQuery.tsx b/src/qqq/pages/records/query/RecordQuery.tsx
index 2bb1adf..75d8601 100644
--- a/src/qqq/pages/records/query/RecordQuery.tsx
+++ b/src/qqq/pages/records/query/RecordQuery.tsx
@@ -610,11 +610,14 @@ function RecordQuery({table, launchProcess}: Props): JSX.Element
e.preventDefault()
updateTable("'r' keyboard event");
}
+ /*
+ // disable until we add a ... ref down to let us programmatically open Columns button
else if (! e.metaKey && e.key === "c")
{
e.preventDefault()
gridApiRef.current.showPreferences(GridPreferencePanelsValue.columns)
}
+ */
else if (! e.metaKey && e.key === "f")
{
e.preventDefault()