DiagramLink.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /**
  2. * Licensed Materials - Property of IBM IBM Cognos Products: Modeling UI (C) Copyright IBM Corp. 2016, 2019
  3. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP
  4. * Schedule Contract with IBM Corp.
  5. */
  6. define([
  7. 'underscore',
  8. 'bi/commons/ui/core/Class',
  9. 'bi/moser/moser.min',
  10. '../InternalBridge'
  11. ], function(_, Class, moserjs, InternalBridge) {
  12. var DiagramLink = Class.extend({
  13. identifier: null,
  14. source: null,
  15. target: null,
  16. sourceCardinality: null,
  17. targetCardinality: null,
  18. init: function(options) {
  19. DiagramLink.inherited('init', this);
  20. _.extend(this, options);
  21. this.linksRepresented = [];
  22. this.source = options.source;
  23. this.target = options.target;
  24. this.identifier = options.id;
  25. this.instanceType = options.instanceType;
  26. this.isValid = InternalBridge.validationUtils.isValid(InternalBridge.modelUtils.getRelationshipById(this.identifier, this.moserModule));
  27. },
  28. addARepresentedLink: function(data) {
  29. var mapping = InternalBridge.joinUtils.relationshipMappingMinMaxEx(data.linkObj);
  30. var linkCardinality = InternalBridge.joinUtils.getCardinalityMarkers(mapping);
  31. var linkObj = {
  32. identifier: data.linkObj.identifier,
  33. left: data.left,
  34. isLeftMincardZero: mapping.leftMincard === moserjs.default.CardinalityEnum.ZERO,
  35. link: data.link,
  36. right: data.right,
  37. isRightMincardZero: mapping.rightMincard === moserjs.default.CardinalityEnum.ZERO,
  38. sourceCardinality: linkCardinality[0],
  39. targetCardinality: linkCardinality[1],
  40. instanceType: data.linkObj.instanceType
  41. };
  42. this.linksRepresented.push(linkObj);
  43. if (this.linksRepresented.length < 2) {
  44. this.sourceCardinality = linkCardinality[0];
  45. this.targetCardinality = linkCardinality[1];
  46. this.isLeftMincardZero = linkObj.isLeftMincardZero;
  47. this.isRightMincardZero = linkObj.isRightMincardZero;
  48. this.hideCardinality = false;
  49. } else {
  50. this.hideCardinality = true;
  51. }
  52. },
  53. /**
  54. * Set the instanceType on the link.
  55. *
  56. * @param {String}
  57. * instanceType The instance type
  58. */
  59. setInstanceType: function(instanceType) {
  60. this.instanceType = instanceType;
  61. }
  62. });
  63. return DiagramLink;
  64. });