123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- 'use strict';
- /**
- * Licensed Materials - Property of IBM
- * IBM Cognos Products: BI Cloud (C) Copyright IBM Corp. 2014, 2018
- * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- *
- * Guideline Manager
- */
- define(['jquery', 'underscore', '../../../../lib/@waca/core-client/js/core-client/ui/core/Class', './LayoutGuidelines', './GridGuidelines'], function ($, _, Class, LayoutGuidelines, GridGuidelines) {
- var Manager = Class.extend({
- LayoutGuidelines: {},
- init: function init(options) {
- this.layoutController = options.layoutController;
- this.layoutGuidelines = new LayoutGuidelines();
- },
- getReady: function getReady(page, dragObject, keyboard) {
- this.domNode = page;
- this.snapContributions = [];
- var layoutModel = this.layoutController.boardModel.layout.findModel(page.id);
- if (!layoutModel) {
- layoutModel = this.layoutController.boardModel.layout;
- }
- var snapObject = layoutModel.getValueFromSelfOrParent('snapObjects');
- snapObject = snapObject === undefined ? true : snapObject;
- this.gridGuidelines = new GridGuidelines({ 'page': page, 'controller': this.layoutController });
- if (!keyboard) {
- this.layoutGuidelines.setup(page, dragObject, snapObject);
- this.snapContributions.push(this.layoutGuidelines);
- }
- this.snapContributions.push(this.gridGuidelines);
- },
- finish: function finish() {
- $(this.domNode).children('.guideline').remove();
- this.domNode = null;
- },
- getSnapCoordinates: function getSnapCoordinates(dragBox) {
- var revisedDragBox = { 'top': null, 'right': null, 'bottom': null, 'left': null };
- var snapDistanceRight = [];
- var snapDistanceLeft = [];
- var snapDistanceTop = [];
- var snapDistanceBottom = [];
- if (this.snapContributions) {
- this.snapContributions.forEach(function (contribution) {
- snapDistanceRight.push(contribution.calculateSnapPoint(dragBox.right, 'x'));
- snapDistanceLeft.push(contribution.calculateSnapPoint(dragBox.left, 'x'));
- snapDistanceTop.push(contribution.calculateSnapPoint(dragBox.top, 'y'));
- snapDistanceBottom.push(contribution.calculateSnapPoint(dragBox.bottom, 'y'));
- }.bind(this));
- }
- revisedDragBox.right = this._calculateClosestSnapPoint(snapDistanceRight, 'x');
- revisedDragBox.left = this._calculateClosestSnapPoint(snapDistanceLeft, 'x');
- revisedDragBox.top = this._calculateClosestSnapPoint(snapDistanceTop, 'y');
- revisedDragBox.bottom = this._calculateClosestSnapPoint(snapDistanceBottom, 'y');
- return revisedDragBox;
- },
- _calculateClosestSnapPoint: function _calculateClosestSnapPoint(snapDistance) {
- var closestPoint = null;
- snapDistance.forEach(function (distance) {
- if (distance.distance && closestPoint) {
- if (closestPoint.distance > Math.abs(distance.distance)) {
- closestPoint = distance;
- }
- } else if (distance.distance && !closestPoint) {
- closestPoint = distance;
- }
- }.bind(this));
- if (closestPoint && closestPoint.distance) {
- if (closestPoint.show) {
- closestPoint.show();
- }
- return closestPoint.distance;
- } else {
- return closestPoint;
- }
- },
- hideAll: function hideAll() {
- $(this.domNode).children('.guideline').hide();
- }
- });
- return Manager;
- });
- //# sourceMappingURL=GuidelineManager.js.map
|