Home Reference Source Test

packages/causality-log/src/Vivid/vivid.mixins.web.js

import { resolve } from "path";

const VividWebMixins = (BaseVividClass)=> class extends BaseVividClass{
    connect(target){
        console.log(target);
        if(typeof target === 'string' && target.startsWith('#')){
            this.d3n = this.d3.select(target);
            let { width } = this.d3n.node().getBoundingClientRect();
            this.DefaultWidth = width - 40;
            this.DefaultWidth = width*0.8;
        }
        else{
            throw Error(`cannot connect to ${target}`);
        }
    }

    makeSVGnode({width, height}){
        return this.d3n.append('svg').attr('width', width).attr('height', height);
    }

    makeCanvasNode({width, height}){
        return this.d3n.append('canvas').attr('width', width).attr('height', height);
    }

    json2css(objectStyle){
        let cssString = Object.entries(objectStyle).reduce((acc1, cur1) => {
                return `${acc1}\n\n${cur1[0]} ` + 
                    Object.keys(cur1[1])
                        .reduce((acc2, cur2) => 
                            `${acc2}\n\t${cur2}: ${cur1[1][cur2]};`, '{') + '\n}';
            }, '');
        
        var style = document.createElement('style');
        style.type = 'text/css';
        style.innerHTML = cssString;
        document.getElementsByTagName('head')[0].appendChild(style);
        return cssString;
    }

    async show(option={plotId:'new plot'}){
        let {plotId} = option;
        //TODO: remove if not need
        return new Promise((resolve, reject)=>{
            resolve(plotId);
        });
    }
};
export default VividWebMixins;