@adaptabletools/adaptable-cjs
Version:
Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
131 lines (130 loc) • 6.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ChartingModule = void 0;
const tslib_1 = require("tslib");
const AdaptableModuleBase_1 = require("./AdaptableModuleBase");
const ModuleConstants = tslib_1.__importStar(require("../Utilities/Constants/ModuleConstants"));
const ShowChartButton_1 = require("../View/Charting/ShowChartButton");
const ChartingWizard_1 = require("../View/Charting/ChartingWizard");
const ChartingRedux = tslib_1.__importStar(require("../Redux/ActionsReducers/ChartingRedux"));
const ChartingStatusBarPopover_1 = require("../View/Charting/ChartingStatusBarPopover");
const ChartingState_1 = require("../AdaptableState/ChartingState");
const Helper_1 = tslib_1.__importDefault(require("../Utilities/Helpers/Helper"));
const getObjectTagsViewItems_1 = require("../Utilities/getObjectTagsViewItems");
const ArrayExtensions_1 = tslib_1.__importDefault(require("../Utilities/Extensions/ArrayExtensions"));
class ChartingModule extends AdaptableModuleBase_1.AdaptableModuleBase {
constructor(api) {
super(ModuleConstants.ChartingModuleId, ModuleConstants.ChartingFriendlyName, 'chart', 'ChartPopup', 'Create AG Grid Charts in order to see Adaptable Data visually', api);
}
isModuleAvailable() {
const agChartsAvailable = this.api.chartingApi.isChartingEnabled() && super.isModuleAvailable();
const externalChartsAvailable = Helper_1.default.objectHasKeys(this.api.optionsApi.getChartingOptions().externalChartingOptions);
return Boolean(agChartsAvailable || externalChartsAvailable);
}
createColumnMenuItems(column) {
if (column &&
this.isModuleEditable() &&
ArrayExtensions_1.default.IsNotNullOrEmpty(this.api.chartingApi.getChartDefinitions())) {
return [
this.createMainMenuItemShowPopup({
Name: 'chart-show',
Label: 'Manage Charts',
ComponentName: this.moduleInfo.Popup,
Icon: this.moduleInfo.Glyph,
}),
];
}
}
getModuleAdaptableObjects() {
return [
...this.api.chartingApi.getChartDefinitions(),
...this.api.chartingApi.getExternalChartDefinitions(),
];
}
toViewAll() {
return this.getModuleAdaptableObjects().map((chartDef) => this.toView(chartDef));
}
toView(chart) {
if ((0, ChartingState_1.isExternalChartDefinition)(chart)) {
return this.toViewExternalChartDefinition(chart);
}
else {
return this.toViewChartDefinition(chart);
}
}
toViewExternalChartDefinition(chart) {
return {
items: [{ name: 'Name', values: [chart.Name] }],
abObject: chart,
};
}
toViewChartDefinition(chart) {
return {
items: [
{
name: 'Name',
values: [chart.Name],
},
{
name: 'About',
values: [
`Chart Type: ${chart.Model.chartType}`,
chart.Model.aggFunc && `Aggregation Function: ${chart.Model.aggFunc}`,
].filter(Boolean),
},
{
name: 'Settings',
values: [
`Unlink from data: ${chart.Model.unlinkChart ? 'Yes' : 'No'}`,
`Suppress Chart Ranges: ${chart.Model.suppressChartRanges ? 'Yes' : 'No'}`,
],
},
{
name: 'Range',
values: [
`Row start index: ${chart.Model.cellRange.rowStartIndex}`,
`Row end index: ${chart.Model.cellRange.rowEndIndex}`,
chart.Model.cellRange.columnStart &&
`Column start: ${typeof chart.Model.cellRange.columnStart === 'string'
? this.api.columnApi.getFriendlyNameForColumnId(chart.Model.cellRange.columnStart)
: this.api.columnApi.getFriendlyNameForColumnId(chart.Model.cellRange.columnStart.getColId())}`,
chart.Model.cellRange.columnEnd &&
`Column start: ${typeof chart.Model.cellRange.columnEnd === 'string'
? this.api.columnApi.getFriendlyNameForColumnId(chart.Model.cellRange.columnEnd)
: this.api.columnApi.getFriendlyNameForColumnId(chart.Model.cellRange.columnEnd.getColId())}`,
chart.Model.cellRange.columns?.length &&
`Columns ${chart.Model.cellRange.columns
.map((column) => typeof column === 'string'
? this.api.columnApi.getFriendlyNameForColumnId(column)
: this.api.columnApi.getFriendlyNameForColumnId(column.getColId()))
.join(', ')}`,
].filter(Boolean),
},
(0, getObjectTagsViewItems_1.getObjectTagsViewItems)(chart, this.api),
].filter(Boolean),
abObject: chart,
};
}
getViewProperties() {
return {
actions: [ShowChartButton_1.ShowChartButton],
getEditWizard: () => ChartingWizard_1.ChartingWizard,
// not sure if charts should be created via adaptable wizard
hideNewButton: true,
getDeleteAction: (chartDefinition) => {
return (0, ChartingState_1.isAgChartDefinition)(chartDefinition)
? ChartingRedux.ChartingDeleteChart(chartDefinition)
: ChartingRedux.ChartingDeleteExternalChart(chartDefinition);
},
emptyView: 'To create a chart select a few cells and right click. Then select "Chart Range" from the context menu.',
getStatusBarPanelProps: () => {
const content = ChartingStatusBarPopover_1.ChartingStatusBarPopover;
return {
content,
triggerActionOnWrapperClick: false,
};
},
};
}
}
exports.ChartingModule = ChartingModule;