diff --git a/sandbox.tsx b/sandbox.tsx index eec8a9c8c..2d6333fcf 100644 --- a/sandbox.tsx +++ b/sandbox.tsx @@ -9,7 +9,15 @@ let data:any, node:any, view:any, component:any; let otherViews: any, m1Objects:any, firstPackage:any, DefaultNode: any, otherPackages:any, refEdges:any, extendEdges:any, React:any, Edge:any; /* +lvalue + + +with manuual view assignment (edges) if you type wrong view it becomes a mess crash + +when deleting viewpoint, it is not removed from project.viewpoints. +make multiselect o isAplialeto && referece default view !!!!!!!!! for offset fai che offset settadelle variabili --offset-x, --offset-y che settano in css left e top del grafo. MA: disabilita la regola se il grafo ha ui-dragging o simile qualsiasi cosa metta jqui @@ -41,9 +49,9 @@ node crazy pos: when i resize a node with an edge it goes off screen? only when changing relative % -> absolute it goes crazy, i think it uses absolute pos as a % -
-
node.anchor[1].x = e.x;}>
-
node.anchor[2].x = e.x;}>
+
+
node.anchor[1].x = e.x;}>
+
node.anchor[2].x = e.x;}>
anchor roadmap @@ -53,7 +61,6 @@ node crazy pos: when i resize a node with an edge it goes off screen? // todo: check oldprops.views-nextprops.views and always set shouldupdate to views newly introduced or remo**ved - // need to merge file declarations? or use a filename such as the imports will work (use inmemory://? or real urls) // advanced mode and simple mode: hide some features like positional editor in simple mode or the entire tab in view/node, start in simple mode. // make .overlap.left .top .dow .right, .y-cemter, x-cemter, .cemter css selectors @@ -249,7 +256,6 @@ for (keys in []) gives "joinOriginal" and "separator"!!! i did not override the // because currently in package, it is child[0].child[0], but in model it's just child[0] - // optimize actions, verify toolbox create must make only 1 compositeaction for dmodelelement and 1 for dgraphelement. thenverify transaction nested nad beign end nested // view selection in jsx by name instead of pointer (or both) /* diff --git a/src/common/DV.tsx b/src/common/DV.tsx index a9ad8ec98..455e1e008 100644 --- a/src/common/DV.tsx +++ b/src/common/DV.tsx @@ -375,7 +375,6 @@ export class DefaultView { {!data && "Model data missing."} {/* metamodel */} - {data.isMetamodel && [
{[ @@ -388,14 +387,12 @@ export class DefaultView { level >= 1 && firstPackage && firstPackage.children.filter(c => c).map(classifier => )] } - {/* metamodel */} - + {/* model */} {level >= 1 && m1Objects.filter(o => o).map(m1object => )} {decorators} - {/* language designer defined controls */} - +{/* language designer defined controls */} @@ -448,14 +445,13 @@ export class DefaultView { /* CLASS */ -public static class(): string { return (`{/*node.events.e1(Math.random().toFixed(3))*/}}> - -{/* ver 2.1 */} +// {/*node.events.e1(Math.random().toFixed(3))*/}}> +public static class(): string { return (`{/*node.events.e1(Math.random().toFixed(3))*/}}>
- {data.isSingleton && } - {level > 1 && {interface ? 'Interface' : abstract ? 'Abstract Class' : 'Class'}:} - {level === 1 && !data.isSingleton && } + {data.isSingleton &&  } + {level > 1 && {interface ? 'Interface' : abstract ? 'Abstract Class' : 'Class'}: } + {level === 1 && }
{level > 2 && data.children.length > 0 &&
} @@ -534,7 +530,7 @@ public static enum(): string { return ( );} /* PARAMETER */ - + public static parameter(): string { return ( ` diff --git a/src/common/Defaults.ts b/src/common/Defaults.ts index 50eada15a..a10279b2f 100644 --- a/src/common/Defaults.ts +++ b/src/common/Defaults.ts @@ -24,12 +24,14 @@ export class Defaults { /// TODO: this really needs to become dynamically genera 'Pointer_ViewEdgePoint', // 'Pointer_ViewAnchors', ]; + static viewpoints: Pointer[] = ['Pointer_ViewPointDefault', 'Pointer_ViewPointValidation']; + // @ts-ignore static defaultViewsMap: Dictionary = Defaults.views.reduce((acc, val) => { acc[val] = true; return acc; }, {}); // U.objectFromArrayValues(Defaults.views); - - static viewpoints: Pointer[] = ['Pointer_ViewPointDefault', 'Pointer_ViewPointValidation']; + // @ts-ignore + static defaultViewPointsMap: Dictionary = Defaults.viewpoints.reduce((acc, val) => { acc[val] = true; return acc; }, {}); static check(id: string): boolean { - return !!Defaults.defaultViewsMap[id]; // id.indexOf('Pointer_View') !== -1 + return !!Defaults.defaultViewsMap[id] || !!Defaults.defaultViewPointsMap[id]; // id.indexOf('Pointer_View') !== -1 } } diff --git a/src/common/UX.tsx b/src/common/UX.tsx index bc050456d..4fe3392fa 100644 --- a/src/common/UX.tsx +++ b/src/common/UX.tsx @@ -2,7 +2,7 @@ import ReactJson from 'react-json-view' // npm i react-json-view import React, {ReactElement, ReactNode} from "react"; import withReactContent from "sweetalert2-react-content"; import Swal from "sweetalert2"; -import type { GraphElementOwnProps, GObject, Dictionary, DocString, Pointer, LGraph } from "../joiner"; +import {GraphElementOwnProps, GObject, Dictionary, DocString, Pointer, LGraph, MultiSelectOptGroup} from "../joiner"; import type { InputOwnProps, SelectOwnProps } from '../components/forEndUser/Input'; import type { } from '../components/forEndUser/Select'; import { @@ -349,6 +349,34 @@ export class UX{ catch (ee: any) { e = ee; jsxCompiled = GraphElementComponent.displayError(e, "JSX Syntax", v, undefined, undefined, true) as any; } return jsxCompiled; } + static stopEvt(e: GObject): void{ + if (!e) return; + e.persist?.(); + (e as any).stopImmediatePropagation?.(); + e.stopPropagation?.(); + let ne: any = e.nativeEvent; + e._jjIsStopped = true; + if (!ne) return; + ne.stopImmediatePropagation?.(); + ne.stopPropagation?.(); + if (!ne.isPropagationStopped) ne.isPropagationStopped = ()=>true; + ne._jjIsStopped = true; + } + static isStoppedEvt(e: GObject): boolean{ + if (!e) return true; + if (e._jjIsStopped || e.isPropagationStopped?.()) return true; + let ne: any = e.nativeEvent; + if (!ne) return false; + return !!(ne._jjIsStopped || ne.isPropagationStopped?.()); + } + + static options(validTargets: MultiSelectOptGroup[]): JSX.Element[] { + return validTargets + .filter(e=>!!e) + .map(e => + { e.options.filter(o=>!!o).map(o=>) } + ); + } } diff --git a/src/components/abstract/tabs/MetamodelTab.tsx b/src/components/abstract/tabs/MetamodelTab.tsx index 72795efaf..29bf898c4 100644 --- a/src/components/abstract/tabs/MetamodelTab.tsx +++ b/src/components/abstract/tabs/MetamodelTab.tsx @@ -1,6 +1,6 @@ import React, {Dispatch, ReactElement} from "react"; import {connect} from "react-redux"; -import type {DModel, Pointer} from "../../../joiner"; +import {DModel, Pointer, Try} from "../../../joiner"; import { DState, CreateElementAction, @@ -45,9 +45,11 @@ function MetamodelTabComponent(props: AllProps) {
-
- {graph && ||
Error: missing DGraph prop
} -
+ +
+ {graph && ||
Error: missing DGraph prop
} +
+
); diff --git a/src/components/abstract/tabs/ModelTab.tsx b/src/components/abstract/tabs/ModelTab.tsx index 516dd4d6f..00e53d32d 100644 --- a/src/components/abstract/tabs/ModelTab.tsx +++ b/src/components/abstract/tabs/ModelTab.tsx @@ -1,6 +1,6 @@ import React, {Dispatch, ReactElement} from "react"; import {connect} from "react-redux"; -import type {DModel, Pointer} from "../../../joiner"; +import {DModel, Pointer, Try} from "../../../joiner"; import {CreateElementAction, DGraph, DModelElement, DState, LGraph, LModel, LModelElement} from "../../../joiner"; import {DefaultNode} from "../../../joiner/components"; import ToolBar from "../../toolbar/ToolBar"; @@ -24,9 +24,11 @@ function ModelTabComponent(props: AllProps) {
-
- {graph && } -
+ +
+ {graph && } +
+
); } diff --git a/src/components/editors/Info.tsx b/src/components/editors/Info.tsx index b6cb621dc..65a4c1695 100644 --- a/src/components/editors/Info.tsx +++ b/src/components/editors/Info.tsx @@ -91,7 +91,7 @@ class builder { { console.log('setting extend', v); lclass.extends = v.map(e => e.value) as Any; - }}> + }} />