From 0bdf65b6616599dd608f94739bd8c681fff4f5e9 Mon Sep 17 00:00:00 2001 From: Alexey Morozov Date: Wed, 11 Jan 2017 19:38:18 +0300 Subject: [PATCH 1/4] Update CHANGELOG.md --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e97f58e8..dbbc87ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Latest] ## [0.3.6] - 2017-01-11 - ### Fixed -- When loading diagram, attachment of links to nodes was broken +- Broken attachment of links to nodes when loading a diagram. ## [0.3.5] - 2016-12-29 ### Added @@ -121,7 +120,8 @@ info loaded from `DataProvider`. ### Added - Ontodia published on GitHub as OSS project. -[Latest]: https://github.com/ontodia-org/ontodia/compare/v0.3.5...HEAD +[Latest]: https://github.com/ontodia-org/ontodia/compare/v0.3.6...HEAD +[0.3.6]: https://github.com/ontodia-org/ontodia/compare/v0.3.5...v0.3.6 [0.3.5]: https://github.com/ontodia-org/ontodia/compare/v0.3.3...v0.3.5 [0.3.3]: https://github.com/ontodia-org/ontodia/compare/v0.3.2...v0.3.3 [0.3.2]: https://github.com/ontodia-org/ontodia/compare/v0.3.1...v0.3.2 From 620e4a6a33c2681d3f5da8907426831dc01d010d Mon Sep 17 00:00:00 2001 From: Yury Emelyanov Date: Thu, 12 Jan 2017 16:44:17 +0300 Subject: [PATCH 2/4] Added new parameter to PaperArea - zoom upper limit when zooming to fit small diagram --- src/ontodia/diagram/paperArea.tsx | 4 +++- src/ontodia/workspace/workspaceMarkup.tsx | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ontodia/diagram/paperArea.tsx b/src/ontodia/diagram/paperArea.tsx index 6e62dfa0..0bb7b0c9 100644 --- a/src/ontodia/diagram/paperArea.tsx +++ b/src/ontodia/diagram/paperArea.tsx @@ -15,6 +15,8 @@ export interface Props { zoomOptions?: { min?: number; max?: number; + //maxFit will be used when zooming to fit to limit zoom of small diagrams + maxFit?: number; fitPadding?: number; }; panningAlwaysActive?: boolean; @@ -319,7 +321,7 @@ export class PaperArea extends React.Component { fittingBBox, padding: (this.props.zoomOptions || {}).fitPadding, minScale: zoomOptions.min, - maxScale: zoomOptions.max, + maxScale: zoomOptions.maxFit || zoomOptions.max, }); this.paper.setOrigin(originX, originY); diff --git a/src/ontodia/workspace/workspaceMarkup.tsx b/src/ontodia/workspace/workspaceMarkup.tsx index 46222304..9c714d31 100644 --- a/src/ontodia/workspace/workspaceMarkup.tsx +++ b/src/ontodia/workspace/workspaceMarkup.tsx @@ -89,7 +89,7 @@ export class WorkspaceMarkup extends React.Component { this.paperArea = el} model={this.props.view.model} paper={this.props.view.paper} - zoomOptions={{min: 0.2, max: 2, fitPadding: 20}} + zoomOptions={{min: 0.2, max: 2, maxFit: 1, fitPadding: 20}} preventTextSelection={() => this.preventTextSelection()} onDragDrop={(e, position) => this.props.view.onDragDrop(e, position)} /> From 7b61e450ae574fb15ae514d7be1c275e6703983b Mon Sep 17 00:00:00 2001 From: drazdyakonov Date: Thu, 12 Jan 2017 17:49:32 +0300 Subject: [PATCH 3/4] Select All functionality have been added. Organization-icon style was changed. --- src/ontodia/viewUtils/connectionsMenu.tsx | 58 +++++++++++++++++++++-- styles/diagram/_connectionsMenu.scss | 20 ++++++++ styles/templates/_icons.scss | 1 - 3 files changed, 73 insertions(+), 6 deletions(-) diff --git a/src/ontodia/viewUtils/connectionsMenu.tsx b/src/ontodia/viewUtils/connectionsMenu.tsx index 3bc28190..ba0eab61 100644 --- a/src/ontodia/viewUtils/connectionsMenu.tsx +++ b/src/ontodia/viewUtils/connectionsMenu.tsx @@ -519,11 +519,14 @@ export interface ObjectsPanelProps { onPressAddSelected?: (selectedObjects: ReactElementModel[]) => void; } -export class ObjectsPanel extends React.Component { +export class ObjectsPanel extends React.Component { constructor(props: ObjectsPanelProps) { super(props); - this.state = { checkMap: {} }; + this.state = { checkMap: {}, selectAll: 'checked' }; this.updateCheckMap(); } @@ -536,10 +539,48 @@ export class ObjectsPanel extends React.Component { + if (this.state.checkMap[object.model.id] === value) { + return; + } this.state.checkMap[object.model.id] = value; + + const filtered = this.getFilteredObjects().map(o => o.model.id); + const keys = Object.keys(this.state.checkMap).filter(key => filtered.indexOf(key) !== -1); + + const unchekedListElementLength = keys.filter(key => !this.state.checkMap[key]).length; + if (!value && unchekedListElementLength === keys.length) { + this.state.selectAll = 'unchecked'; + } else if (unchekedListElementLength === 0) { + this.state.selectAll = 'checked'; + } else { + this.state.selectAll = 'undefined'; + } + this.setState(this.state); + }; + + private onSelectAll = () => { + let checked = !this.selectAllValue(); + if (checked) { + this.state.selectAll = 'checked'; + } else { + this.state.selectAll = 'unchecked'; + } + const filtered = this.getFilteredObjects().map(o => o.model.id); + const keys = Object.keys(this.state.checkMap).filter(key => filtered.indexOf(key) !== -1); + keys.forEach(key => { + this.state.checkMap[key] = checked; + }); this.setState(this.state); }; + private selectAllValue = () => { + if (this.state.selectAll === 'undefined' || this.state.selectAll === 'unchecked') { + return false; + } else { + return true; + } + }; + private getFilteredObjects = (): ReactElementModel[] => { return this.props.data.objects .filter(element => { @@ -564,7 +605,7 @@ export class ObjectsPanel extends React.Component; }); @@ -583,6 +624,12 @@ export class ObjectsPanel extends React.Component this.state.checkMap[el.model.id] && !el.presentOnDiagram).length; const countString = activeObjCount.toString() + '\u00A0of\u00A0' + this.props.data.objects.length; return
+
+ {/*nothing*/}} + disabled={this.props.data.objects.length === 0}/> + Select All +
{( this.props.loading ? @@ -631,7 +678,7 @@ export class ElementInPopupMenu extends React.Component - {/*nothing*/}} checked={this.state.checked} + {/*nothing*/}} className='element-in-popup-menu__checkbox' disabled={this.props.element.presentOnDiagram}/>
Date: Thu, 12 Jan 2017 18:08:25 +0300 Subject: [PATCH 4/4] Updated CHANGELOG.md to 0.3.7 --- CHANGELOG.md | 6 ++++++ package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dbbc87ab..534ffcfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Latest] +## [0.3.7] - 2017-01-12 +### Added +- Select/deselect all elements checkbox in navigation pop-up +### Fixed +- Zoom to fit zoomed to close on small diagrams, making elements unnessesary big + ## [0.3.6] - 2017-01-11 ### Fixed - Broken attachment of links to nodes when loading a diagram. diff --git a/package.json b/package.json index 16202bf8..1c4458c2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ontodia", - "version": "0.3.6", + "version": "0.3.7", "description": "Ontodia Library", "repository": { "type": "git",