devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
62 lines (61 loc) • 2.6 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\internal\scripting\_languageHelper.js)
* Version: 25.2.3
* Build date: Dec 15, 2025
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* License: https://www.devexpress.com/Support/EULAs/universal.xml
*/
import { aceAvailable } from '@devexpress/analytics-core/analytics-widgets-internal';
import ace from 'ace-builds/src-noconflict/ace';
import 'ace-builds/src-noconflict/mode-csharp';
import 'ace-builds/src-noconflict/mode-vbscript';
import { ReportCompleter } from './_reportCompleter';
aceAvailable(!!ace);
export class LanguageHelper {
getLanguageMode() {
if (this._report()) {
const scriptLanguage = this._report().scriptLanguage();
switch (scriptLanguage) {
case 'CSharp':
return 'ace/mode/csharp';
case 'VisualBasic':
return 'ace/mode/vbscript';
default:
return 'ace/mode/text';
}
}
}
createNewHandler(eventName, eventArgsType) {
if (this._report()) {
const scriptLanguage = this._report().scriptLanguage();
switch (scriptLanguage) {
case 'CSharp':
return '\r\nprivate void ' + eventName + '(object sender, ' + eventArgsType + ' e) {\r\n\r\n}\r\n';
case 'VisualBasic':
return '\r\nPrivate Sub ' + eventName + '(ByVal sender As Object, ByVal e As ' + eventArgsType + ')\r\n\r\nEnd Sub\r\n';
case 'JScript':
return '\r\nprivate final function ' + eventName + '(sender : System.Object, e : ' + eventArgsType + ') {\r\n\r\n}\r\n';
}
}
}
getFunctionNamesFromScript(scripts) {
if (this._report()) {
const keyWords = { 'CSharp': 'void ', 'VisualBasic': 'Sub ', 'JScript': 'function ' };
const scriptLanguage = this._report().scriptLanguage();
const events = [];
if (scripts) {
const lines = scripts.match(new RegExp(keyWords[scriptLanguage] + '(([A-Z])|[a-z])\\w+\\(', 'g'));
lines && lines.forEach((line) => {
events.push(line.substring(keyWords[scriptLanguage].length, line.length - 1));
});
}
return events;
}
}
constructor(report) {
this._report = report;
}
createCompleters(editor, bindingContext, viewModel) {
return [new ReportCompleter(bindingContext.$root.model, editor, viewModel.guid)];
}
}