tg-ganttchart 0.0.16 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3521,8 +3521,8 @@ var esnext_iterator_reduce = __webpack_require__(8872);
3521
3521
  // EXTERNAL MODULE: ./node_modules/dayjs/dayjs.min.js
3522
3522
  var dayjs_min = __webpack_require__(4353);
3523
3523
  var dayjs_min_default = /*#__PURE__*/__webpack_require__.n(dayjs_min);
3524
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Header/GanttViewFilter.vue?vue&type=template&id=eb2e1196&scoped=true
3525
- var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_render = function render() {
3524
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Header/GanttViewFilter.vue?vue&type=template&id=33d82582&scoped=true
3525
+ var GanttViewFiltervue_type_template_id_33d82582_scoped_true_render = function render() {
3526
3526
  var _vm = this,
3527
3527
  _c = _vm._self._c;
3528
3528
  return _c('div', {
@@ -3534,7 +3534,7 @@ var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_render = function r
3534
3534
  }, _vm._l(_vm.leftSideLabels, function (label, index) {
3535
3535
  return _c('span', {
3536
3536
  key: index,
3537
- staticClass: "left-label-item"
3537
+ staticClass: "p-name text-white"
3538
3538
  }, [_vm._v(" " + _vm._s(label) + " ")]);
3539
3539
  }), 0), _c('div', {
3540
3540
  staticClass: "legend-section"
@@ -3610,7 +3610,7 @@ var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_render = function r
3610
3610
  staticClass: "view-label"
3611
3611
  }, [_vm._v("Quarter")])])])])]);
3612
3612
  };
3613
- var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_staticRenderFns = [];
3613
+ var GanttViewFiltervue_type_template_id_33d82582_scoped_true_staticRenderFns = [];
3614
3614
 
3615
3615
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Header/GanttViewFilter.vue?vue&type=script&lang=js
3616
3616
 
@@ -3670,7 +3670,9 @@ var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_staticRenderFns = [
3670
3670
  'check': '#3B82F6',
3671
3671
  'epic': '#8B5CF6',
3672
3672
  'story': '#86EFAC',
3673
- 'subtask': '#3B82F6'
3673
+ 'subtask': '#3B82F6',
3674
+ 'phase': '#F97316',
3675
+ 'stage': '#ec4899'
3674
3676
  };
3675
3677
  },
3676
3678
  /**
@@ -3686,7 +3688,9 @@ var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_staticRenderFns = [
3686
3688
  'check': 'Check',
3687
3689
  'epic': 'Epic',
3688
3690
  'story': 'Story',
3689
- 'subtask': 'Subtask'
3691
+ 'subtask': 'Subtask',
3692
+ 'phase': 'Phase',
3693
+ 'stage': 'Stage'
3690
3694
  };
3691
3695
  },
3692
3696
  /**
@@ -3708,8 +3712,8 @@ var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_staticRenderFns = [
3708
3712
  });
3709
3713
  });
3710
3714
 
3711
- // Sort items in a consistent order (epic, story, task, milestone, etc.)
3712
- const order = ['epic', 'story', 'task', 'subtask', 'milestone', 'project', 'sprint'];
3715
+ // Sort items in a consistent order (phase, stage, epic, story, task, milestone, etc.)
3716
+ const order = ['phase', 'stage', 'epic', 'story', 'task', 'subtask', 'milestone', 'project', 'sprint', 'flag', 'check'];
3713
3717
  items.sort((a, b) => {
3714
3718
  const indexA = order.indexOf(a.type);
3715
3719
  const indexB = order.indexOf(b.type);
@@ -3735,10 +3739,10 @@ var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_staticRenderFns = [
3735
3739
  });
3736
3740
  ;// ./src/components/Header/GanttViewFilter.vue?vue&type=script&lang=js
3737
3741
  /* harmony default export */ var Header_GanttViewFiltervue_type_script_lang_js = (GanttViewFiltervue_type_script_lang_js);
3738
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Header/GanttViewFilter.vue?vue&type=style&index=0&id=eb2e1196&prod&scoped=true&lang=css
3742
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Header/GanttViewFilter.vue?vue&type=style&index=0&id=33d82582&prod&scoped=true&lang=css
3739
3743
  // extracted by mini-css-extract-plugin
3740
3744
 
3741
- ;// ./src/components/Header/GanttViewFilter.vue?vue&type=style&index=0&id=eb2e1196&prod&scoped=true&lang=css
3745
+ ;// ./src/components/Header/GanttViewFilter.vue?vue&type=style&index=0&id=33d82582&prod&scoped=true&lang=css
3742
3746
 
3743
3747
  ;// ./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js
3744
3748
  /* globals __VUE_SSR_CONTEXT__ */
@@ -3849,11 +3853,11 @@ function normalizeComponent(
3849
3853
 
3850
3854
  var component = normalizeComponent(
3851
3855
  Header_GanttViewFiltervue_type_script_lang_js,
3852
- GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_render,
3853
- GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_staticRenderFns,
3856
+ GanttViewFiltervue_type_template_id_33d82582_scoped_true_render,
3857
+ GanttViewFiltervue_type_template_id_33d82582_scoped_true_staticRenderFns,
3854
3858
  false,
3855
3859
  null,
3856
- "eb2e1196",
3860
+ "33d82582",
3857
3861
  null
3858
3862
 
3859
3863
  )
@@ -4399,8 +4403,8 @@ var TaskListItemvue_type_template_id_b99d1d94_render = function render() {
4399
4403
  };
4400
4404
  var TaskListItemvue_type_template_id_b99d1d94_staticRenderFns = [];
4401
4405
 
4402
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/TaskList/ItemColumn.vue?vue&type=template&id=6a863d80
4403
- var ItemColumnvue_type_template_id_6a863d80_render = function render() {
4406
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/TaskList/ItemColumn.vue?vue&type=template&id=a353e348
4407
+ var ItemColumnvue_type_template_id_a353e348_render = function render() {
4404
4408
  var _vm = this,
4405
4409
  _c = _vm._self._c;
4406
4410
  return _c('div', {
@@ -4537,7 +4541,7 @@ var ItemColumnvue_type_template_id_6a863d80_render = function render() {
4537
4541
  }
4538
4542
  })])])], 2)]);
4539
4543
  };
4540
- var ItemColumnvue_type_template_id_6a863d80_staticRenderFns = [];
4544
+ var ItemColumnvue_type_template_id_a353e348_staticRenderFns = [];
4541
4545
 
4542
4546
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/TaskList/ItemColumn.vue?vue&type=script&lang=js
4543
4547
 
@@ -4766,7 +4770,15 @@ var ItemColumnvue_type_template_id_6a863d80_staticRenderFns = [];
4766
4770
  // Green flag
4767
4771
  'check': 'M3 3 L11 3 L11 11 L3 11 Z M5 7 L7 9 L9 5',
4768
4772
  // Blue checkmark in square
4769
- 'epic': 'M7 2 L12 7 L7 12 L2 7 Z' // Purple diamond for epics
4773
+ 'epic': 'M7 2 L12 7 L7 12 L2 7 Z',
4774
+ // Purple diamond for epics
4775
+ 'story': 'M3 4 L11 4 L11 10 L3 10 Z',
4776
+ // Rectangle for stories
4777
+ 'subtask': 'M3 3 L11 3 L11 11 L3 11 Z',
4778
+ // Square for subtasks
4779
+ 'phase': 'M 2 2 L 10 7 L 2 12 Z',
4780
+ // Triangle/arrow for phase
4781
+ 'stage': 'M 1 3 H 13 V 11 H 1 Z M 1 7 H 9 Z' // Trapezoid/rectangle for stage
4770
4782
  };
4771
4783
 
4772
4784
  // Always return an icon for tasks, default to task icon if type not found
@@ -4800,7 +4812,11 @@ var ItemColumnvue_type_template_id_6a863d80_staticRenderFns = [];
4800
4812
  // Purple - matches chart
4801
4813
  'story': '#86EFAC',
4802
4814
  // Light green - matches chart
4803
- 'subtask': '#3B82F6' // Blue - matches chart
4815
+ 'subtask': '#3B82F6',
4816
+ // Blue - matches chart
4817
+ 'phase': '#F97316',
4818
+ // Orange - matches chart
4819
+ 'stage': '#ec4899' // Pink - matches chart
4804
4820
  };
4805
4821
  return colorMap[this.task.type] || '#6B7280'; // Gray default
4806
4822
  },
@@ -4844,8 +4860,8 @@ var ItemColumnvue_type_template_id_6a863d80_staticRenderFns = [];
4844
4860
  ;
4845
4861
  var ItemColumn_component = normalizeComponent(
4846
4862
  TaskList_ItemColumnvue_type_script_lang_js,
4847
- ItemColumnvue_type_template_id_6a863d80_render,
4848
- ItemColumnvue_type_template_id_6a863d80_staticRenderFns,
4863
+ ItemColumnvue_type_template_id_a353e348_render,
4864
+ ItemColumnvue_type_template_id_a353e348_staticRenderFns,
4849
4865
  false,
4850
4866
  null,
4851
4867
  null,
@@ -5062,8 +5078,8 @@ var TaskList_component = normalizeComponent(
5062
5078
  )
5063
5079
 
5064
5080
  /* harmony default export */ var TaskList = (TaskList_component.exports);
5065
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Chart/Chart.vue?vue&type=template&id=0856b85c
5066
- var Chartvue_type_template_id_0856b85c_render = function render() {
5081
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Chart/Chart.vue?vue&type=template&id=421ad3fc
5082
+ var Chartvue_type_template_id_421ad3fc_render = function render() {
5067
5083
  var _vm = this,
5068
5084
  _c = _vm._self._c;
5069
5085
  return _c('div', {
@@ -5138,7 +5154,7 @@ var Chartvue_type_template_id_0856b85c_render = function render() {
5138
5154
  })], 1);
5139
5155
  })], 2)])])])]);
5140
5156
  };
5141
- var Chartvue_type_template_id_0856b85c_staticRenderFns = [];
5157
+ var Chartvue_type_template_id_421ad3fc_staticRenderFns = [];
5142
5158
 
5143
5159
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Chart/Grid.vue?vue&type=template&id=244ea0ee
5144
5160
  var Gridvue_type_template_id_244ea0ee_render = function render() {
@@ -8859,6 +8875,530 @@ var Story_component = normalizeComponent(
8859
8875
  )
8860
8876
 
8861
8877
  /* harmony default export */ var Story = (Story_component.exports);
8878
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Chart/Row/Phase.vue?vue&type=template&id=76d951de
8879
+ var Phasevue_type_template_id_76d951de_render = function render() {
8880
+ var _vm = this,
8881
+ _c = _vm._self._c;
8882
+ return _c('g', {
8883
+ staticClass: "gantt-elastic__chart-row-bar-wrapper gantt-elastic__chart-row-phase-wrapper",
8884
+ style: {
8885
+ ..._vm.root.style['chart-row-bar-wrapper'],
8886
+ ..._vm.root.style['chart-row-phase-wrapper'],
8887
+ ..._vm.task.style['chart-row-bar-wrapper']
8888
+ }
8889
+ }, [_vm.displayExpander ? _c('foreignObject', {
8890
+ staticClass: "gantt-elastic__chart-expander gantt-elastic__chart-expander--phase",
8891
+ style: {
8892
+ ..._vm.root.style['chart-expander'],
8893
+ ..._vm.root.style['chart-expander--phase'],
8894
+ ..._vm.task.style['chart-expander']
8895
+ },
8896
+ attrs: {
8897
+ "x": _vm.task.x - _vm.root.state.options.chart.expander.offset - _vm.root.state.options.chart.expander.size,
8898
+ "y": _vm.task.y + (_vm.root.state.options.row.height - _vm.root.state.options.chart.expander.size) / 2,
8899
+ "width": _vm.root.state.options.chart.expander.size,
8900
+ "height": _vm.root.state.options.chart.expander.size
8901
+ }
8902
+ }, [_c('expander', {
8903
+ attrs: {
8904
+ "tasks": [_vm.task],
8905
+ "options": _vm.root.state.options.chart.expander,
8906
+ "type": "chart"
8907
+ }
8908
+ })], 1) : _vm._e(), _c('svg', {
8909
+ staticClass: "gantt-elastic__chart-row-bar gantt-elastic__chart-row-phase",
8910
+ style: {
8911
+ ..._vm.root.style['chart-row-bar'],
8912
+ ..._vm.root.style['chart-row-phase'],
8913
+ ..._vm.task.style['chart-row-bar']
8914
+ },
8915
+ attrs: {
8916
+ "x": _vm.task.x - 8,
8917
+ "y": _vm.task.y,
8918
+ "width": _vm.task.width + 16,
8919
+ "height": _vm.task.height,
8920
+ "viewBox": `-8 0 ${_vm.task.width + 16} ${_vm.task.height}`,
8921
+ "xmlns": "http://www.w3.org/2000/svg"
8922
+ },
8923
+ on: {
8924
+ "click": function ($event) {
8925
+ return _vm.emitEvent('click', $event);
8926
+ },
8927
+ "mouseenter": function ($event) {
8928
+ return _vm.emitEvent('mouseenter', $event);
8929
+ },
8930
+ "mouseover": function ($event) {
8931
+ return _vm.emitEvent('mouseover', $event);
8932
+ },
8933
+ "mouseout": function ($event) {
8934
+ return _vm.emitEvent('mouseout', $event);
8935
+ },
8936
+ "mousemove": function ($event) {
8937
+ return _vm.emitEvent('mousemove', $event);
8938
+ },
8939
+ "mousedown": function ($event) {
8940
+ return _vm.emitEvent('mousedown', $event);
8941
+ },
8942
+ "mouseup": function ($event) {
8943
+ return _vm.emitEvent('mouseup', $event);
8944
+ },
8945
+ "mousewheel": function ($event) {
8946
+ return _vm.emitEvent('mousewheel', $event);
8947
+ },
8948
+ "touchstart": function ($event) {
8949
+ return _vm.emitEvent('touchstart', $event);
8950
+ },
8951
+ "touchmove": function ($event) {
8952
+ return _vm.emitEvent('touchmove', $event);
8953
+ },
8954
+ "touchend": function ($event) {
8955
+ return _vm.emitEvent('touchend', $event);
8956
+ }
8957
+ }
8958
+ }, [_c('defs', [_c('clipPath', {
8959
+ attrs: {
8960
+ "id": _vm.clipPathId
8961
+ }
8962
+ }, [_c('path', {
8963
+ attrs: {
8964
+ "d": _vm.getPoints
8965
+ }
8966
+ })])]), _c('path', {
8967
+ staticClass: "gantt-elastic__chart-row-bar-polygon gantt-elastic__chart-row-phase-polygon",
8968
+ style: {
8969
+ ..._vm.root.style['chart-row-bar-polygon'],
8970
+ ..._vm.root.style['chart-row-phase-polygon'],
8971
+ ..._vm.task.style['base'],
8972
+ ..._vm.task.style['chart-row-bar-polygon'],
8973
+ 'pointer-events': 'all',
8974
+ 'z-index': '10'
8975
+ },
8976
+ attrs: {
8977
+ "d": _vm.getPointsAdjusted
8978
+ },
8979
+ on: {
8980
+ "mousedown": function ($event) {
8981
+ return _vm.startDrag($event, 'move');
8982
+ },
8983
+ "touchstart": function ($event) {
8984
+ return _vm.startDrag($event, 'move');
8985
+ }
8986
+ }
8987
+ }), _vm.task.progress > 0 ? _c('progress-bar', {
8988
+ attrs: {
8989
+ "task": _vm.task,
8990
+ "clip-path": 'url(#' + _vm.clipPathId + ')'
8991
+ }
8992
+ }) : _vm._e(), _c('rect', {
8993
+ staticClass: "gantt-elastic__chart-row-extend-handle gantt-elastic__drag-handle",
8994
+ staticStyle: {
8995
+ "pointer-events": "all",
8996
+ "z-index": "50",
8997
+ "cursor": "ew-resize !important"
8998
+ },
8999
+ style: _vm.root.style['chart-row-extend-handle'],
9000
+ attrs: {
9001
+ "x": "0",
9002
+ "y": "0",
9003
+ "width": 12,
9004
+ "height": _vm.task.height
9005
+ },
9006
+ on: {
9007
+ "mousedown": function ($event) {
9008
+ $event.stopPropagation();
9009
+ return _vm.startDrag($event, 'start');
9010
+ },
9011
+ "touchstart": function ($event) {
9012
+ $event.stopPropagation();
9013
+ return _vm.startDrag($event, 'start');
9014
+ }
9015
+ }
9016
+ }), _c('rect', {
9017
+ staticClass: "gantt-elastic__chart-row-extend-handle gantt-elastic__drag-handle",
9018
+ staticStyle: {
9019
+ "pointer-events": "all",
9020
+ "z-index": "50",
9021
+ "cursor": "ew-resize !important"
9022
+ },
9023
+ style: _vm.root.style['chart-row-extend-handle'],
9024
+ attrs: {
9025
+ "x": _vm.task.width - 12,
9026
+ "y": "0",
9027
+ "width": 12,
9028
+ "height": _vm.task.height
9029
+ },
9030
+ on: {
9031
+ "mousedown": function ($event) {
9032
+ $event.stopPropagation();
9033
+ return _vm.startDrag($event, 'end');
9034
+ },
9035
+ "touchstart": function ($event) {
9036
+ $event.stopPropagation();
9037
+ return _vm.startDrag($event, 'end');
9038
+ }
9039
+ }
9040
+ })], 1), _vm.root.state.options.chart.text.display ? _c('chart-text', {
9041
+ attrs: {
9042
+ "task": _vm.task
9043
+ }
9044
+ }) : _vm._e()], 1);
9045
+ };
9046
+ var Phasevue_type_template_id_76d951de_staticRenderFns = [];
9047
+
9048
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Chart/Row/Phase.vue?vue&type=script&lang=js
9049
+
9050
+
9051
+
9052
+
9053
+
9054
+ /* harmony default export */ var Phasevue_type_script_lang_js = ({
9055
+ name: 'Phase',
9056
+ components: {
9057
+ ChartText: Text,
9058
+ ProgressBar: ProgressBar,
9059
+ Expander: Expander
9060
+ },
9061
+ inject: ['root'],
9062
+ props: ['task'],
9063
+ mixins: [Task_mixin, Draggable_mixin],
9064
+ data() {
9065
+ return {};
9066
+ },
9067
+ computed: {
9068
+ /**
9069
+ * Get clip path id
9070
+ *
9071
+ * @returns {string}
9072
+ */
9073
+ clipPathId() {
9074
+ return 'gantt-elastic__phase-clip-path-' + this.task.id;
9075
+ },
9076
+ /**
9077
+ * Get points (arrow/triangle shape for phase)
9078
+ *
9079
+ * @returns {string}
9080
+ */
9081
+ getPoints() {
9082
+ const task = this.task;
9083
+ const arrowHeight = task.height * 0.3; // Height of arrow point
9084
+ const arrowWidth = task.height * 0.4; // Width of arrow point
9085
+ return `M 0,${task.height / 2}
9086
+ L ${arrowWidth},0
9087
+ L ${task.width - arrowWidth},0
9088
+ L ${task.width},${task.height / 2}
9089
+ L ${task.width - arrowWidth},${task.height}
9090
+ L ${arrowWidth},${task.height}
9091
+ Z`;
9092
+ },
9093
+ /**
9094
+ * Get points adjusted for viewBox
9095
+ *
9096
+ * @returns {string}
9097
+ */
9098
+ getPointsAdjusted() {
9099
+ const task = this.task;
9100
+ const arrowHeight = task.height * 0.3;
9101
+ const arrowWidth = task.height * 0.4;
9102
+ return `M ${8},${task.height / 2}
9103
+ L ${8 + arrowWidth},0
9104
+ L ${8 + task.width - arrowWidth},0
9105
+ L ${8 + task.width},${task.height / 2}
9106
+ L ${8 + task.width - arrowWidth},${task.height}
9107
+ L ${8 + arrowWidth},${task.height}
9108
+ Z`;
9109
+ },
9110
+ /**
9111
+ * Should we display expander?
9112
+ *
9113
+ * @returns {boolean}
9114
+ */
9115
+ displayExpander() {
9116
+ const expander = this.root.state.options.chart.expander;
9117
+ const hasChildren = this.task.allChildren && this.task.allChildren.length > 0;
9118
+ return (expander.display || expander.displayIfTaskListHidden && !this.root.state.options.taskList.display) && hasChildren;
9119
+ }
9120
+ }
9121
+ });
9122
+ ;// ./src/components/Chart/Row/Phase.vue?vue&type=script&lang=js
9123
+ /* harmony default export */ var Row_Phasevue_type_script_lang_js = (Phasevue_type_script_lang_js);
9124
+ ;// ./src/components/Chart/Row/Phase.vue
9125
+
9126
+
9127
+
9128
+
9129
+
9130
+ /* normalize component */
9131
+ ;
9132
+ var Phase_component = normalizeComponent(
9133
+ Row_Phasevue_type_script_lang_js,
9134
+ Phasevue_type_template_id_76d951de_render,
9135
+ Phasevue_type_template_id_76d951de_staticRenderFns,
9136
+ false,
9137
+ null,
9138
+ null,
9139
+ null
9140
+
9141
+ )
9142
+
9143
+ /* harmony default export */ var Phase = (Phase_component.exports);
9144
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Chart/Row/Stage.vue?vue&type=template&id=27688006
9145
+ var Stagevue_type_template_id_27688006_render = function render() {
9146
+ var _vm = this,
9147
+ _c = _vm._self._c;
9148
+ return _c('g', {
9149
+ staticClass: "gantt-elastic__chart-row-bar-wrapper gantt-elastic__chart-row-stage-wrapper",
9150
+ style: {
9151
+ ..._vm.root.style['chart-row-bar-wrapper'],
9152
+ ..._vm.root.style['chart-row-stage-wrapper'],
9153
+ ..._vm.task.style['chart-row-bar-wrapper']
9154
+ }
9155
+ }, [_vm.displayExpander ? _c('foreignObject', {
9156
+ staticClass: "gantt-elastic__chart-expander gantt-elastic__chart-expander--stage",
9157
+ style: {
9158
+ ..._vm.root.style['chart-expander'],
9159
+ ..._vm.root.style['chart-expander--stage'],
9160
+ ..._vm.task.style['chart-expander']
9161
+ },
9162
+ attrs: {
9163
+ "x": _vm.task.x - _vm.root.state.options.chart.expander.offset - _vm.root.state.options.chart.expander.size,
9164
+ "y": _vm.task.y + (_vm.root.state.options.row.height - _vm.root.state.options.chart.expander.size) / 2,
9165
+ "width": _vm.root.state.options.chart.expander.size,
9166
+ "height": _vm.root.state.options.chart.expander.size
9167
+ }
9168
+ }, [_c('expander', {
9169
+ attrs: {
9170
+ "tasks": [_vm.task],
9171
+ "options": _vm.root.state.options.chart.expander,
9172
+ "type": "chart"
9173
+ }
9174
+ })], 1) : _vm._e(), _c('svg', {
9175
+ staticClass: "gantt-elastic__chart-row-bar gantt-elastic__chart-row-stage",
9176
+ style: {
9177
+ ..._vm.root.style['chart-row-bar'],
9178
+ ..._vm.root.style['chart-row-stage'],
9179
+ ..._vm.task.style['chart-row-bar']
9180
+ },
9181
+ attrs: {
9182
+ "x": _vm.task.x - 8,
9183
+ "y": _vm.task.y,
9184
+ "width": _vm.task.width + 16,
9185
+ "height": _vm.task.height,
9186
+ "viewBox": `-8 0 ${_vm.task.width + 16} ${_vm.task.height}`,
9187
+ "xmlns": "http://www.w3.org/2000/svg"
9188
+ },
9189
+ on: {
9190
+ "click": function ($event) {
9191
+ return _vm.emitEvent('click', $event);
9192
+ },
9193
+ "mouseenter": function ($event) {
9194
+ return _vm.emitEvent('mouseenter', $event);
9195
+ },
9196
+ "mouseover": function ($event) {
9197
+ return _vm.emitEvent('mouseover', $event);
9198
+ },
9199
+ "mouseout": function ($event) {
9200
+ return _vm.emitEvent('mouseout', $event);
9201
+ },
9202
+ "mousemove": function ($event) {
9203
+ return _vm.emitEvent('mousemove', $event);
9204
+ },
9205
+ "mousedown": function ($event) {
9206
+ return _vm.emitEvent('mousedown', $event);
9207
+ },
9208
+ "mouseup": function ($event) {
9209
+ return _vm.emitEvent('mouseup', $event);
9210
+ },
9211
+ "mousewheel": function ($event) {
9212
+ return _vm.emitEvent('mousewheel', $event);
9213
+ },
9214
+ "touchstart": function ($event) {
9215
+ return _vm.emitEvent('touchstart', $event);
9216
+ },
9217
+ "touchmove": function ($event) {
9218
+ return _vm.emitEvent('touchmove', $event);
9219
+ },
9220
+ "touchend": function ($event) {
9221
+ return _vm.emitEvent('touchend', $event);
9222
+ }
9223
+ }
9224
+ }, [_c('defs', [_c('clipPath', {
9225
+ attrs: {
9226
+ "id": _vm.clipPathId
9227
+ }
9228
+ }, [_c('path', {
9229
+ attrs: {
9230
+ "d": _vm.getPoints
9231
+ }
9232
+ })])]), _c('path', {
9233
+ staticClass: "gantt-elastic__chart-row-bar-polygon gantt-elastic__chart-row-stage-polygon",
9234
+ style: {
9235
+ ..._vm.root.style['chart-row-bar-polygon'],
9236
+ ..._vm.root.style['chart-row-stage-polygon'],
9237
+ ..._vm.task.style['base'],
9238
+ ..._vm.task.style['chart-row-bar-polygon']
9239
+ },
9240
+ attrs: {
9241
+ "d": _vm.getPointsAdjusted
9242
+ },
9243
+ on: {
9244
+ "mousedown": function ($event) {
9245
+ return _vm.startDrag($event, 'move');
9246
+ },
9247
+ "touchstart": function ($event) {
9248
+ return _vm.startDrag($event, 'move');
9249
+ }
9250
+ }
9251
+ }), _c('progress-bar', {
9252
+ attrs: {
9253
+ "task": _vm.task,
9254
+ "clip-path": 'url(#' + _vm.clipPathId + ')'
9255
+ }
9256
+ }), _c('rect', {
9257
+ staticClass: "gantt-elastic__chart-row-extend-handle gantt-elastic__drag-handle",
9258
+ staticStyle: {
9259
+ "pointer-events": "all",
9260
+ "z-index": "50",
9261
+ "cursor": "ew-resize !important"
9262
+ },
9263
+ style: _vm.root.style['chart-row-extend-handle'],
9264
+ attrs: {
9265
+ "x": "0",
9266
+ "y": "0",
9267
+ "width": 12,
9268
+ "height": _vm.task.height
9269
+ },
9270
+ on: {
9271
+ "mousedown": function ($event) {
9272
+ $event.stopPropagation();
9273
+ return _vm.startDrag($event, 'start');
9274
+ },
9275
+ "touchstart": function ($event) {
9276
+ $event.stopPropagation();
9277
+ return _vm.startDrag($event, 'start');
9278
+ }
9279
+ }
9280
+ }), _c('rect', {
9281
+ staticClass: "gantt-elastic__chart-row-extend-handle gantt-elastic__drag-handle",
9282
+ staticStyle: {
9283
+ "pointer-events": "all",
9284
+ "z-index": "50",
9285
+ "cursor": "ew-resize !important"
9286
+ },
9287
+ style: _vm.root.style['chart-row-extend-handle'],
9288
+ attrs: {
9289
+ "x": _vm.task.width - 12,
9290
+ "y": "0",
9291
+ "width": 12,
9292
+ "height": _vm.task.height
9293
+ },
9294
+ on: {
9295
+ "mousedown": function ($event) {
9296
+ $event.stopPropagation();
9297
+ return _vm.startDrag($event, 'end');
9298
+ },
9299
+ "touchstart": function ($event) {
9300
+ $event.stopPropagation();
9301
+ return _vm.startDrag($event, 'end');
9302
+ }
9303
+ }
9304
+ })], 1), _vm.root.state.options.chart.text.display ? _c('chart-text', {
9305
+ attrs: {
9306
+ "task": _vm.task
9307
+ }
9308
+ }) : _vm._e()], 1);
9309
+ };
9310
+ var Stagevue_type_template_id_27688006_staticRenderFns = [];
9311
+
9312
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Chart/Row/Stage.vue?vue&type=script&lang=js
9313
+
9314
+
9315
+
9316
+
9317
+
9318
+ /* harmony default export */ var Stagevue_type_script_lang_js = ({
9319
+ name: 'Stage',
9320
+ components: {
9321
+ ChartText: Text,
9322
+ ProgressBar: ProgressBar,
9323
+ Expander: Expander
9324
+ },
9325
+ inject: ['root'],
9326
+ props: ['task'],
9327
+ mixins: [Task_mixin, Draggable_mixin],
9328
+ data() {
9329
+ return {};
9330
+ },
9331
+ computed: {
9332
+ /**
9333
+ * Get clip path id
9334
+ *
9335
+ * @returns {string}
9336
+ */
9337
+ clipPathId() {
9338
+ return 'gantt-elastic__stage-clip-path-' + this.task.id;
9339
+ },
9340
+ /**
9341
+ * Get points (trapezoid shape for stage)
9342
+ *
9343
+ * @returns {string}
9344
+ */
9345
+ getPoints() {
9346
+ const task = this.task;
9347
+ const indent = task.height * 0.2; // Indent for trapezoid effect
9348
+ return `M ${indent},0
9349
+ L ${task.width - indent},0
9350
+ L ${task.width},${task.height}
9351
+ L 0,${task.height}
9352
+ Z`;
9353
+ },
9354
+ /**
9355
+ * Get points adjusted for viewBox
9356
+ *
9357
+ * @returns {string}
9358
+ */
9359
+ getPointsAdjusted() {
9360
+ const task = this.task;
9361
+ const indent = task.height * 0.2;
9362
+ return `M ${8 + indent},0
9363
+ L ${8 + task.width - indent},0
9364
+ L ${8 + task.width},${task.height}
9365
+ L ${8},${task.height}
9366
+ Z`;
9367
+ },
9368
+ /**
9369
+ * Should we display expander?
9370
+ *
9371
+ * @returns {boolean}
9372
+ */
9373
+ displayExpander() {
9374
+ const expander = this.root.state.options.chart.expander;
9375
+ const hasChildren = this.task.allChildren && this.task.allChildren.length > 0;
9376
+ return (expander.display || expander.displayIfTaskListHidden && !this.root.state.options.taskList.display) && hasChildren;
9377
+ }
9378
+ }
9379
+ });
9380
+ ;// ./src/components/Chart/Row/Stage.vue?vue&type=script&lang=js
9381
+ /* harmony default export */ var Row_Stagevue_type_script_lang_js = (Stagevue_type_script_lang_js);
9382
+ ;// ./src/components/Chart/Row/Stage.vue
9383
+
9384
+
9385
+
9386
+
9387
+
9388
+ /* normalize component */
9389
+ ;
9390
+ var Stage_component = normalizeComponent(
9391
+ Row_Stagevue_type_script_lang_js,
9392
+ Stagevue_type_template_id_27688006_render,
9393
+ Stagevue_type_template_id_27688006_staticRenderFns,
9394
+ false,
9395
+ null,
9396
+ null,
9397
+ null
9398
+
9399
+ )
9400
+
9401
+ /* harmony default export */ var Stage = (Stage_component.exports);
8862
9402
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Chart/Chart.vue?vue&type=script&lang=js
8863
9403
 
8864
9404
 
@@ -8870,6 +9410,8 @@ var Story_component = normalizeComponent(
8870
9410
 
8871
9411
 
8872
9412
 
9413
+
9414
+
8873
9415
  /* harmony default export */ var Chartvue_type_script_lang_js = ({
8874
9416
  name: 'Chart',
8875
9417
  components: {
@@ -8882,6 +9424,8 @@ var Story_component = normalizeComponent(
8882
9424
  epic: Epic,
8883
9425
  subtask: Subtask,
8884
9426
  story: Story,
9427
+ phase: Phase,
9428
+ stage: Stage,
8885
9429
  DaysHighlight: DaysHighlight
8886
9430
  },
8887
9431
  inject: ['root'],
@@ -8960,8 +9504,8 @@ var Story_component = normalizeComponent(
8960
9504
  ;
8961
9505
  var Chart_component = normalizeComponent(
8962
9506
  Chart_Chartvue_type_script_lang_js,
8963
- Chartvue_type_template_id_0856b85c_render,
8964
- Chartvue_type_template_id_0856b85c_staticRenderFns,
9507
+ Chartvue_type_template_id_421ad3fc_render,
9508
+ Chartvue_type_template_id_421ad3fc_staticRenderFns,
8965
9509
  false,
8966
9510
  null,
8967
9511
  null,
@@ -9698,7 +10242,12 @@ function getStyle(fontSize = '12px', fontFamily = 'Arial, sans-serif') {
9698
10242
  },
9699
10243
  'chart-row-project-wrapper': {},
9700
10244
  'chart-row-project': {},
9701
- 'chart-row-project-polygon': {},
10245
+ 'chart-row-project-polygon': {
10246
+ stroke: '#8B5CF6',
10247
+ 'stroke-width': 2,
10248
+ fill: '#8B5CF6',
10249
+ 'fill-opacity': 0.9
10250
+ },
9702
10251
  'chart-row-epic-wrapper': {},
9703
10252
  'chart-row-epic': {},
9704
10253
  'chart-row-epic-polygon': {
@@ -9739,6 +10288,46 @@ function getStyle(fontSize = '12px', fontFamily = 'Arial, sans-serif') {
9739
10288
  fill: '#3B82F6',
9740
10289
  'fill-opacity': 0.9
9741
10290
  },
10291
+ 'chart-row-phase-wrapper': {},
10292
+ 'chart-row-phase': {},
10293
+ 'chart-row-phase-polygon': {
10294
+ stroke: '#F97316',
10295
+ 'stroke-width': 2,
10296
+ fill: '#F97316',
10297
+ 'fill-opacity': 0.9
10298
+ },
10299
+ 'chart-row-stage-wrapper': {},
10300
+ 'chart-row-stage': {},
10301
+ 'chart-row-stage-polygon': {
10302
+ stroke: '#ec4899',
10303
+ 'stroke-width': 1,
10304
+ fill: '#ec4899',
10305
+ 'fill-opacity': 0.9
10306
+ },
10307
+ 'chart-row-sprint-wrapper': {},
10308
+ 'chart-row-sprint': {},
10309
+ 'chart-row-sprint-polygon': {
10310
+ stroke: '#F59E0B',
10311
+ 'stroke-width': 1,
10312
+ fill: '#F59E0B',
10313
+ 'fill-opacity': 0.9
10314
+ },
10315
+ 'chart-row-flag-wrapper': {},
10316
+ 'chart-row-flag': {},
10317
+ 'chart-row-flag-polygon': {
10318
+ stroke: '#10B981',
10319
+ 'stroke-width': 1,
10320
+ fill: '#10B981',
10321
+ 'fill-opacity': 0.9
10322
+ },
10323
+ 'chart-row-check-wrapper': {},
10324
+ 'chart-row-check': {},
10325
+ 'chart-row-check-polygon': {
10326
+ stroke: '#3B82F6',
10327
+ 'stroke-width': 1,
10328
+ fill: '#3B82F6',
10329
+ 'fill-opacity': 0.9
10330
+ },
9742
10331
  'chart-row-progress-bar-wrapper': {},
9743
10332
  'chart-row-progress-bar': {},
9744
10333
  'chart-row-progress-bar-line': {