From 839f68d7fa8429d11a1b15cd8bb46941c03b6bd2 Mon Sep 17 00:00:00 2001 From: TeterinaSvetlana <40786685+TeterinaSvetlana@users.noreply.github.com> Date: Wed, 26 Feb 2020 14:08:26 +0500 Subject: [PATCH] Change actors size with proportions (#635) --- addon/components/fd-uml-diagram.js | 33 ++++++++++++++-- .../fd-actions-for-ucd-primitives.js | 2 +- addon/objects/uml-primitives/fd-uml-note.js | 11 +++++- .../uml-primitives/fd-uml-primitive.js | 3 ++ .../objects/uml-primitives/fd-uml-use-case.js | 17 +++++++++ .../uml-primitives/fd-uml-usecase-actor.js | 38 ++++++++++++++++++- 6 files changed, 98 insertions(+), 6 deletions(-) diff --git a/addon/components/fd-uml-diagram.js b/addon/components/fd-uml-diagram.js index 7254a6091..c9ae4c483 100644 --- a/addon/components/fd-uml-diagram.js +++ b/addon/components/fd-uml-diagram.js @@ -649,9 +649,35 @@ export default Component.extend( let shiftedPositionY = y + shift.y; if (data.widthResize || data.heightResize) { const oldSize = data.ghost.size(); - const position = data.ghost.position(); - let coordinates = forPointerMethodOverrideResizeAndDnd(evt, x, y); - data.ghost.resize(data.widthResize ? Math.max(coordinates.x - position.x, view.model.attributes.inputWidth || 0, view.model.attributes.minWidth || 0) : oldSize.width, data.heightResize ? Math.max(coordinates.y - position.y, view.model.attributes.inputHeight || 0, view.model.attributes.minHeight || 0) : oldSize.height); + let newSize = { + width: oldSize.width, + height: oldSize.height + }; + if (data.prop) { + if (data.widthResize && data.heightResize) { + newSize.width = x - view.model.getBBox().x; + } else { + if (data.widthResize) { + newSize.width = x - view.model.getBBox().x + } + if (data.heightResize) { + newSize.height = y - view.model.getBBox().y + } + } + if (newSize.height < view.model.attributes.minHeight) { + newSize.height = view.model.attributes.minHeight + } + if (newSize.width < view.model.attributes.minWidth) { + newSize.width = view.model.attributes.minWidth + } + let propHeight = newSize.height + ((newSize.width - oldSize.width) / oldSize.width) * newSize.height; + let propWidth = newSize.width + ((newSize.height - oldSize.height) / oldSize.height) * newSize.width; + data.ghost.resize(propWidth, propHeight); + } else { + const position = data.ghost.position(); + let coordinates = forPointerMethodOverrideResizeAndDnd(evt, x, y); + data.ghost.resize(data.widthResize ? Math.max(coordinates.x - position.x, view.model.attributes.inputWidth || 0, view.model.attributes.minWidth || 0) : oldSize.width, data.heightResize ? Math.max(coordinates.y - position.y, view.model.attributes.inputHeight || 0, view.model.attributes.minHeight || 0) : oldSize.height); + } } else { //get border for embed element move restriction. [minX, maxX, minY, maxY] @@ -686,6 +712,7 @@ export default Component.extend( const button = $(evt.target.parentElement); evt.data.widthResize = button.hasClass('right-down-size-button') || button.hasClass('right-size-button'); evt.data.heightResize = button.hasClass('right-down-size-button') || button.hasClass('down-size-button'); + evt.data.prop = button.hasClass('prop'); evt.data.shift = { x: bbox.x - x, y: bbox.y - y}; } }, diff --git a/addon/mixins/actions-for-primitives/fd-actions-for-ucd-primitives.js b/addon/mixins/actions-for-primitives/fd-actions-for-ucd-primitives.js index a37a7760e..8deb23924 100644 --- a/addon/mixins/actions-for-primitives/fd-actions-for-ucd-primitives.js +++ b/addon/mixins/actions-for-primitives/fd-actions-for-ucd-primitives.js @@ -47,7 +47,7 @@ export default Mixin.create({ let jsonObject = getJsonForElement( 'STORMCASE.UML.ucd.Actor, UMLUCD', { x, y }, - { width: 25, height: 50 }, + { width: 5, height: 60 }, { Name: '' } ); let usecaseActorObject = fdUseCaseActor.create({ primitive: jsonObject }); diff --git a/addon/objects/uml-primitives/fd-uml-note.js b/addon/objects/uml-primitives/fd-uml-note.js index c1fba61b8..2ba9936af 100644 --- a/addon/objects/uml-primitives/fd-uml-note.js +++ b/addon/objects/uml-primitives/fd-uml-note.js @@ -95,8 +95,17 @@ joint.util.setByPath(joint.shapes, 'flexberry.uml.Note', Note, '.'); joint.shapes.flexberry.uml.NoteView = joint.shapes.flexberry.uml.BaseObjectView.extend({ template: [ '