Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 41 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ const MIME_TYPE = 'application/x.dagitty.dag';
*/
const CLASS_NAME = 'mimerenderer-dagitty-dag';


const SVG_MIME = 'image/svg+xml';


/**
* A widget for rendering Dagitty DAG.
*/
Expand All @@ -41,6 +45,7 @@ export class OutputWidget extends Widget implements IRenderMime.IRenderer {
private _offsetWidth: number;
private _offsetHeight: number;
private _inDrag: boolean;
private _lastModel: IRenderMime.IMimeModel | undefined;

/**
* Construct a new output widget.
Expand All @@ -61,6 +66,10 @@ export class OutputWidget extends Widget implements IRenderMime.IRenderer {
* Render Dagitty DAG into this widget's node.
*/
renderModel(model: IRenderMime.IMimeModel): Promise<void> {
if (this._lastModel) {
return;
}
this._lastModel = model;
const data = model.data[this._mimeType] as string;
const metadata = model.metadata as any;
for (const argument of ['width', 'height']) {
Expand All @@ -87,9 +96,39 @@ export class OutputWidget extends Widget implements IRenderMime.IRenderer {
this.setDragListeners();
}

this._createSvgFallback();

return Promise.resolve();
}

private _createSvgFallback() {
const model = this._lastModel;
if (!model) {
return;
}

const svg = this.node.querySelector('svg');
//svg.setAttribute('width', model.metadata['width'] ? model.metadata['width'] + '' : '700px');
//svg.setAttribute('height', model.metadata['height'] ? model.metadata['height'] + '' : '400px');
/*
document.body.appendChild(svg);
this.dagController.getView().drawGraph();
this.dagController.getView().resize();
this.node.appendChild(svg);
*/

if (model.data[SVG_MIME] === svg.outerHTML) {
return
}

if (svg) {
model.setData({
data: { ...model.data, [SVG_MIME]: svg.outerHTML },
metadata: model.metadata
})
}
}

private _maybeUpdatePositions() {
if (this._arePositionsOutdated) {
this._updatePositions();
Expand Down Expand Up @@ -129,6 +168,7 @@ export class OutputWidget extends Widget implements IRenderMime.IRenderer {

onUpdateRequest(message: Message): void {
this._arePositionsOutdated = true;
this._createSvgFallback()
}

/**
Expand Down Expand Up @@ -344,7 +384,7 @@ export const rendererFactory: IRenderMime.IRendererFactory = {
const extension: IRenderMime.IExtension = {
id: 'jupyterlab-dagitty:plugin',
rendererFactory,
rank: 100,
rank: 50,
dataType: 'string',
fileTypes: [
{
Expand Down