/// /// /// import CachedProperty from './CachedProperty'; import { RuleSet, RuleSetParams, RuleWithId } from './oncoprintruleset'; import { InitParams } from './oncoprint'; import { ComputedShapeParams } from './oncoprintshape'; import { OncoprintGapConfig } from './oncoprintwebglcellview'; export declare enum GAP_MODE_ENUM { SHOW_GAPS = "SHOW_GAPS", SHOW_GAPS_PERCENT = "SHOW_GAPS_PERCENT", HIDE_GAPS = "HIDE_GAPS" } export type ColumnId = string; export type ColumnIndex = number; export type TrackId = number; export type Datum = any; export type RuleSetId = number; export type TrackGroupHeader = { label: { text: string; }; options: CustomTrackGroupOption[]; }; export type TrackGroup = { header?: TrackGroupHeader; tracks: TrackId[]; }; export type TrackGroupIndex = number; export type TrackSortDirection = 0 | 1 | -1; export type TrackSortComparator = (d1: D, d2: D) => number; export type TrackSortVector = (d: D) => (number | string)[]; export type TrackTooltipFn = (cell_data: D[]) => HTMLElement | string | any; export type TrackSortSpecificationComparators = { mandatory: TrackSortComparator; preferred: TrackSortComparator; isVector?: false; }; export type TrackSortSpecificationVectors = { mandatory: TrackSortVector; preferred: TrackSortVector; isVector: true; compareEquals?: TrackSortComparator; }; export type TrackSortSpecification = TrackSortSpecificationComparators | TrackSortSpecificationVectors; export type ActiveRules = { [ruleId: number]: boolean; }; export type ActiveRulesCount = { [ruleId: number]: number; }; export type TrackSortDirectionChangeCallback = (track_id: TrackId, dir: number) => void; export type TrackGapChangeCallBack = (track_id: TrackId, mode: GAP_MODE_ENUM) => void; export type CustomTrackOption = { label?: string; separator?: boolean; onClick?: (id: TrackId) => void; weight?: string; disabled?: boolean; gapLabelsFn?: (model: OncoprintModel) => OncoprintGapConfig[]; }; export type CustomTrackGroupOption = { label?: string; separator?: boolean; onClick?: (id: TrackGroupIndex) => void; weight?: () => string; disabled?: () => boolean; }; export type UserTrackSpec = { target_group?: TrackGroupIndex; cell_height?: number; track_padding?: number; has_column_spacing?: boolean; data_id_key?: string & keyof D; tooltipFn?: TrackTooltipFn; movable?: boolean; removable?: boolean; removeCallback?: (track_id: TrackId) => void; onClickRemoveInTrackMenu?: (track_id: TrackId) => void; label?: string; sublabel?: string; gapLabelFn?: (model: OncoprintModel) => string[]; html_label?: string; track_label_color?: string; track_label_circle_color?: string; track_label_font_weight?: string; track_label_left_padding?: number; link_url?: string; description?: string; track_info?: string; sortCmpFn: TrackSortSpecification; sort_direction_changeable?: boolean; onSortDirectionChange?: TrackSortDirectionChangeCallback; onGapChange?: TrackGapChangeCallBack; init_sort_direction?: TrackSortDirection; data?: D[]; rule_set_params?: RuleSetParams; expansion_of?: TrackId; expandCallback?: (id: TrackId) => void; expandButtonTextGetter?: (is_expanded: boolean) => string; important_ids?: string[]; custom_track_options?: CustomTrackOption[]; $track_info_tooltip_elt?: JQuery; track_can_show_gaps?: boolean; show_gaps_on_init?: boolean; }; export type LibraryTrackSpec = UserTrackSpec & { rule_set: RuleSet; track_id: TrackId; }; export type TrackOverlappingCells = { ids: ColumnId[]; track: TrackId; top: number; left: number; }; export type SortConfig = { type: 'alphabetical'; } | { type: 'order'; order: string[]; } | { type: 'cluster'; track_group_index: number; clusterValueFn: (datum: any) => number; } | { type?: ''; }; export type IdentifiedShapeList = { id: ColumnId; shape_list: ComputedShapeParams[]; }; export type ClusterSortResult = { track_group_index: TrackGroupIndex; track_id_order: TrackId[]; }; export type ColumnLabel = { left_padding_percent?: number; text_color?: string; circle_color?: string; angle_in_degrees?: number; text: string; }; export type TrackProp = { [trackId: number]: T; }; export type TrackGroupProp = { [trackGroupIndex: number]: T; }; export type ColumnProp = { [columnId: string]: T; }; export type ColumnIdSet = { [columnId: string]: any; }; export type OncoprintDataGroupsByTrackId = Record[]>; export type OncoprintDataGroups = OncoprintDataGroup[]; export type OncoprintDataGroup = T[]; export default class OncoprintModel { private sort_config; rendering_suppressed_depth: number; keep_sorted: boolean; readonly max_height: number; private cell_width; private horz_zoom; private vert_zoom; private horz_scroll; private vert_scroll; private bottom_padding; private track_group_padding; private cell_padding; private cell_padding_on; private cell_padding_off_cell_width_threshold; private cell_padding_off_because_of_zoom; private id_order; private hidden_ids; private highlighted_ids; private highlighted_tracks; private track_group_legend_order; private show_track_sublabels; private show_track_labels; private column_labels; private track_important_ids; private track_label; private track_label_color; private track_label_circle_color; private track_label_font_weight; private track_label_left_padding; private track_sublabel; private track_html_label; private track_link_url; private track_description; private cell_height; private track_padding; private track_data_id_key; private track_tooltip_fn; private track_movable; private track_removable; private track_remove_callback; private track_remove_option_callback; private track_sort_cmp_fn; private track_sort_direction_changeable; private track_sort_direction; private track_sort_direction_change_callback; private track_gap_change_callback; private track_data; private track_rule_set_id; private track_active_rules; private track_info; private $track_info_tooltip_elt; private track_has_column_spacing; private track_expansion_enabled; private track_expand_callback; private track_expand_button_getter; track_expansion_tracks: TrackProp; private track_expansion_parent; private track_custom_options; private track_can_show_gaps; private track_show_gaps; private rule_sets; private rule_set_active_rules; private visible_id_order; private track_id_to_datum; private track_present_ids; private present_ids; private id_to_index; private visible_id_to_index; private track_tops; private cell_tops; private label_tops; private track_tops_zoomed; private header_tops_zoomed; private cell_tops_zoomed; private label_tops_zoomed; private column_left; private column_left_always_with_padding; private zoomed_column_left; private column_left_no_padding; private precomputed_comparator; ids_after_a_gap: CachedProperty; data_groups: CachedProperty>>>; private column_indexes_after_a_gap; private track_groups; private unclustered_track_group_order?; private track_group_sort_priority; constructor(params: InitParams); setTrackShowGaps(trackId: TrackId, show: GAP_MODE_ENUM): void; getTrackShowGaps(trackId: TrackId): GAP_MODE_ENUM; getTrackCanShowGaps(trackId: TrackId): boolean; getColumnIndexesAfterAGap(): number[]; setTrackGroupHeader(index: TrackGroupIndex, header?: TrackGroupHeader): void; getTrackGroupHeaderHeight(trackGroup: TrackGroup): 0 | 32; toggleCellPadding(): boolean; getCellPadding(base?: boolean, dont_consider_zoom?: boolean): number; getHorzZoom(): number; getIdsInZoomedLeftInterval(left: number, right: number): string[]; getHorzZoomToFitCols(width: number, left_col_incl: ColumnIndex, right_col_excl: ColumnIndex): number; getHorzZoomToFit(width: number, ids: ColumnId[]): number; getMinHorzZoom(): number; getMinVertZoom(): number; setHorzScroll(s: number): number; setVertScroll(s: number): number; setScroll(h: number, v: number): void; getHorzScroll(): number; getVertScroll(): number; setZoom(zoom_x: number, zoom_y: number): void; private setCellPaddingOffBecauseOfZoom; setHorzZoom(z: number): number; getVertZoom(): number; setVertZoom(z: number): number; setShowTrackLabels(s: boolean): void; getShowTrackLabels(): boolean; hideTrackLegends(track_ids: TrackId[]): void; showTrackLegends(track_ids: TrackId[]): void; private clearTrackActiveRules; private setTrackActiveRules; getTrackUniversalShapes(track_id: TrackId, use_base_size: boolean): ComputedShapeParams[]; getSpecificShapesForData(track_id: TrackId, use_base_size: boolean): IdentifiedShapeList[]; getActiveRules(rule_set_id: RuleSetId): RuleWithId[]; setTrackImportantIds(track_id: TrackId, ids?: ColumnId[]): void; getTrackImportantIds(track_id: TrackId): ColumnProp; getRuleSets(): RuleSet[]; getTrackHasColumnSpacing(track_id: TrackId): boolean; getGapSize(): number; getCellWidth(base?: boolean): number; getCellHeight(track_id: TrackId, base?: boolean): number; getTrackInfo(track_id: TrackId): string; setTrackInfo(track_id: TrackId, msg: string): void; getTrackHeight(track_id: TrackId, base?: boolean): number; getTrackPadding(track_id: TrackId, base?: boolean): number; getBottomPadding(): number; getTrackSortDirection(track_id: TrackId): TrackSortDirection; setTrackSortDirection(track_id: TrackId, dir: TrackSortDirection, no_callback?: boolean): void; resetSortableTracksSortDirection(no_callback?: boolean): void; setCellPaddingOn(cell_padding_on: boolean): void; getIdOrder(all?: boolean): string[]; getClosestColumnIndexToLeft(left: number, zoomed?: boolean, roundUp?: boolean): number; getIdToIndexMap(): ColumnProp; getVisibleIdToIndexMap(): ColumnProp; getHiddenIds(): string[]; isSortAffected(modified_ids: TrackId | TrackId[], group_or_track: 'track' | 'group'): boolean; setIdOrder(ids: ColumnId[]): void; hideIds(to_hide: ColumnId[], show_others?: boolean): void; setHighlightedTracks(track_ids: TrackId[]): void; getHighlightedTracks(): number[]; setHighlightedIds(ids: ColumnId[]): void; getVisibleHighlightedIds(): string[]; restoreClusteredTrackGroupOrder(): void; setTrackGroupOrder(index: TrackGroupIndex, track_order: TrackId[]): void; moveTrackGroup(from_index: TrackGroupIndex, to_index: TrackGroupIndex): TrackGroup[]; addTracks(params_list: LibraryTrackSpec[]): Promise; private addTrack; getAllIds(): string[]; releaseRendering(): Promise; private ensureTrackGroupExists; private _getMajorTrackGroup; private _getEffectiveTrackGroupTracks; private isRuleSetUsed; private removeRuleSet; removeTrack(track_id: TrackId): void; getOverlappingCells(x: number, y: number): TrackOverlappingCells | null; getTrackDatum(track_id: TrackId, id: ColumnId): any; getTrackTops(): TrackProp; getTrackTops(desired_track_id: TrackId): number; getZoomedTrackTops(): TrackProp; getZoomedTrackTops(desired_track_id: TrackId): number; getZoomedHeaderTops(): TrackGroupProp; getZoomedHeaderTops(track_group_index: TrackGroupIndex): number; getCellTops(desired_track_id?: undefined, base?: boolean): TrackProp; getCellTops(desired_track_id: TrackId, base?: boolean): number; getLabelTops(): TrackProp; getLabelTops(desired_track_id: TrackId): number; getContainingTrackGroup(track_id: TrackId): number[]; getContainingTrackGroupIndex(track_id: TrackId): number; getTrackGroups(): TrackGroup[]; getTracks(): number[]; getColumnLeft(): ColumnProp; getColumnLeft(id: ColumnId): number; getColumnLeftNoPadding(): ColumnProp; getColumnLeftNoPadding(id: ColumnId): number; getZoomedColumnLeft(): ColumnProp; getZoomedColumnLeft(id: ColumnId): number; getOncoprintHeight(base?: boolean): number; getOncoprintWidth(base?: boolean): number; showGaps(): boolean; gapMode(): GAP_MODE_ENUM; getOncoprintWidthNoColumnPaddingNoGaps(): number; getColumnLabels(): ColumnProp; setColumnLabels(labels: ColumnProp): void; moveTrack(track_id: TrackId, new_previous_track: TrackId): void; getTrackLabel(track_id: TrackId): string; getTrackSublabel(track_id: TrackId): string; getShowTrackSublabels(): boolean; setShowTrackSublabels(show: boolean): boolean; getTrackLabelColor(track_id: TrackId): string; getTrackLabelCircleColor(track_id: TrackId): string; getTrackLabelFontWeight(track_id: TrackId): string; getTrackLabelLeftPadding(track_id: TrackId): number; getOptionalHtmlTrackLabel(track_id: TrackId): string; getTrackLinkUrl(track_id: TrackId): string; getTrackDescription(track_id: TrackId): string; getTrackTooltipFn(track_id: TrackId): TrackTooltipFn; setTrackTooltipFn(track_id: TrackId, tooltipFn: TrackTooltipFn): void; getTrackDataIdKey(track_id: TrackId): string; getTrackGroupPadding(base?: boolean): number; isTrackRemovable(track_id: TrackId): boolean; getTrackRemoveOptionCallback(track_id: TrackId): (track_id: number) => void; isTrackSortDirectionChangeable(track_id: TrackId): boolean; isTrackExpandable(track_id: TrackId): boolean; expandTrack(track_id: TrackId): void; disableTrackExpansion(track_id: TrackId): void; enableTrackExpansion(track_id: TrackId): void; isTrackExpanded(track_id: TrackId): boolean; getExpandButtonText(track_id: TrackId): string; /** * Checks if one track is the expansion of another * * @param {number} expansion_track_id - the ID of the track to check * @param {number} set_track_id - the ID of the track it may be an expansion of */ isExpansionOf(expansion_track_id: TrackId, set_track_id: TrackId): boolean; /** * Finds the bottom-most track in a track's expansion group * * @param track_id - the ID of the track to start from * @returns the ID of its last expansion, or the unchanged param if none */ getLastExpansion(track_id: TrackId): number; getTrackCustomOptions(track_id: TrackId): CustomTrackOption[]; setTrackCustomOptions(track_id: TrackId, options: CustomTrackOption[] | undefined): void; getGapOffsets(): any; setTrackInfoTooltip(track_id: TrackId, $tooltip_elt: JQuery | undefined): void; $getTrackInfoTooltip(track_id: TrackId): JQuery; getRuleSet(track_id: TrackId): RuleSet; shareRuleSet(source_track_id: TrackId, target_track_id: TrackId): void; setRuleSet(track_id: TrackId, rule_set: RuleSet): void; getTrackSortComparator(track_id: TrackId): TrackSortSpecification; setTrackSortComparator(track_id: TrackId, sortCmpFn: TrackSortSpecification): void; getTrackData(track_id: TrackId): any[]; clusterTrackGroup(track_group_index: TrackGroupIndex, clusterValueFn: (d: Datum) => number): Promise; /** * Sets the data for an Oncoprint track. * * @param track_id - the ID that identifies the track * @param {Object[]} data - the list of data for the cells * @param {string} data_id_key - name of the property of the * data objects to use as the (column) key */ setTrackData(track_id: TrackId, data: Datum[], data_id_key: string & keyof Datum): void; setTrackGroupLegendOrder(group_order: TrackGroupIndex[]): void; getTrackGroupLegendOrder(): number[]; setTrackGroupSortPriority(priority: TrackGroupIndex[]): void; private sortAlphabetical; private sortByTracks; sort(): Promise; setSortConfig(params: SortConfig): void; getTrackMovable(track_id: TrackId): boolean; setTrackMovable(track_id: TrackId, movable: boolean): void; isTrackInClusteredGroup(track_id: TrackId): boolean; }