fix: improve view mode change, side header
This commit is contained in:
parent
901f78e717
commit
8bdd488618
@ -69,26 +69,31 @@ $dark-blue: #2c94ec !default;
|
|||||||
background: white;
|
background: white;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: 13px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.today-button {
|
.today-button,
|
||||||
|
.viewmode-select {
|
||||||
background: #F4F5F6;
|
background: #F4F5F6;
|
||||||
|
text-align: center;
|
||||||
|
height: 25px;
|
||||||
|
border-radius: 8px;
|
||||||
border: none;
|
border: none;
|
||||||
color: $text-dark;
|
color: $text-dark;
|
||||||
padding: 4px 10px;
|
padding: 4px 10px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
float: right;
|
height: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.viewmode-select {
|
.viewmode-select {
|
||||||
background: #F4F5F6;
|
|
||||||
text-align: center;
|
|
||||||
outline: none !important;
|
outline: none !important;
|
||||||
padding: 4px 8px;
|
padding: 4px 8px;
|
||||||
border-radius: 6px;
|
margin-right: 4px;
|
||||||
// display: block;
|
|
||||||
margin-bottom: 4px;
|
// Hide select icon
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-moz-appearance: none;
|
||||||
|
text-indent: 1px;
|
||||||
|
text-overflow: '';
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-highlight {
|
.date-highlight {
|
||||||
@ -107,7 +112,7 @@ $dark-blue: #2c94ec !default;
|
|||||||
.current-date-highlight {
|
.current-date-highlight {
|
||||||
background: $dark-blue;
|
background: $dark-blue;
|
||||||
color: $text-light;
|
color: $text-light;
|
||||||
padding: 4px;
|
padding: 4px 8px;
|
||||||
border-radius: 200px;
|
border-radius: 200px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -137,7 +142,7 @@ $dark-blue: #2c94ec !default;
|
|||||||
|
|
||||||
.tick {
|
.tick {
|
||||||
stroke: $stroke-color;
|
stroke: $stroke-color;
|
||||||
stroke-width: 0.2;
|
stroke-width: 0.4;
|
||||||
|
|
||||||
&.thick {
|
&.thick {
|
||||||
stroke: $dark-stroke-color;
|
stroke: $dark-stroke-color;
|
||||||
|
|||||||
28
src/index.js
28
src/index.js
@ -78,9 +78,9 @@ export default class Gantt {
|
|||||||
this.$container.appendChild(this.$svg);
|
this.$container.appendChild(this.$svg);
|
||||||
|
|
||||||
// popup wrapper
|
// popup wrapper
|
||||||
this.popup_wrapper = document.createElement("div");
|
this.$popup_wrapper = document.createElement("div");
|
||||||
this.popup_wrapper.classList.add("popup-wrapper");
|
this.$popup_wrapper.classList.add("popup-wrapper");
|
||||||
this.$container.appendChild(this.popup_wrapper);
|
this.$container.appendChild(this.$popup_wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_options(options) {
|
setup_options(options) {
|
||||||
@ -420,9 +420,6 @@ export default class Gantt {
|
|||||||
|
|
||||||
make_grid_header() {
|
make_grid_header() {
|
||||||
const curHeader = document.querySelector('.grid-header')
|
const curHeader = document.querySelector('.grid-header')
|
||||||
if (curHeader) {
|
|
||||||
curHeader.remove()
|
|
||||||
};
|
|
||||||
|
|
||||||
let $header = document.createElement("div");
|
let $header = document.createElement("div");
|
||||||
$header.style.height = this.options.header_height + 10 + "px";
|
$header.style.height = this.options.header_height + 10 + "px";
|
||||||
@ -452,13 +449,19 @@ export default class Gantt {
|
|||||||
const $select = document.createElement("select");
|
const $select = document.createElement("select");
|
||||||
$select.classList.add('viewmode-select')
|
$select.classList.add('viewmode-select')
|
||||||
|
|
||||||
|
const $el = document.createElement("option");
|
||||||
|
$el.selected = true
|
||||||
|
$el.disabled = true
|
||||||
|
$el.textContent = 'Mode'
|
||||||
|
$select.appendChild($el)
|
||||||
|
|
||||||
for (const key in VIEW_MODE) {
|
for (const key in VIEW_MODE) {
|
||||||
const $option = document.createElement("option");
|
const $option = document.createElement("option");
|
||||||
$option.value = VIEW_MODE[key];
|
$option.value = VIEW_MODE[key];
|
||||||
$option.textContent = VIEW_MODE[key];
|
$option.textContent = VIEW_MODE[key];
|
||||||
$select.appendChild($option);
|
$select.appendChild($option);
|
||||||
}
|
}
|
||||||
$select.value = this.options.view_mode
|
// $select.value = this.options.view_mode
|
||||||
$select.addEventListener("change", (function () {
|
$select.addEventListener("change", (function () {
|
||||||
this.change_view_mode($select.value)
|
this.change_view_mode($select.value)
|
||||||
}).bind(this));
|
}).bind(this));
|
||||||
@ -475,7 +478,7 @@ export default class Gantt {
|
|||||||
const { left, y } = this.$header.getBoundingClientRect();
|
const { left, y } = this.$header.getBoundingClientRect();
|
||||||
const width = Math.min(this.$header.clientWidth, this.$container.clientWidth)
|
const width = Math.min(this.$header.clientWidth, this.$container.clientWidth)
|
||||||
$side_header.style.left = left + this.$container.scrollLeft + width - $side_header.clientWidth + 'px';
|
$side_header.style.left = left + this.$container.scrollLeft + width - $side_header.clientWidth + 'px';
|
||||||
$side_header.style.top = y + 20 + 'px';
|
$side_header.style.top = y + 10 + 'px';
|
||||||
}
|
}
|
||||||
|
|
||||||
make_grid_ticks() {
|
make_grid_ticks() {
|
||||||
@ -610,12 +613,12 @@ export default class Gantt {
|
|||||||
const { x: left, date } = this.computeGridHighlightDimensions(this.options.view_mode)
|
const { x: left, date } = this.computeGridHighlightDimensions(this.options.view_mode)
|
||||||
const top = this.options.header_height + this.options.padding / 2;
|
const top = this.options.header_height + this.options.padding / 2;
|
||||||
const height = (this.options.bar_height + this.options.padding) * this.tasks.length;
|
const height = (this.options.bar_height + this.options.padding) * this.tasks.length;
|
||||||
this.create_el({ top, left, height, classes: 'current-highlight', append_to: this.$container })
|
this.$current_highlight = this.create_el({ top, left, height, classes: 'current-highlight', append_to: this.$container })
|
||||||
let $today = document.getElementById(date_utils.format(date).replaceAll(' ', '_'))
|
let $today = document.getElementById(date_utils.format(date).replaceAll(' ', '_'))
|
||||||
|
|
||||||
$today.classList.add('current-date-highlight')
|
$today.classList.add('current-date-highlight')
|
||||||
$today.style.top = +$today.style.top.slice(0, -2) - 4 + 'px'
|
$today.style.top = +$today.style.top.slice(0, -2) - 4 + 'px'
|
||||||
$today.style.left = +$today.style.left.slice(0, -2) - 4 + 'px'
|
$today.style.left = +$today.style.left.slice(0, -2) - 8 + 'px'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1138,7 +1141,7 @@ export default class Gantt {
|
|||||||
show_popup(options) {
|
show_popup(options) {
|
||||||
if (!this.popup) {
|
if (!this.popup) {
|
||||||
this.popup = new Popup(
|
this.popup = new Popup(
|
||||||
this.popup_wrapper,
|
this.$popup_wrapper,
|
||||||
this.options.custom_popup_html,
|
this.options.custom_popup_html,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -1177,6 +1180,9 @@ export default class Gantt {
|
|||||||
*/
|
*/
|
||||||
clear() {
|
clear() {
|
||||||
this.$svg.innerHTML = "";
|
this.$svg.innerHTML = "";
|
||||||
|
this.$header?.remove?.()
|
||||||
|
this.$current_highlight?.remove?.()
|
||||||
|
this.$popup_wrapper?.remove?.()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user