Merge pull request #164 from zhihuahuang/feat-language-zh-and-view-mode-constant

Feat language zh and view mode constant
This commit is contained in:
gavin 2020-02-17 11:15:02 +05:30 committed by GitHub
commit d72019bb8a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 44 additions and 26 deletions

View File

@ -90,6 +90,20 @@ const month_names = {
'Ekim', 'Ekim',
'Kasım', 'Kasım',
'Aralık' 'Aralık'
],
zh: [
'一月',
'二月',
'三月',
'四月',
'五月',
'六月',
'七月',
'八月',
'九月',
'十月',
'十一月',
'十二月'
] ]
}; };

View File

@ -6,6 +6,15 @@ import Popup from './popup';
import './gantt.scss'; import './gantt.scss';
const VIEW_MODE = {
QUARTER_DAY: 'Quarter Day',
HALF_DAY: 'Half Day',
DAY: 'Day',
WEEK: 'Week',
MONTH: 'Month',
YEAR: 'Year'
};
export default class Gantt { export default class Gantt {
constructor(wrapper, tasks, options) { constructor(wrapper, tasks, options) {
this.setup_wrapper(wrapper); this.setup_wrapper(wrapper);
@ -68,14 +77,7 @@ export default class Gantt {
header_height: 50, header_height: 50,
column_width: 30, column_width: 30,
step: 24, step: 24,
view_modes: [ view_modes: [...Object.values(VIEW_MODE)],
'Quarter Day',
'Half Day',
'Day',
'Week',
'Month',
'Year'
],
bar_height: 20, bar_height: 20,
bar_corner_radius: 3, bar_corner_radius: 3,
arrow_curve: 5, arrow_curve: 5,
@ -180,22 +182,22 @@ export default class Gantt {
update_view_scale(view_mode) { update_view_scale(view_mode) {
this.options.view_mode = view_mode; this.options.view_mode = view_mode;
if (view_mode === 'Day') { if (view_mode === VIEW_MODE.DAY) {
this.options.step = 24; this.options.step = 24;
this.options.column_width = 38; this.options.column_width = 38;
} else if (view_mode === 'Half Day') { } else if (view_mode === VIEW_MODE.HALF_DAY) {
this.options.step = 24 / 2; this.options.step = 24 / 2;
this.options.column_width = 38; this.options.column_width = 38;
} else if (view_mode === 'Quarter Day') { } else if (view_mode === VIEW_MODE.QUARTER_DAY) {
this.options.step = 24 / 4; this.options.step = 24 / 4;
this.options.column_width = 38; this.options.column_width = 38;
} else if (view_mode === 'Week') { } else if (view_mode === VIEW_MODE.WEEK) {
this.options.step = 24 * 7; this.options.step = 24 * 7;
this.options.column_width = 140; this.options.column_width = 140;
} else if (view_mode === 'Month') { } else if (view_mode === VIEW_MODE.MONTH) {
this.options.step = 24 * 30; this.options.step = 24 * 30;
this.options.column_width = 120; this.options.column_width = 120;
} else if (view_mode === 'Year') { } else if (view_mode === VIEW_MODE.YEAR) {
this.options.step = 24 * 365; this.options.step = 24 * 365;
this.options.column_width = 120; this.options.column_width = 120;
} }
@ -223,13 +225,13 @@ export default class Gantt {
this.gantt_end = date_utils.start_of(this.gantt_end, 'day'); this.gantt_end = date_utils.start_of(this.gantt_end, 'day');
// add date padding on both sides // add date padding on both sides
if (this.view_is(['Quarter Day', 'Half Day'])) { if (this.view_is([VIEW_MODE.QUARTER_DAY, VIEW_MODE.HALF_DAY])) {
this.gantt_start = date_utils.add(this.gantt_start, -7, 'day'); this.gantt_start = date_utils.add(this.gantt_start, -7, 'day');
this.gantt_end = date_utils.add(this.gantt_end, 7, 'day'); this.gantt_end = date_utils.add(this.gantt_end, 7, 'day');
} else if (this.view_is('Month')) { } else if (this.view_is(VIEW_MODE.MONTH)) {
this.gantt_start = date_utils.start_of(this.gantt_start, 'year'); this.gantt_start = date_utils.start_of(this.gantt_start, 'year');
this.gantt_end = date_utils.add(this.gantt_end, 1, 'year'); this.gantt_end = date_utils.add(this.gantt_end, 1, 'year');
} else if (this.view_is('Year')) { } else if (this.view_is(VIEW_MODE.YEAR)) {
this.gantt_start = date_utils.add(this.gantt_start, -2, 'year'); this.gantt_start = date_utils.add(this.gantt_start, -2, 'year');
this.gantt_end = date_utils.add(this.gantt_end, 2, 'year'); this.gantt_end = date_utils.add(this.gantt_end, 2, 'year');
} else { } else {
@ -246,9 +248,9 @@ export default class Gantt {
if (!cur_date) { if (!cur_date) {
cur_date = date_utils.clone(this.gantt_start); cur_date = date_utils.clone(this.gantt_start);
} else { } else {
if (this.view_is('Year')) { if (this.view_is(VIEW_MODE.YEAR)) {
cur_date = date_utils.add(cur_date, 1, 'year'); cur_date = date_utils.add(cur_date, 1, 'year');
} else if (this.view_is('Month')) { } else if (this.view_is(VIEW_MODE.MONTH)) {
cur_date = date_utils.add(cur_date, 1, 'month'); cur_date = date_utils.add(cur_date, 1, 'month');
} else { } else {
cur_date = date_utils.add( cur_date = date_utils.add(
@ -377,19 +379,19 @@ export default class Gantt {
for (let date of this.dates) { for (let date of this.dates) {
let tick_class = 'tick'; let tick_class = 'tick';
// thick tick for monday // thick tick for monday
if (this.view_is('Day') && date.getDate() === 1) { if (this.view_is(VIEW_MODE.DAY) && date.getDate() === 1) {
tick_class += ' thick'; tick_class += ' thick';
} }
// thick tick for first week // thick tick for first week
if ( if (
this.view_is('Week') && this.view_is(VIEW_MODE.WEEK) &&
date.getDate() >= 1 && date.getDate() >= 1 &&
date.getDate() < 8 date.getDate() < 8
) { ) {
tick_class += ' thick'; tick_class += ' thick';
} }
// thick ticks for quarters // thick ticks for quarters
if (this.view_is('Month') && (date.getMonth() + 1) % 3 === 0) { if (this.view_is(VIEW_MODE.MONTH) && (date.getMonth() + 1) % 3 === 0) {
tick_class += ' thick'; tick_class += ' thick';
} }
@ -399,7 +401,7 @@ export default class Gantt {
append_to: this.layers.grid append_to: this.layers.grid
}); });
if (this.view_is('Month')) { if (this.view_is(VIEW_MODE.MONTH)) {
tick_x += tick_x +=
date_utils.get_days_in_month(date) * date_utils.get_days_in_month(date) *
this.options.column_width / this.options.column_width /
@ -412,7 +414,7 @@ export default class Gantt {
make_grid_highlights() { make_grid_highlights() {
// highlight today's date // highlight today's date
if (this.view_is('Day')) { if (this.view_is(VIEW_MODE.DAY)) {
const x = const x =
date_utils.diff(date_utils.today(), this.gantt_start, 'hour') / date_utils.diff(date_utils.today(), this.gantt_start, 'hour') /
this.options.step * this.options.step *
@ -817,7 +819,7 @@ export default class Gantt {
rem, rem,
position; position;
if (this.view_is('Week')) { if (this.view_is(VIEW_MODE.WEEK)) {
rem = dx % (this.options.column_width / 7); rem = dx % (this.options.column_width / 7);
position = position =
odx - odx -
@ -825,7 +827,7 @@ export default class Gantt {
(rem < this.options.column_width / 14 (rem < this.options.column_width / 14
? 0 ? 0
: this.options.column_width / 7); : this.options.column_width / 7);
} else if (this.view_is('Month')) { } else if (this.view_is(VIEW_MODE.MONTH)) {
rem = dx % (this.options.column_width / 30); rem = dx % (this.options.column_width / 30);
position = position =
odx - odx -
@ -920,6 +922,8 @@ export default class Gantt {
} }
} }
Gantt.VIEW_MODE = VIEW_MODE;
function generate_id(task) { function generate_id(task) {
return ( return (
task.name + task.name +