blob: 1ec0cfba7173506d1b41399f94a512a0d3f88d1f [file] [log] [blame]
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { EditorCompletionKey, EditorLanguage, EditorMode } from './message-common.interface';
export enum DynamicFormsType {
TextBox = 'TextBox',
Password = 'Password',
Select = 'Select',
CheckBox = 'CheckBox'
}
export interface DynamicFormsItem {
defaultValue: string | string[];
hidden: boolean;
name: string;
displayName?: string;
type: DynamicFormsType;
argument?: string;
options?: Array<{ value: string; displayName?: string }>;
}
export interface DynamicForms {
[key: string]: DynamicFormsItem;
}
export interface DynamicFormParams {
[key: string]: string | string[];
}
export interface ParagraphEditorSetting {
language?: EditorLanguage;
editOnDblClick?: boolean;
isOutputHidden?: boolean;
completionKey?: EditorCompletionKey;
completionSupport?: boolean;
params?: DynamicFormParams;
forms?: DynamicForms;
}
// TODO(hsuanxyz)
export interface ParagraphParams {
// tslint:disable-next-line no-any
[key: string]: any;
}
export interface ParagraphConfigResults {
[index: string]: ParagraphConfigResult;
}
export interface ParagraphConfigResult {
graph: GraphConfig;
}
export interface ParagraphConfig {
editorSetting?: ParagraphEditorSetting;
colWidth?: number;
editorMode?: EditorMode;
fontSize?: number;
results?: ParagraphConfigResults;
enabled?: boolean;
tableHide?: boolean;
lineNumbers?: boolean;
editorHide?: boolean;
title?: boolean;
runOnSelectionChange?: boolean;
isZeppelinNotebookCronEnable?: boolean;
}
export interface ParagraphResults {
code?: string;
msg?: ParagraphIResultsMsgItem[];
[index: number]: {};
}
export enum DatasetType {
NETWORK = 'NETWORK',
TABLE = 'TABLE',
HTML = 'HTML',
TEXT = 'TEXT',
ANGULAR = 'ANGULAR',
IMG = 'IMG'
}
export class ParagraphIResultsMsgItem {
type: DatasetType = DatasetType.TEXT;
data = '';
}
export interface ParasInfo {
id: string;
infos: RuntimeInfos;
}
export interface RuntimeInfos {
jobUrl: RuntimeInfosJobUrl;
}
interface RuntimeInfosJobUrl {
propertyName: string;
label: string;
tooltip: string;
group: string;
values: RuntimeInfosValuesItem[];
interpreterSettingId: string;
}
interface RuntimeInfosValuesItem {
jobUrl: string;
}
export interface ParagraphItem {
text: string;
user: string;
dateUpdated: string;
config: ParagraphConfig;
settings: ParagraphEditorSetting;
results?: ParagraphResults;
// tslint:disable-next-line no-any
apps: any[];
progressUpdateIntervalMs: number;
jobName: string;
id: string;
dateCreated: string;
dateStarted?: string;
dateFinished?: string;
errorMessage?: string;
runtimeInfos?: RuntimeInfos;
status: string;
title?: string;
focus?: boolean;
// tslint:disable-next-line no-any TODO(hsuanxyz)
aborted: any;
// tslint:disable-next-line no-any TODO(hsuanxyz)
lineNumbers: any;
// tslint:disable-next-line no-any TODO(hsuanxyz)
fontSize: any;
}
export interface SendParagraph {
id: string;
title?: string;
paragraph: string;
config: ParagraphConfig;
params: ParagraphParams;
}
export interface CopyParagraph {
index: number;
title?: string;
paragraph: string;
config: ParagraphConfig;
params: ParagraphParams;
}
export interface RunParagraph extends SendParagraph {
// tslint:disable-next-line no-any
[key: string]: any;
}
export interface CommitParagraph extends SendParagraph {
noteId: string;
}
export interface RunAllParagraphs {
noteId: string;
paragraphs: string;
}
export interface InsertParagraph {
index: number;
}
export interface MoveParagraph {
id: string;
index: number;
}
export interface AngularObjectUpdated {
noteId: string;
paragraphId: string;
name: string;
value: string;
interpreterGroupId: string;
}
export interface AngularObjectRemove {
noteId: string;
paragraphId: string;
name: string;
}
export interface AngularObjectUpdate {
noteId: string;
paragraphId: string;
interpreterGroupId: string;
angularObject: {
name: string;
// tslint:disable-next-line:no-any
object: any;
noteId: string;
paragraphId: string;
};
}
export interface AngularObjectClientBind {
noteId: string;
name: string;
value: string;
paragraphId: string;
}
export interface AngularObjectClientUnbind {
noteId: string;
name: string;
paragraphId: string;
}
export interface CancelParagraph {
id: string;
}
export interface ParagraphRemove {
id: string;
}
export interface ParagraphClearOutput {
id: string;
}
export interface ParagraphClearAllOutput {
id: string;
}
export interface Completion {
id: string;
buf: string;
cursor: number;
}
export interface CompletionItem {
meta: string;
value: string;
name: string;
}
export interface CompletionReceived {
completions: CompletionItem[];
id: string;
}
export interface PatchParagraphReceived {
id: string;
noteId: string;
patch: string;
}
export interface PatchParagraphSend {
paragraphId: string;
patch: string;
}
export interface ParagraphRemoved {
id: string;
}
export type VisualizationMode =
| 'table'
| 'lineChart'
| 'stackedAreaChart'
| 'multiBarChart'
| 'scatterChart'
| 'pieChart'
| string;
export class GraphConfig {
mode: VisualizationMode = 'table';
height = 300;
optionOpen = false;
setting: GraphConfigSetting = {};
keys: GraphConfigKeysItem[] = [];
groups: GraphConfigGroupsItem[] = [];
values: GraphConfigValuesItem[] = [];
commonSetting: GraphConfigCommonSetting;
}
export interface Progress {
id: string;
progress: number;
}
export interface ParagraphStatus {
id: string;
status: string;
}
interface GraphConfigSetting {
table?: VisualizationTable;
lineChart?: VisualizationLineChart;
stackedAreaChart?: VisualizationStackedAreaChart;
multiBarChart?: VisualizationMultiBarChart;
scatterChart?: VisualizationScatterChart;
}
interface VisualizationTable {
tableGridState: TableGridState;
tableColumnTypeState: TableColumnTypeState;
updated: boolean;
initialized: boolean;
tableOptionSpecHash: string;
tableOptionValue: TableOptionValue;
}
interface TableGridState {
columns: ColumnsItem[];
scrollFocus: ScrollFocus;
// tslint:disable-next-line
selection: any[];
grouping: Grouping;
treeView: TreeView;
pagination: Pagination;
}
interface ColumnsItem {
name: string;
visible: boolean;
width: string;
sort: Sort;
filters: FiltersItem[];
pinned: string;
}
interface Sort {
// tslint:disable-next-line
[key: string]: any;
}
interface FiltersItem {
// tslint:disable-next-line
[key: string]: any;
}
interface ScrollFocus {
// tslint:disable-next-line
[key: string]: any;
}
interface Grouping {
// tslint:disable-next-line
grouping: any[];
// tslint:disable-next-line
aggregations: any[];
rowExpandedStates: RowExpandedStates;
}
interface RowExpandedStates {
// tslint:disable-next-line
[key: string]: any;
}
interface TreeView {
// tslint:disable-next-line
[key: string]: any;
}
interface Pagination {
paginationCurrentPage: number;
paginationPageSize: number;
}
interface TableColumnTypeState {
updated: boolean;
names: Names;
}
interface Names {
index: string;
value: string;
random: string;
count: string;
}
interface TableOptionValue {
useFilter: boolean;
showPagination: boolean;
showAggregationFooter: boolean;
}
export type XLabelStatus = 'default' | 'rotate' | 'hide';
export class XAxisSetting {
rotate = { degree: '-45' };
xLabelStatus: XLabelStatus = 'default';
}
export class VisualizationLineChart extends XAxisSetting {
forceY = false;
lineWithFocus = false;
isDateFormat = false;
dateFormat = '';
}
export class VisualizationStackedAreaChart extends XAxisSetting {
style: 'stream' | 'expand' | 'stack' = 'stack';
}
export class VisualizationMultiBarChart extends XAxisSetting {
stacked = false;
}
export class VisualizationScatterChart {
xAxis?: XAxis;
yAxis?: YAxis;
group?: Group;
size?: Size;
}
interface XAxis {
name: string;
index: number;
aggr: string;
}
interface YAxis {
name: string;
index: number;
aggr: string;
}
interface Group {
name: string;
index: number;
aggr: string;
}
interface Size {
name: string;
index: number;
aggr: string;
}
interface GraphConfigKeysItem {
name: string;
index: number;
aggr: string;
}
interface GraphConfigGroupsItem {
name: string;
index: number;
aggr: string;
}
interface GraphConfigValuesItem {
name: string;
index: number;
aggr: string;
}
interface GraphConfigCommonSetting {
// tslint:disable-next-line
[key: string]: any;
}