import { getUrlVars } from './utils' import { DataSet } from './datamanager' import { DynamicGraph, DataManager, DataManagerOptions } from './dynamicgraph' /** A collection of Networkcube's global function availeble * through networkcube.myFunc() * */ // must agree with var of same name in DynamicGraph.initDynamicGraph() export var TIME_FORMAT: string = 'YYYY-MM-DD hh:mm:ss'; /** * Returns the networkcube standart time format * @return {[type]} [description] */ export function timeFormat() { return TIME_FORMAT; } // GLOBAL VARIABLES var dataManager: DataManager = new DataManager(); var session: string; export function getSessionId() { return session; } export function setDataManagerOptions(options: DataManagerOptions): void { dataManager.setOptions(options); } export function isSessionCached(session: string, dataSetName: string) { return dataManager.isSessionCached(session, dataSetName); } // DATA /** * Imports a data set into network cube. * @param {string} session [description] * @param {DataSet} data [description] * @return {[type]} [description] */ export function importData(sessionName: string, data: DataSet) { console.log('[n3] Import data', data.name); session = sessionName; dataManager.importData(sessionName, data); } export function clearAllDataManagerSessionCaches() { dataManager.clearAllSessionData(); } export function getDynamicGraph(dataName?: string, sessionName?: string): DynamicGraph { var vars = getUrlVars(); if (!dataName) dataName = (vars as any)['datasetName']; if (!sessionName) session = (vars as any)['session']; else session = sessionName; return dataManager.getGraph(session, (dataName as string)); } // VIEWS + VISUALIZATIONS // opens a new window and loads a visualization of type vistype, // // with the data set dataname export function openVisualizationWindow(session: string, visUri: string, dataName: string) { openView(session, visUri, dataName, false); } // opens a new tab and loads a visualization of type vistype, // // with the data set dataname export function openVisualizationTab(session: string, visUri: string, dataName: string) { openView(session, visUri, dataName, true); } // create a tab that shows one of the specified visualizations at a time export function createTabVisualizations(parentId: string, visSpec: any[], session: string, dataName: string, width: number, height: number, visParams?: any) { var parent = $('#' + parentId); var tabDiv = $('
') parent.append(tabDiv) var visDiv = $('
') parent.append(visDiv) var ul = $('') tabDiv.append(ul) // create tabs and divs for (var i = 0; i < visSpec.length; i++) { visSpec[i].name = visSpec[i].name.replace(' ', '-') ul.append($('
  • ' + visSpec[i].name + '
  • ')) visDiv.append($('
    ')) createVisualizationIFrame('networkcube-visTab-' + visSpec[i].name, visSpec[i].url, session, dataName, width, height, visParams) } } export function switchVisTab(evt: any, visName: string) { // Declare all variables var i, tabcontent, tablinks; // Get all elements with class="tabcontent" and hide them tabcontent = document.getElementsByClassName("networkcube-visTabContent") as HTMLCollectionOf; for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = "none"; } // Get all elements with class="tablinks" and remove the class "active" tablinks = document.getElementsByClassName("networkcube-tablinks"); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(" active", ""); } // Show the current tab, and add an "active" class to the link that opened the tab // ADD IF GETELEMENT IS NULL var element = document.getElementById('networkcube-visTab-' + visName); if(element) { element.style.display = "block"; } evt.currentTarget.className += " active"; } // returns an iframe that loads a visualization of type vistype, // with the data set dataname export function createVisualizationIFrame(parentId: string, visUri: string, session: string, dataName: string, width: number, height: number, visParams?: any) { $('#' + parentId) .append('') .attr('width', width) .attr('height', height) var iframe = $('#' + parentId + '> iframe') var visParamString = ''; for (var prop in visParams) { visParamString += '&' + prop + '=' + visParams[prop]; } iframe.attr('src', visUri + '?' + 'session=' + session + '&datasetName=' + dataName + visParamString ); if (width) iframe.attr('width', width); if (height) iframe.attr('height', height) if (visParams != undefined && visParams.hasOwnProperty('scrolling')) { iframe.attr('scrolling', visParams.scrolling); } return iframe; } // // // Internal convenient function to open a window function openView(session: string, visUri: string, dataname: string, tab: boolean) { var url = visUri + '?session=' + session + '&datasetName=' + dataname; if (tab) window.open(url, '_blank'); else window.open(url); } export function getURLString(dataName: string) { return '?session=' + session + '&datasetName=' + dataName; } /// UTILITY FUNCTIONS export enum OrderType { Local, Global, Data }; export function isTrackingEnabled(): Boolean { var value = localStorage.getItem("NETWORKCUBE_IS_TRACKING_ENABLED"); return value == 'true' ? true : false; } export function isTrackingSet(): Boolean { var value = localStorage.getItem("NETWORKCUBE_IS_TRACKING_ENABLED"); return value === null ? false : true; } export function deleteData(dataSetName: string){ // deletes a network getDynamicGraph(dataSetName).delete(dataManager); }