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.
@@ -3531,8 +3531,8 @@ var esnext_iterator_reduce = __webpack_require__(8872);
3531
3531
  // EXTERNAL MODULE: ./node_modules/dayjs/dayjs.min.js
3532
3532
  var dayjs_min = __webpack_require__(4353);
3533
3533
  var dayjs_min_default = /*#__PURE__*/__webpack_require__.n(dayjs_min);
3534
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.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
3535
- var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_render = function render() {
3534
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.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
3535
+ var GanttViewFiltervue_type_template_id_33d82582_scoped_true_render = function render() {
3536
3536
  var _vm = this,
3537
3537
  _c = _vm._self._c;
3538
3538
  return _c('div', {
@@ -3544,7 +3544,7 @@ var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_render = function r
3544
3544
  }, _vm._l(_vm.leftSideLabels, function (label, index) {
3545
3545
  return _c('span', {
3546
3546
  key: index,
3547
- staticClass: "left-label-item"
3547
+ staticClass: "p-name text-white"
3548
3548
  }, [_vm._v(" " + _vm._s(label) + " ")]);
3549
3549
  }), 0), _c('div', {
3550
3550
  staticClass: "legend-section"
@@ -3620,7 +3620,7 @@ var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_render = function r
3620
3620
  staticClass: "view-label"
3621
3621
  }, [_vm._v("Quarter")])])])])]);
3622
3622
  };
3623
- var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_staticRenderFns = [];
3623
+ var GanttViewFiltervue_type_template_id_33d82582_scoped_true_staticRenderFns = [];
3624
3624
 
3625
3625
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Header/GanttViewFilter.vue?vue&type=script&lang=js
3626
3626
 
@@ -3680,7 +3680,9 @@ var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_staticRenderFns = [
3680
3680
  'check': '#3B82F6',
3681
3681
  'epic': '#8B5CF6',
3682
3682
  'story': '#86EFAC',
3683
- 'subtask': '#3B82F6'
3683
+ 'subtask': '#3B82F6',
3684
+ 'phase': '#F97316',
3685
+ 'stage': '#ec4899'
3684
3686
  };
3685
3687
  },
3686
3688
  /**
@@ -3696,7 +3698,9 @@ var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_staticRenderFns = [
3696
3698
  'check': 'Check',
3697
3699
  'epic': 'Epic',
3698
3700
  'story': 'Story',
3699
- 'subtask': 'Subtask'
3701
+ 'subtask': 'Subtask',
3702
+ 'phase': 'Phase',
3703
+ 'stage': 'Stage'
3700
3704
  };
3701
3705
  },
3702
3706
  /**
@@ -3718,8 +3722,8 @@ var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_staticRenderFns = [
3718
3722
  });
3719
3723
  });
3720
3724
 
3721
- // Sort items in a consistent order (epic, story, task, milestone, etc.)
3722
- const order = ['epic', 'story', 'task', 'subtask', 'milestone', 'project', 'sprint'];
3725
+ // Sort items in a consistent order (phase, stage, epic, story, task, milestone, etc.)
3726
+ const order = ['phase', 'stage', 'epic', 'story', 'task', 'subtask', 'milestone', 'project', 'sprint', 'flag', 'check'];
3723
3727
  items.sort((a, b) => {
3724
3728
  const indexA = order.indexOf(a.type);
3725
3729
  const indexB = order.indexOf(b.type);
@@ -3745,10 +3749,10 @@ var GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_staticRenderFns = [
3745
3749
  });
3746
3750
  ;// ./src/components/Header/GanttViewFilter.vue?vue&type=script&lang=js
3747
3751
  /* harmony default export */ var Header_GanttViewFiltervue_type_script_lang_js = (GanttViewFiltervue_type_script_lang_js);
3748
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-55.use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-55.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-55.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
3752
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-55.use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-55.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-55.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
3749
3753
  // extracted by mini-css-extract-plugin
3750
3754
 
3751
- ;// ./src/components/Header/GanttViewFilter.vue?vue&type=style&index=0&id=eb2e1196&prod&scoped=true&lang=css
3755
+ ;// ./src/components/Header/GanttViewFilter.vue?vue&type=style&index=0&id=33d82582&prod&scoped=true&lang=css
3752
3756
 
3753
3757
  ;// ./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js
3754
3758
  /* globals __VUE_SSR_CONTEXT__ */
@@ -3859,11 +3863,11 @@ function normalizeComponent(
3859
3863
 
3860
3864
  var component = normalizeComponent(
3861
3865
  Header_GanttViewFiltervue_type_script_lang_js,
3862
- GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_render,
3863
- GanttViewFiltervue_type_template_id_eb2e1196_scoped_true_staticRenderFns,
3866
+ GanttViewFiltervue_type_template_id_33d82582_scoped_true_render,
3867
+ GanttViewFiltervue_type_template_id_33d82582_scoped_true_staticRenderFns,
3864
3868
  false,
3865
3869
  null,
3866
- "eb2e1196",
3870
+ "33d82582",
3867
3871
  null
3868
3872
 
3869
3873
  )
@@ -4409,8 +4413,8 @@ var TaskListItemvue_type_template_id_b99d1d94_render = function render() {
4409
4413
  };
4410
4414
  var TaskListItemvue_type_template_id_b99d1d94_staticRenderFns = [];
4411
4415
 
4412
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.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
4413
- var ItemColumnvue_type_template_id_6a863d80_render = function render() {
4416
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.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
4417
+ var ItemColumnvue_type_template_id_a353e348_render = function render() {
4414
4418
  var _vm = this,
4415
4419
  _c = _vm._self._c;
4416
4420
  return _c('div', {
@@ -4547,7 +4551,7 @@ var ItemColumnvue_type_template_id_6a863d80_render = function render() {
4547
4551
  }
4548
4552
  })])])], 2)]);
4549
4553
  };
4550
- var ItemColumnvue_type_template_id_6a863d80_staticRenderFns = [];
4554
+ var ItemColumnvue_type_template_id_a353e348_staticRenderFns = [];
4551
4555
 
4552
4556
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/TaskList/ItemColumn.vue?vue&type=script&lang=js
4553
4557
 
@@ -4776,7 +4780,15 @@ var ItemColumnvue_type_template_id_6a863d80_staticRenderFns = [];
4776
4780
  // Green flag
4777
4781
  'check': 'M3 3 L11 3 L11 11 L3 11 Z M5 7 L7 9 L9 5',
4778
4782
  // Blue checkmark in square
4779
- 'epic': 'M7 2 L12 7 L7 12 L2 7 Z' // Purple diamond for epics
4783
+ 'epic': 'M7 2 L12 7 L7 12 L2 7 Z',
4784
+ // Purple diamond for epics
4785
+ 'story': 'M3 4 L11 4 L11 10 L3 10 Z',
4786
+ // Rectangle for stories
4787
+ 'subtask': 'M3 3 L11 3 L11 11 L3 11 Z',
4788
+ // Square for subtasks
4789
+ 'phase': 'M 2 2 L 10 7 L 2 12 Z',
4790
+ // Triangle/arrow for phase
4791
+ 'stage': 'M 1 3 H 13 V 11 H 1 Z M 1 7 H 9 Z' // Trapezoid/rectangle for stage
4780
4792
  };
4781
4793
 
4782
4794
  // Always return an icon for tasks, default to task icon if type not found
@@ -4810,7 +4822,11 @@ var ItemColumnvue_type_template_id_6a863d80_staticRenderFns = [];
4810
4822
  // Purple - matches chart
4811
4823
  'story': '#86EFAC',
4812
4824
  // Light green - matches chart
4813
- 'subtask': '#3B82F6' // Blue - matches chart
4825
+ 'subtask': '#3B82F6',
4826
+ // Blue - matches chart
4827
+ 'phase': '#F97316',
4828
+ // Orange - matches chart
4829
+ 'stage': '#ec4899' // Pink - matches chart
4814
4830
  };
4815
4831
  return colorMap[this.task.type] || '#6B7280'; // Gray default
4816
4832
  },
@@ -4854,8 +4870,8 @@ var ItemColumnvue_type_template_id_6a863d80_staticRenderFns = [];
4854
4870
  ;
4855
4871
  var ItemColumn_component = normalizeComponent(
4856
4872
  TaskList_ItemColumnvue_type_script_lang_js,
4857
- ItemColumnvue_type_template_id_6a863d80_render,
4858
- ItemColumnvue_type_template_id_6a863d80_staticRenderFns,
4873
+ ItemColumnvue_type_template_id_a353e348_render,
4874
+ ItemColumnvue_type_template_id_a353e348_staticRenderFns,
4859
4875
  false,
4860
4876
  null,
4861
4877
  null,
@@ -5072,8 +5088,8 @@ var TaskList_component = normalizeComponent(
5072
5088
  )
5073
5089
 
5074
5090
  /* harmony default export */ var TaskList = (TaskList_component.exports);
5075
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.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
5076
- var Chartvue_type_template_id_0856b85c_render = function render() {
5091
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.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
5092
+ var Chartvue_type_template_id_421ad3fc_render = function render() {
5077
5093
  var _vm = this,
5078
5094
  _c = _vm._self._c;
5079
5095
  return _c('div', {
@@ -5148,7 +5164,7 @@ var Chartvue_type_template_id_0856b85c_render = function render() {
5148
5164
  })], 1);
5149
5165
  })], 2)])])])]);
5150
5166
  };
5151
- var Chartvue_type_template_id_0856b85c_staticRenderFns = [];
5167
+ var Chartvue_type_template_id_421ad3fc_staticRenderFns = [];
5152
5168
 
5153
5169
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.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
5154
5170
  var Gridvue_type_template_id_244ea0ee_render = function render() {
@@ -8869,6 +8885,530 @@ var Story_component = normalizeComponent(
8869
8885
  )
8870
8886
 
8871
8887
  /* harmony default export */ var Story = (Story_component.exports);
8888
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.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
8889
+ var Phasevue_type_template_id_76d951de_render = function render() {
8890
+ var _vm = this,
8891
+ _c = _vm._self._c;
8892
+ return _c('g', {
8893
+ staticClass: "gantt-elastic__chart-row-bar-wrapper gantt-elastic__chart-row-phase-wrapper",
8894
+ style: {
8895
+ ..._vm.root.style['chart-row-bar-wrapper'],
8896
+ ..._vm.root.style['chart-row-phase-wrapper'],
8897
+ ..._vm.task.style['chart-row-bar-wrapper']
8898
+ }
8899
+ }, [_vm.displayExpander ? _c('foreignObject', {
8900
+ staticClass: "gantt-elastic__chart-expander gantt-elastic__chart-expander--phase",
8901
+ style: {
8902
+ ..._vm.root.style['chart-expander'],
8903
+ ..._vm.root.style['chart-expander--phase'],
8904
+ ..._vm.task.style['chart-expander']
8905
+ },
8906
+ attrs: {
8907
+ "x": _vm.task.x - _vm.root.state.options.chart.expander.offset - _vm.root.state.options.chart.expander.size,
8908
+ "y": _vm.task.y + (_vm.root.state.options.row.height - _vm.root.state.options.chart.expander.size) / 2,
8909
+ "width": _vm.root.state.options.chart.expander.size,
8910
+ "height": _vm.root.state.options.chart.expander.size
8911
+ }
8912
+ }, [_c('expander', {
8913
+ attrs: {
8914
+ "tasks": [_vm.task],
8915
+ "options": _vm.root.state.options.chart.expander,
8916
+ "type": "chart"
8917
+ }
8918
+ })], 1) : _vm._e(), _c('svg', {
8919
+ staticClass: "gantt-elastic__chart-row-bar gantt-elastic__chart-row-phase",
8920
+ style: {
8921
+ ..._vm.root.style['chart-row-bar'],
8922
+ ..._vm.root.style['chart-row-phase'],
8923
+ ..._vm.task.style['chart-row-bar']
8924
+ },
8925
+ attrs: {
8926
+ "x": _vm.task.x - 8,
8927
+ "y": _vm.task.y,
8928
+ "width": _vm.task.width + 16,
8929
+ "height": _vm.task.height,
8930
+ "viewBox": `-8 0 ${_vm.task.width + 16} ${_vm.task.height}`,
8931
+ "xmlns": "http://www.w3.org/2000/svg"
8932
+ },
8933
+ on: {
8934
+ "click": function ($event) {
8935
+ return _vm.emitEvent('click', $event);
8936
+ },
8937
+ "mouseenter": function ($event) {
8938
+ return _vm.emitEvent('mouseenter', $event);
8939
+ },
8940
+ "mouseover": function ($event) {
8941
+ return _vm.emitEvent('mouseover', $event);
8942
+ },
8943
+ "mouseout": function ($event) {
8944
+ return _vm.emitEvent('mouseout', $event);
8945
+ },
8946
+ "mousemove": function ($event) {
8947
+ return _vm.emitEvent('mousemove', $event);
8948
+ },
8949
+ "mousedown": function ($event) {
8950
+ return _vm.emitEvent('mousedown', $event);
8951
+ },
8952
+ "mouseup": function ($event) {
8953
+ return _vm.emitEvent('mouseup', $event);
8954
+ },
8955
+ "mousewheel": function ($event) {
8956
+ return _vm.emitEvent('mousewheel', $event);
8957
+ },
8958
+ "touchstart": function ($event) {
8959
+ return _vm.emitEvent('touchstart', $event);
8960
+ },
8961
+ "touchmove": function ($event) {
8962
+ return _vm.emitEvent('touchmove', $event);
8963
+ },
8964
+ "touchend": function ($event) {
8965
+ return _vm.emitEvent('touchend', $event);
8966
+ }
8967
+ }
8968
+ }, [_c('defs', [_c('clipPath', {
8969
+ attrs: {
8970
+ "id": _vm.clipPathId
8971
+ }
8972
+ }, [_c('path', {
8973
+ attrs: {
8974
+ "d": _vm.getPoints
8975
+ }
8976
+ })])]), _c('path', {
8977
+ staticClass: "gantt-elastic__chart-row-bar-polygon gantt-elastic__chart-row-phase-polygon",
8978
+ style: {
8979
+ ..._vm.root.style['chart-row-bar-polygon'],
8980
+ ..._vm.root.style['chart-row-phase-polygon'],
8981
+ ..._vm.task.style['base'],
8982
+ ..._vm.task.style['chart-row-bar-polygon'],
8983
+ 'pointer-events': 'all',
8984
+ 'z-index': '10'
8985
+ },
8986
+ attrs: {
8987
+ "d": _vm.getPointsAdjusted
8988
+ },
8989
+ on: {
8990
+ "mousedown": function ($event) {
8991
+ return _vm.startDrag($event, 'move');
8992
+ },
8993
+ "touchstart": function ($event) {
8994
+ return _vm.startDrag($event, 'move');
8995
+ }
8996
+ }
8997
+ }), _vm.task.progress > 0 ? _c('progress-bar', {
8998
+ attrs: {
8999
+ "task": _vm.task,
9000
+ "clip-path": 'url(#' + _vm.clipPathId + ')'
9001
+ }
9002
+ }) : _vm._e(), _c('rect', {
9003
+ staticClass: "gantt-elastic__chart-row-extend-handle gantt-elastic__drag-handle",
9004
+ staticStyle: {
9005
+ "pointer-events": "all",
9006
+ "z-index": "50",
9007
+ "cursor": "ew-resize !important"
9008
+ },
9009
+ style: _vm.root.style['chart-row-extend-handle'],
9010
+ attrs: {
9011
+ "x": "0",
9012
+ "y": "0",
9013
+ "width": 12,
9014
+ "height": _vm.task.height
9015
+ },
9016
+ on: {
9017
+ "mousedown": function ($event) {
9018
+ $event.stopPropagation();
9019
+ return _vm.startDrag($event, 'start');
9020
+ },
9021
+ "touchstart": function ($event) {
9022
+ $event.stopPropagation();
9023
+ return _vm.startDrag($event, 'start');
9024
+ }
9025
+ }
9026
+ }), _c('rect', {
9027
+ staticClass: "gantt-elastic__chart-row-extend-handle gantt-elastic__drag-handle",
9028
+ staticStyle: {
9029
+ "pointer-events": "all",
9030
+ "z-index": "50",
9031
+ "cursor": "ew-resize !important"
9032
+ },
9033
+ style: _vm.root.style['chart-row-extend-handle'],
9034
+ attrs: {
9035
+ "x": _vm.task.width - 12,
9036
+ "y": "0",
9037
+ "width": 12,
9038
+ "height": _vm.task.height
9039
+ },
9040
+ on: {
9041
+ "mousedown": function ($event) {
9042
+ $event.stopPropagation();
9043
+ return _vm.startDrag($event, 'end');
9044
+ },
9045
+ "touchstart": function ($event) {
9046
+ $event.stopPropagation();
9047
+ return _vm.startDrag($event, 'end');
9048
+ }
9049
+ }
9050
+ })], 1), _vm.root.state.options.chart.text.display ? _c('chart-text', {
9051
+ attrs: {
9052
+ "task": _vm.task
9053
+ }
9054
+ }) : _vm._e()], 1);
9055
+ };
9056
+ var Phasevue_type_template_id_76d951de_staticRenderFns = [];
9057
+
9058
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.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
9059
+
9060
+
9061
+
9062
+
9063
+
9064
+ /* harmony default export */ var Phasevue_type_script_lang_js = ({
9065
+ name: 'Phase',
9066
+ components: {
9067
+ ChartText: Text,
9068
+ ProgressBar: ProgressBar,
9069
+ Expander: Expander
9070
+ },
9071
+ inject: ['root'],
9072
+ props: ['task'],
9073
+ mixins: [Task_mixin, Draggable_mixin],
9074
+ data() {
9075
+ return {};
9076
+ },
9077
+ computed: {
9078
+ /**
9079
+ * Get clip path id
9080
+ *
9081
+ * @returns {string}
9082
+ */
9083
+ clipPathId() {
9084
+ return 'gantt-elastic__phase-clip-path-' + this.task.id;
9085
+ },
9086
+ /**
9087
+ * Get points (arrow/triangle shape for phase)
9088
+ *
9089
+ * @returns {string}
9090
+ */
9091
+ getPoints() {
9092
+ const task = this.task;
9093
+ const arrowHeight = task.height * 0.3; // Height of arrow point
9094
+ const arrowWidth = task.height * 0.4; // Width of arrow point
9095
+ return `M 0,${task.height / 2}
9096
+ L ${arrowWidth},0
9097
+ L ${task.width - arrowWidth},0
9098
+ L ${task.width},${task.height / 2}
9099
+ L ${task.width - arrowWidth},${task.height}
9100
+ L ${arrowWidth},${task.height}
9101
+ Z`;
9102
+ },
9103
+ /**
9104
+ * Get points adjusted for viewBox
9105
+ *
9106
+ * @returns {string}
9107
+ */
9108
+ getPointsAdjusted() {
9109
+ const task = this.task;
9110
+ const arrowHeight = task.height * 0.3;
9111
+ const arrowWidth = task.height * 0.4;
9112
+ return `M ${8},${task.height / 2}
9113
+ L ${8 + arrowWidth},0
9114
+ L ${8 + task.width - arrowWidth},0
9115
+ L ${8 + task.width},${task.height / 2}
9116
+ L ${8 + task.width - arrowWidth},${task.height}
9117
+ L ${8 + arrowWidth},${task.height}
9118
+ Z`;
9119
+ },
9120
+ /**
9121
+ * Should we display expander?
9122
+ *
9123
+ * @returns {boolean}
9124
+ */
9125
+ displayExpander() {
9126
+ const expander = this.root.state.options.chart.expander;
9127
+ const hasChildren = this.task.allChildren && this.task.allChildren.length > 0;
9128
+ return (expander.display || expander.displayIfTaskListHidden && !this.root.state.options.taskList.display) && hasChildren;
9129
+ }
9130
+ }
9131
+ });
9132
+ ;// ./src/components/Chart/Row/Phase.vue?vue&type=script&lang=js
9133
+ /* harmony default export */ var Row_Phasevue_type_script_lang_js = (Phasevue_type_script_lang_js);
9134
+ ;// ./src/components/Chart/Row/Phase.vue
9135
+
9136
+
9137
+
9138
+
9139
+
9140
+ /* normalize component */
9141
+ ;
9142
+ var Phase_component = normalizeComponent(
9143
+ Row_Phasevue_type_script_lang_js,
9144
+ Phasevue_type_template_id_76d951de_render,
9145
+ Phasevue_type_template_id_76d951de_staticRenderFns,
9146
+ false,
9147
+ null,
9148
+ null,
9149
+ null
9150
+
9151
+ )
9152
+
9153
+ /* harmony default export */ var Phase = (Phase_component.exports);
9154
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.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
9155
+ var Stagevue_type_template_id_27688006_render = function render() {
9156
+ var _vm = this,
9157
+ _c = _vm._self._c;
9158
+ return _c('g', {
9159
+ staticClass: "gantt-elastic__chart-row-bar-wrapper gantt-elastic__chart-row-stage-wrapper",
9160
+ style: {
9161
+ ..._vm.root.style['chart-row-bar-wrapper'],
9162
+ ..._vm.root.style['chart-row-stage-wrapper'],
9163
+ ..._vm.task.style['chart-row-bar-wrapper']
9164
+ }
9165
+ }, [_vm.displayExpander ? _c('foreignObject', {
9166
+ staticClass: "gantt-elastic__chart-expander gantt-elastic__chart-expander--stage",
9167
+ style: {
9168
+ ..._vm.root.style['chart-expander'],
9169
+ ..._vm.root.style['chart-expander--stage'],
9170
+ ..._vm.task.style['chart-expander']
9171
+ },
9172
+ attrs: {
9173
+ "x": _vm.task.x - _vm.root.state.options.chart.expander.offset - _vm.root.state.options.chart.expander.size,
9174
+ "y": _vm.task.y + (_vm.root.state.options.row.height - _vm.root.state.options.chart.expander.size) / 2,
9175
+ "width": _vm.root.state.options.chart.expander.size,
9176
+ "height": _vm.root.state.options.chart.expander.size
9177
+ }
9178
+ }, [_c('expander', {
9179
+ attrs: {
9180
+ "tasks": [_vm.task],
9181
+ "options": _vm.root.state.options.chart.expander,
9182
+ "type": "chart"
9183
+ }
9184
+ })], 1) : _vm._e(), _c('svg', {
9185
+ staticClass: "gantt-elastic__chart-row-bar gantt-elastic__chart-row-stage",
9186
+ style: {
9187
+ ..._vm.root.style['chart-row-bar'],
9188
+ ..._vm.root.style['chart-row-stage'],
9189
+ ..._vm.task.style['chart-row-bar']
9190
+ },
9191
+ attrs: {
9192
+ "x": _vm.task.x - 8,
9193
+ "y": _vm.task.y,
9194
+ "width": _vm.task.width + 16,
9195
+ "height": _vm.task.height,
9196
+ "viewBox": `-8 0 ${_vm.task.width + 16} ${_vm.task.height}`,
9197
+ "xmlns": "http://www.w3.org/2000/svg"
9198
+ },
9199
+ on: {
9200
+ "click": function ($event) {
9201
+ return _vm.emitEvent('click', $event);
9202
+ },
9203
+ "mouseenter": function ($event) {
9204
+ return _vm.emitEvent('mouseenter', $event);
9205
+ },
9206
+ "mouseover": function ($event) {
9207
+ return _vm.emitEvent('mouseover', $event);
9208
+ },
9209
+ "mouseout": function ($event) {
9210
+ return _vm.emitEvent('mouseout', $event);
9211
+ },
9212
+ "mousemove": function ($event) {
9213
+ return _vm.emitEvent('mousemove', $event);
9214
+ },
9215
+ "mousedown": function ($event) {
9216
+ return _vm.emitEvent('mousedown', $event);
9217
+ },
9218
+ "mouseup": function ($event) {
9219
+ return _vm.emitEvent('mouseup', $event);
9220
+ },
9221
+ "mousewheel": function ($event) {
9222
+ return _vm.emitEvent('mousewheel', $event);
9223
+ },
9224
+ "touchstart": function ($event) {
9225
+ return _vm.emitEvent('touchstart', $event);
9226
+ },
9227
+ "touchmove": function ($event) {
9228
+ return _vm.emitEvent('touchmove', $event);
9229
+ },
9230
+ "touchend": function ($event) {
9231
+ return _vm.emitEvent('touchend', $event);
9232
+ }
9233
+ }
9234
+ }, [_c('defs', [_c('clipPath', {
9235
+ attrs: {
9236
+ "id": _vm.clipPathId
9237
+ }
9238
+ }, [_c('path', {
9239
+ attrs: {
9240
+ "d": _vm.getPoints
9241
+ }
9242
+ })])]), _c('path', {
9243
+ staticClass: "gantt-elastic__chart-row-bar-polygon gantt-elastic__chart-row-stage-polygon",
9244
+ style: {
9245
+ ..._vm.root.style['chart-row-bar-polygon'],
9246
+ ..._vm.root.style['chart-row-stage-polygon'],
9247
+ ..._vm.task.style['base'],
9248
+ ..._vm.task.style['chart-row-bar-polygon']
9249
+ },
9250
+ attrs: {
9251
+ "d": _vm.getPointsAdjusted
9252
+ },
9253
+ on: {
9254
+ "mousedown": function ($event) {
9255
+ return _vm.startDrag($event, 'move');
9256
+ },
9257
+ "touchstart": function ($event) {
9258
+ return _vm.startDrag($event, 'move');
9259
+ }
9260
+ }
9261
+ }), _c('progress-bar', {
9262
+ attrs: {
9263
+ "task": _vm.task,
9264
+ "clip-path": 'url(#' + _vm.clipPathId + ')'
9265
+ }
9266
+ }), _c('rect', {
9267
+ staticClass: "gantt-elastic__chart-row-extend-handle gantt-elastic__drag-handle",
9268
+ staticStyle: {
9269
+ "pointer-events": "all",
9270
+ "z-index": "50",
9271
+ "cursor": "ew-resize !important"
9272
+ },
9273
+ style: _vm.root.style['chart-row-extend-handle'],
9274
+ attrs: {
9275
+ "x": "0",
9276
+ "y": "0",
9277
+ "width": 12,
9278
+ "height": _vm.task.height
9279
+ },
9280
+ on: {
9281
+ "mousedown": function ($event) {
9282
+ $event.stopPropagation();
9283
+ return _vm.startDrag($event, 'start');
9284
+ },
9285
+ "touchstart": function ($event) {
9286
+ $event.stopPropagation();
9287
+ return _vm.startDrag($event, 'start');
9288
+ }
9289
+ }
9290
+ }), _c('rect', {
9291
+ staticClass: "gantt-elastic__chart-row-extend-handle gantt-elastic__drag-handle",
9292
+ staticStyle: {
9293
+ "pointer-events": "all",
9294
+ "z-index": "50",
9295
+ "cursor": "ew-resize !important"
9296
+ },
9297
+ style: _vm.root.style['chart-row-extend-handle'],
9298
+ attrs: {
9299
+ "x": _vm.task.width - 12,
9300
+ "y": "0",
9301
+ "width": 12,
9302
+ "height": _vm.task.height
9303
+ },
9304
+ on: {
9305
+ "mousedown": function ($event) {
9306
+ $event.stopPropagation();
9307
+ return _vm.startDrag($event, 'end');
9308
+ },
9309
+ "touchstart": function ($event) {
9310
+ $event.stopPropagation();
9311
+ return _vm.startDrag($event, 'end');
9312
+ }
9313
+ }
9314
+ })], 1), _vm.root.state.options.chart.text.display ? _c('chart-text', {
9315
+ attrs: {
9316
+ "task": _vm.task
9317
+ }
9318
+ }) : _vm._e()], 1);
9319
+ };
9320
+ var Stagevue_type_template_id_27688006_staticRenderFns = [];
9321
+
9322
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.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
9323
+
9324
+
9325
+
9326
+
9327
+
9328
+ /* harmony default export */ var Stagevue_type_script_lang_js = ({
9329
+ name: 'Stage',
9330
+ components: {
9331
+ ChartText: Text,
9332
+ ProgressBar: ProgressBar,
9333
+ Expander: Expander
9334
+ },
9335
+ inject: ['root'],
9336
+ props: ['task'],
9337
+ mixins: [Task_mixin, Draggable_mixin],
9338
+ data() {
9339
+ return {};
9340
+ },
9341
+ computed: {
9342
+ /**
9343
+ * Get clip path id
9344
+ *
9345
+ * @returns {string}
9346
+ */
9347
+ clipPathId() {
9348
+ return 'gantt-elastic__stage-clip-path-' + this.task.id;
9349
+ },
9350
+ /**
9351
+ * Get points (trapezoid shape for stage)
9352
+ *
9353
+ * @returns {string}
9354
+ */
9355
+ getPoints() {
9356
+ const task = this.task;
9357
+ const indent = task.height * 0.2; // Indent for trapezoid effect
9358
+ return `M ${indent},0
9359
+ L ${task.width - indent},0
9360
+ L ${task.width},${task.height}
9361
+ L 0,${task.height}
9362
+ Z`;
9363
+ },
9364
+ /**
9365
+ * Get points adjusted for viewBox
9366
+ *
9367
+ * @returns {string}
9368
+ */
9369
+ getPointsAdjusted() {
9370
+ const task = this.task;
9371
+ const indent = task.height * 0.2;
9372
+ return `M ${8 + indent},0
9373
+ L ${8 + task.width - indent},0
9374
+ L ${8 + task.width},${task.height}
9375
+ L ${8},${task.height}
9376
+ Z`;
9377
+ },
9378
+ /**
9379
+ * Should we display expander?
9380
+ *
9381
+ * @returns {boolean}
9382
+ */
9383
+ displayExpander() {
9384
+ const expander = this.root.state.options.chart.expander;
9385
+ const hasChildren = this.task.allChildren && this.task.allChildren.length > 0;
9386
+ return (expander.display || expander.displayIfTaskListHidden && !this.root.state.options.taskList.display) && hasChildren;
9387
+ }
9388
+ }
9389
+ });
9390
+ ;// ./src/components/Chart/Row/Stage.vue?vue&type=script&lang=js
9391
+ /* harmony default export */ var Row_Stagevue_type_script_lang_js = (Stagevue_type_script_lang_js);
9392
+ ;// ./src/components/Chart/Row/Stage.vue
9393
+
9394
+
9395
+
9396
+
9397
+
9398
+ /* normalize component */
9399
+ ;
9400
+ var Stage_component = normalizeComponent(
9401
+ Row_Stagevue_type_script_lang_js,
9402
+ Stagevue_type_template_id_27688006_render,
9403
+ Stagevue_type_template_id_27688006_staticRenderFns,
9404
+ false,
9405
+ null,
9406
+ null,
9407
+ null
9408
+
9409
+ )
9410
+
9411
+ /* harmony default export */ var Stage = (Stage_component.exports);
8872
9412
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/Chart/Chart.vue?vue&type=script&lang=js
8873
9413
 
8874
9414
 
@@ -8880,6 +9420,8 @@ var Story_component = normalizeComponent(
8880
9420
 
8881
9421
 
8882
9422
 
9423
+
9424
+
8883
9425
  /* harmony default export */ var Chartvue_type_script_lang_js = ({
8884
9426
  name: 'Chart',
8885
9427
  components: {
@@ -8892,6 +9434,8 @@ var Story_component = normalizeComponent(
8892
9434
  epic: Epic,
8893
9435
  subtask: Subtask,
8894
9436
  story: Story,
9437
+ phase: Phase,
9438
+ stage: Stage,
8895
9439
  DaysHighlight: DaysHighlight
8896
9440
  },
8897
9441
  inject: ['root'],
@@ -8970,8 +9514,8 @@ var Story_component = normalizeComponent(
8970
9514
  ;
8971
9515
  var Chart_component = normalizeComponent(
8972
9516
  Chart_Chartvue_type_script_lang_js,
8973
- Chartvue_type_template_id_0856b85c_render,
8974
- Chartvue_type_template_id_0856b85c_staticRenderFns,
9517
+ Chartvue_type_template_id_421ad3fc_render,
9518
+ Chartvue_type_template_id_421ad3fc_staticRenderFns,
8975
9519
  false,
8976
9520
  null,
8977
9521
  null,
@@ -9708,7 +10252,12 @@ function getStyle(fontSize = '12px', fontFamily = 'Arial, sans-serif') {
9708
10252
  },
9709
10253
  'chart-row-project-wrapper': {},
9710
10254
  'chart-row-project': {},
9711
- 'chart-row-project-polygon': {},
10255
+ 'chart-row-project-polygon': {
10256
+ stroke: '#8B5CF6',
10257
+ 'stroke-width': 2,
10258
+ fill: '#8B5CF6',
10259
+ 'fill-opacity': 0.9
10260
+ },
9712
10261
  'chart-row-epic-wrapper': {},
9713
10262
  'chart-row-epic': {},
9714
10263
  'chart-row-epic-polygon': {
@@ -9749,6 +10298,46 @@ function getStyle(fontSize = '12px', fontFamily = 'Arial, sans-serif') {
9749
10298
  fill: '#3B82F6',
9750
10299
  'fill-opacity': 0.9
9751
10300
  },
10301
+ 'chart-row-phase-wrapper': {},
10302
+ 'chart-row-phase': {},
10303
+ 'chart-row-phase-polygon': {
10304
+ stroke: '#F97316',
10305
+ 'stroke-width': 2,
10306
+ fill: '#F97316',
10307
+ 'fill-opacity': 0.9
10308
+ },
10309
+ 'chart-row-stage-wrapper': {},
10310
+ 'chart-row-stage': {},
10311
+ 'chart-row-stage-polygon': {
10312
+ stroke: '#ec4899',
10313
+ 'stroke-width': 1,
10314
+ fill: '#ec4899',
10315
+ 'fill-opacity': 0.9
10316
+ },
10317
+ 'chart-row-sprint-wrapper': {},
10318
+ 'chart-row-sprint': {},
10319
+ 'chart-row-sprint-polygon': {
10320
+ stroke: '#F59E0B',
10321
+ 'stroke-width': 1,
10322
+ fill: '#F59E0B',
10323
+ 'fill-opacity': 0.9
10324
+ },
10325
+ 'chart-row-flag-wrapper': {},
10326
+ 'chart-row-flag': {},
10327
+ 'chart-row-flag-polygon': {
10328
+ stroke: '#10B981',
10329
+ 'stroke-width': 1,
10330
+ fill: '#10B981',
10331
+ 'fill-opacity': 0.9
10332
+ },
10333
+ 'chart-row-check-wrapper': {},
10334
+ 'chart-row-check': {},
10335
+ 'chart-row-check-polygon': {
10336
+ stroke: '#3B82F6',
10337
+ 'stroke-width': 1,
10338
+ fill: '#3B82F6',
10339
+ 'fill-opacity': 0.9
10340
+ },
9752
10341
  'chart-row-progress-bar-wrapper': {},
9753
10342
  'chart-row-progress-bar': {},
9754
10343
  'chart-row-progress-bar-line': {