From 482f0cfc16b3ec459ee880c3fd21dc07f5f17e1b Mon Sep 17 00:00:00 2001 From: Arjun Verma Date: Mon, 16 Sep 2024 12:39:43 +0530 Subject: [PATCH] Remove the guidata option (#413) * Start removing `guidata` option * Remove guidata from `onSharedOptionsChanged` method [visibility toggling not working now] * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * visibility toggling working again * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Attempt to remove `guidata` fully from `mainview` & `commands` * Remove `guidata` from `build_shape` * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Remove `guidata` from `cad_document` * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Remove logging * Update Playwright Snapshots * Explicitly update the object visibility in the shared model * Fix visibility toggling in `objectTree` * Update Playwright Snapshots * Update packages/base/src/panelview/objecttree.tsx Co-authored-by: Duc Trung Le * Condense `setVisible` method * Revert changes in python * Revert changes in python --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] Co-authored-by: Duc Trung Le --- packages/base/src/3dview/helpers.ts | 29 ++---------- packages/base/src/3dview/mainview.tsx | 43 ++++++++---------- packages/base/src/commands.ts | 12 ++--- packages/base/src/panelview/objecttree.tsx | 42 ++++------------- packages/schema/src/doc.ts | 5 -- packages/schema/src/interfaces.ts | 1 - packages/schema/src/schema/jcad.json | 6 +-- .../MultiSelect-Cut-test-jcad-linux.png | Bin 19943 -> 20610 bytes 8 files changed, 38 insertions(+), 100 deletions(-) diff --git a/packages/base/src/3dview/helpers.ts b/packages/base/src/3dview/helpers.ts index f60424e7..15ecd305 100644 --- a/packages/base/src/3dview/helpers.ts +++ b/packages/base/src/3dview/helpers.ts @@ -1,4 +1,4 @@ -import { IDict, IParsedShape } from '@jupytercad/schema'; +import { IParsedShape } from '@jupytercad/schema'; import * as THREE from 'three'; import { acceleratedRaycast, @@ -113,22 +113,14 @@ export function buildShape(options: { clippingPlanes: THREE.Plane[]; selected: boolean; isSolid: boolean; - guidata?: IDict; objColor?: THREE.Color | string | number; }): { meshGroup: THREE.Group; mainMesh: THREE.Mesh; edgesMeshes: LineSegments2[]; } | null { - const { - objName, - data, - guidata, - isSolid, - clippingPlanes, - selected, - objColor - } = options; + const { objName, data, isSolid, clippingPlanes, selected, objColor } = + options; const { faceList, edgeList, jcObject } = data; const vertices: Array = []; @@ -157,19 +149,8 @@ export function buildShape(options: { vInd += vertexCoorLength / 3; } - let color = objColor || DEFAULT_MESH_COLOR; - let visible = jcObject.visible; - if (guidata && guidata[objName]) { - const objdata = guidata[objName]; - - if (Object.prototype.hasOwnProperty.call(objdata, 'color')) { - color = new THREE.Color(color); - } - - if (Object.prototype.hasOwnProperty.call(objdata, 'visibility')) { - visible = guidata[objName]['visibility']; - } - } + const color = objColor || DEFAULT_MESH_COLOR; + const visible = jcObject.visible; // Compile the connected vertices and faces into a model // And add to the scene diff --git a/packages/base/src/3dview/mainview.tsx b/packages/base/src/3dview/mainview.tsx index f2bc10c7..fde5c94d 100644 --- a/packages/base/src/3dview/mainview.tsx +++ b/packages/base/src/3dview/mainview.tsx @@ -577,7 +577,6 @@ export class MainView extends React.Component { this._scene.remove(this._clippingPlaneMesh); } - const guidata = this._model.sharedModel.getOption('guidata'); const selectedNames = this._selectedMeshes.map(sel => sel.name); this._selectedMeshes = []; @@ -603,7 +602,6 @@ export class MainView extends React.Component { clippingPlanes: this._clippingPlanes, selected, isSolid, - guidata, objColor }); @@ -665,9 +663,6 @@ export class MainView extends React.Component { } }); - if (guidata) { - this._model.sharedModel?.setOption('guidata', guidata); - } // Update the reflength this._updateRefLength(); // Set the expoded view if it's enabled @@ -1074,34 +1069,34 @@ export class MainView extends React.Component { sender: IJupyterCadDoc, change: MapChange ): void { - const guidata = sender.getOption('guidata'); + const objects = sender.objects; - if (guidata) { - for (const objName in guidata) { + if (objects) { + for (const objData of objects) { + const objName = objData.name; const obj = this._meshGroup?.getObjectByName(objName) as | BasicMesh | undefined; - const objColor = obj?.material.color; + if (!obj) { continue; } - if ( - Object.prototype.hasOwnProperty.call(guidata[objName], 'visibility') - ) { - const explodedLineHelper = - this._explodedViewLinesHelperGroup?.getObjectByName(objName); - const objGuiData = guidata[objName]; - if (objGuiData) { - obj.parent!.visible = objGuiData['visibility']; - - if (explodedLineHelper) { - explodedLineHelper.visible = objGuiData['visibility']; - } - } + + const isVisible = objData.visible; + + const objColor = obj?.material.color; + + obj.parent!.visible = isVisible; + + const explodedLineHelper = + this._explodedViewLinesHelperGroup?.getObjectByName(objName); + if (explodedLineHelper) { + explodedLineHelper.visible = isVisible; } + if (obj.material.color) { - if ('color' in guidata[objName]) { - const rgba = guidata[objName]['color'] as number[]; + if ('color' in objData) { + const rgba = objData.color as number[]; const color = new THREE.Color(rgba[0], rgba[1], rgba[2]); obj.material.color = color; } else { diff --git a/packages/base/src/commands.ts b/packages/base/src/commands.ts index 6ca3a556..63da5f8f 100644 --- a/packages/base/src/commands.ts +++ b/packages/base/src/commands.ts @@ -78,15 +78,9 @@ export function setVisible( name: string, value: boolean ) { - const guidata = sharedModel.getOption('guidata') || {}; - - if (guidata && guidata[name]) { - guidata[name]['visibility'] = false; - } else { - guidata[name] = { visibility: false }; - } - - sharedModel.setOption('guidata', guidata); + sharedModel.updateObjectByName(name, { + data: { key: 'visible', value } + }); } const PARTS = { diff --git a/packages/base/src/panelview/objecttree.tsx b/packages/base/src/panelview/objecttree.tsx index 00159e27..d8ad01a5 100644 --- a/packages/base/src/panelview/objecttree.tsx +++ b/packages/base/src/panelview/objecttree.tsx @@ -318,7 +318,7 @@ class ObjectTreeReact extends React.Component { }; render(): React.ReactNode { - const { selectedNodes, openNodes, options } = this.state; + const { selectedNodes, openNodes } = this.state; const data = this.stateToTree(); const selectedNodeIds: TreeNodeId[] = []; @@ -375,21 +375,7 @@ class ObjectTreeReact extends React.Component { if (jcadObj) { visible = jcadObj.visible; } - if ( - jcadObj && - options && - options['guidata'] && - Object.prototype.hasOwnProperty.call( - options['guidata'], - jcadObj.name - ) && - Object.prototype.hasOwnProperty.call( - options['guidata'][jcadObj.name], - 'visibility' - ) - ) { - visible = options['guidata'][jcadObj.name]['visibility']; - } + return (
{ className={'jp-ToolbarButtonComponent'} onClick={() => { const objectId = opts.node.parentId as string; - - const guidata = - this.props.cpModel.sharedModel?.getOption( - 'guidata' - ) || { [objectId]: {} }; - - if (guidata) { - if (guidata[objectId]) { - guidata[objectId]['visibility'] = !visible; - } else { - guidata[objectId] = { visibility: !visible }; + const obj = this.getObjectFromName(objectId); + if (obj) { + const sharedModel = + this.props.cpModel.jcadModel?.sharedModel; + if (sharedModel) { + sharedModel.updateObjectByName(objectId, { + data: { key: 'visible', value: !obj.visible } + }); } } - - this.props.cpModel.sharedModel?.setOption( - 'guidata', - guidata - ); }} icon={visible ? visibilityIcon : visibilityOffIcon} /> diff --git a/packages/schema/src/doc.ts b/packages/schema/src/doc.ts index d79dc701..58428bdc 100644 --- a/packages/schema/src/doc.ts +++ b/packages/schema/src/doc.ts @@ -133,11 +133,6 @@ export class JupyterCadDoc if (this._objects.length > index) { this._objects.delete(index); - const guidata = this.getOption('guidata'); - if (guidata) { - delete guidata[name]; - this.setOption('guidata', guidata); - } this.removeOutput(name); } } diff --git a/packages/schema/src/interfaces.ts b/packages/schema/src/interfaces.ts index 4e6c941f..41cd89d8 100644 --- a/packages/schema/src/interfaces.ts +++ b/packages/schema/src/interfaces.ts @@ -216,7 +216,6 @@ export interface IParsedShape { faceList: Array; edgeList: Array; meta?: IDict; - guiData?: IDict; } export interface IPostOperatorInput { diff --git a/packages/schema/src/schema/jcad.json b/packages/schema/src/schema/jcad.json index aedeeef7..7dd75c0c 100644 --- a/packages/schema/src/schema/jcad.json +++ b/packages/schema/src/schema/jcad.json @@ -128,11 +128,7 @@ "type": "object", "default": {}, "additionalProperties": false, - "properties": { - "guidata": { - "type": "object" - } - } + "properties": {} } } } diff --git a/ui-tests/tests/ui.spec.ts-snapshots/MultiSelect-Cut-test-jcad-linux.png b/ui-tests/tests/ui.spec.ts-snapshots/MultiSelect-Cut-test-jcad-linux.png index de88422248085364fbe9f396f29f4a9d19ad2b74..c99972b38ec07d6787a775857e263599fa184030 100644 GIT binary patch delta 17856 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 delta 17132 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