react-big-schedule 4.0.0 → 4.1.0
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.
- package/CHANGELOG.md +124 -122
- package/LICENSE +20 -20
- package/README.md +79 -79
- package/dist/components/AddMore.js +48 -0
- package/dist/components/AddMorePopover.js +108 -0
- package/dist/components/AgendaEventItem.js +76 -0
- package/dist/components/AgendaResourceEvents.js +108 -0
- package/dist/components/AgendaView.js +52 -0
- package/dist/components/BodyView.js +58 -0
- package/dist/components/DnDContext.js +148 -0
- package/dist/components/DnDSource.js +121 -0
- package/dist/components/EventItem.js +695 -0
- package/dist/components/EventItemPopover.js +143 -0
- package/dist/components/HeaderView.js +132 -0
- package/dist/components/ResourceEvents.js +400 -0
- package/dist/components/ResourceView.js +119 -0
- package/dist/components/SchedulerData.js +1179 -0
- package/dist/components/SchedulerHeader.js +162 -0
- package/dist/components/SelectedArea.js +33 -0
- package/dist/components/Summary.js +60 -0
- package/dist/components/WrapperFun.js +18 -0
- package/dist/components/index.js +580 -0
- package/dist/config/default.js +42 -0
- package/dist/config/scheduler.js +109 -0
- package/dist/css/style.css +252 -0
- package/dist/helper/behaviors.js +108 -0
- package/dist/helper/utility.js +20 -0
- package/dist/index.js +16 -0
- package/dist/main.js +8 -0
- package/dist/sample-data/sample1.js +336 -0
- package/package.json +83 -87
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _antd = require("antd");
|
|
10
|
+
var _EventItemPopover = _interopRequireDefault(require("./EventItemPopover"));
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
12
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
13
|
+
function AgendaEventItem(props) {
|
|
14
|
+
var eventItem = props.eventItem,
|
|
15
|
+
isStart = props.isStart,
|
|
16
|
+
isEnd = props.isEnd,
|
|
17
|
+
eventItemClick = props.eventItemClick,
|
|
18
|
+
schedulerData = props.schedulerData,
|
|
19
|
+
eventItemTemplateResolver = props.eventItemTemplateResolver;
|
|
20
|
+
var config = schedulerData.config,
|
|
21
|
+
behaviors = schedulerData.behaviors;
|
|
22
|
+
var roundCls = isStart ? isEnd ? 'round-all' : 'round-head' : isEnd ? 'round-tail' : 'round-none';
|
|
23
|
+
var bgColor = eventItem.bgColor || config.defaultEventBgColor;
|
|
24
|
+
var titleText = behaviors.getEventTextFunc(schedulerData, eventItem);
|
|
25
|
+
var eventItemTemplate = /*#__PURE__*/_react["default"].createElement("div", {
|
|
26
|
+
className: "".concat(roundCls, " event-item"),
|
|
27
|
+
key: eventItem.id,
|
|
28
|
+
style: {
|
|
29
|
+
height: config.eventItemHeight,
|
|
30
|
+
maxWidth: config.agendaMaxEventWidth,
|
|
31
|
+
backgroundColor: bgColor
|
|
32
|
+
}
|
|
33
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
34
|
+
style: {
|
|
35
|
+
marginLeft: '10px',
|
|
36
|
+
lineHeight: "".concat(config.eventItemHeight, "px")
|
|
37
|
+
}
|
|
38
|
+
}, titleText));
|
|
39
|
+
if (eventItemTemplateResolver) {
|
|
40
|
+
eventItemTemplate = eventItemTemplateResolver(schedulerData, eventItem, bgColor, isStart, isEnd, 'event-item', config.eventItemHeight, config.agendaMaxEventWidth);
|
|
41
|
+
}
|
|
42
|
+
var handleClick = function handleClick() {
|
|
43
|
+
return eventItemClick === null || eventItemClick === void 0 ? void 0 : eventItemClick(schedulerData, eventItem);
|
|
44
|
+
};
|
|
45
|
+
var eventLink = /*#__PURE__*/_react["default"].createElement("a", {
|
|
46
|
+
className: "day-event",
|
|
47
|
+
onClick: handleClick
|
|
48
|
+
}, eventItemTemplate);
|
|
49
|
+
var content = /*#__PURE__*/_react["default"].createElement(_EventItemPopover["default"], _extends({}, props, {
|
|
50
|
+
title: eventItem.title,
|
|
51
|
+
startTime: eventItem.start,
|
|
52
|
+
endTime: eventItem.end,
|
|
53
|
+
statusColor: bgColor
|
|
54
|
+
}));
|
|
55
|
+
return config.eventItemPopoverEnabled ? /*#__PURE__*/_react["default"].createElement(_antd.Popover, {
|
|
56
|
+
placement: "bottomLeft",
|
|
57
|
+
content: content,
|
|
58
|
+
trigger: "hover",
|
|
59
|
+
overlayClassName: "scheduler-agenda-event-popover"
|
|
60
|
+
}, eventLink) : /*#__PURE__*/_react["default"].createElement("span", null, eventLink);
|
|
61
|
+
}
|
|
62
|
+
AgendaEventItem.propTypes = {
|
|
63
|
+
schedulerData: _propTypes["default"].object.isRequired,
|
|
64
|
+
eventItem: _propTypes["default"].object.isRequired,
|
|
65
|
+
isStart: _propTypes["default"].bool.isRequired,
|
|
66
|
+
isEnd: _propTypes["default"].bool.isRequired,
|
|
67
|
+
subtitleGetter: _propTypes["default"].func,
|
|
68
|
+
eventItemClick: _propTypes["default"].func,
|
|
69
|
+
viewEventClick: _propTypes["default"].func,
|
|
70
|
+
viewEventText: _propTypes["default"].string,
|
|
71
|
+
viewEvent2Click: _propTypes["default"].func,
|
|
72
|
+
viewEvent2Text: _propTypes["default"].string,
|
|
73
|
+
eventItemTemplateResolver: _propTypes["default"].func
|
|
74
|
+
};
|
|
75
|
+
var _default = AgendaEventItem;
|
|
76
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _AgendaEventItem = _interopRequireDefault(require("./AgendaEventItem"));
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
11
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
12
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
13
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
14
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
15
|
+
function AgendaResourceEvents(props) {
|
|
16
|
+
var schedulerData = props.schedulerData,
|
|
17
|
+
resourceEvents = props.resourceEvents,
|
|
18
|
+
slotClickedFunc = props.slotClickedFunc,
|
|
19
|
+
slotItemTemplateResolver = props.slotItemTemplateResolver;
|
|
20
|
+
var startDate = schedulerData.startDate,
|
|
21
|
+
endDate = schedulerData.endDate,
|
|
22
|
+
config = schedulerData.config,
|
|
23
|
+
localeDayjs = schedulerData.localeDayjs;
|
|
24
|
+
var width = schedulerData.getResourceTableWidth() - 2;
|
|
25
|
+
var events = [];
|
|
26
|
+
var _iterator = _createForOfIteratorHelper(resourceEvents.headerItems),
|
|
27
|
+
_step;
|
|
28
|
+
try {
|
|
29
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
30
|
+
var item = _step.value;
|
|
31
|
+
var start = localeDayjs(new Date(startDate));
|
|
32
|
+
var end = localeDayjs(endDate).add(1, 'days');
|
|
33
|
+
var headerStart = localeDayjs(new Date(item.start));
|
|
34
|
+
var headerEnd = localeDayjs(new Date(item.end));
|
|
35
|
+
if (start === headerStart && end === headerEnd) {
|
|
36
|
+
var _iterator2 = _createForOfIteratorHelper(item.events),
|
|
37
|
+
_step2;
|
|
38
|
+
try {
|
|
39
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
40
|
+
var evt = _step2.value;
|
|
41
|
+
var durationStart = localeDayjs(new Date(startDate));
|
|
42
|
+
var durationEnd = localeDayjs(endDate).add(1, 'days');
|
|
43
|
+
var eventStart = localeDayjs(evt.eventItem.start);
|
|
44
|
+
var eventEnd = localeDayjs(evt.eventItem.end);
|
|
45
|
+
var isStart = eventStart >= durationStart;
|
|
46
|
+
var isEnd = eventEnd < durationEnd;
|
|
47
|
+
var eventItem = /*#__PURE__*/_react["default"].createElement(_AgendaEventItem["default"], _extends({}, props, {
|
|
48
|
+
key: evt.eventItem.id,
|
|
49
|
+
eventItem: evt.eventItem,
|
|
50
|
+
isStart: isStart,
|
|
51
|
+
isEnd: isEnd
|
|
52
|
+
}));
|
|
53
|
+
events.push(eventItem);
|
|
54
|
+
}
|
|
55
|
+
} catch (err) {
|
|
56
|
+
_iterator2.e(err);
|
|
57
|
+
} finally {
|
|
58
|
+
_iterator2.f();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
} catch (err) {
|
|
63
|
+
_iterator.e(err);
|
|
64
|
+
} finally {
|
|
65
|
+
_iterator.f();
|
|
66
|
+
}
|
|
67
|
+
var slotItemContent = slotClickedFunc ? /*#__PURE__*/_react["default"].createElement("a", {
|
|
68
|
+
onClick: function onClick() {
|
|
69
|
+
return slotClickedFunc(schedulerData, resourceEvents);
|
|
70
|
+
}
|
|
71
|
+
}, resourceEvents.slotName) : /*#__PURE__*/_react["default"].createElement("span", null, resourceEvents.slotName);
|
|
72
|
+
var slotItem = /*#__PURE__*/_react["default"].createElement("div", {
|
|
73
|
+
style: {
|
|
74
|
+
width: width
|
|
75
|
+
},
|
|
76
|
+
title: resourceEvents.slotName,
|
|
77
|
+
className: "overflow-text header2-text"
|
|
78
|
+
}, slotItemContent);
|
|
79
|
+
if (slotItemTemplateResolver) {
|
|
80
|
+
var temp = slotItemTemplateResolver(schedulerData, resourceEvents, slotClickedFunc, width, 'overflow-text header2-text');
|
|
81
|
+
if (temp) {
|
|
82
|
+
slotItem = temp;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return /*#__PURE__*/_react["default"].createElement("tr", {
|
|
86
|
+
style: {
|
|
87
|
+
minHeight: config.eventItemLineHeight + 2
|
|
88
|
+
}
|
|
89
|
+
}, /*#__PURE__*/_react["default"].createElement("td", {
|
|
90
|
+
"data-resource-id": resourceEvents.slotId
|
|
91
|
+
}, slotItem), /*#__PURE__*/_react["default"].createElement("td", null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
92
|
+
className: "day-event-container"
|
|
93
|
+
}, events)));
|
|
94
|
+
}
|
|
95
|
+
AgendaResourceEvents.propTypes = {
|
|
96
|
+
schedulerData: _propTypes["default"].object.isRequired,
|
|
97
|
+
resourceEvents: _propTypes["default"].object.isRequired,
|
|
98
|
+
subtitleGetter: _propTypes["default"].func,
|
|
99
|
+
eventItemClick: _propTypes["default"].func,
|
|
100
|
+
viewEventClick: _propTypes["default"].func,
|
|
101
|
+
viewEventText: _propTypes["default"].string,
|
|
102
|
+
viewEvent2Click: _propTypes["default"].func,
|
|
103
|
+
viewEvent2Text: _propTypes["default"].string,
|
|
104
|
+
slotClickedFunc: _propTypes["default"].func,
|
|
105
|
+
slotItemTemplateResolver: _propTypes["default"].func
|
|
106
|
+
};
|
|
107
|
+
var _default = AgendaResourceEvents;
|
|
108
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _AgendaResourceEvents = _interopRequireDefault(require("./AgendaResourceEvents"));
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
11
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
12
|
+
function AgendaView(props) {
|
|
13
|
+
var schedulerData = props.schedulerData;
|
|
14
|
+
var config = schedulerData.config,
|
|
15
|
+
renderData = schedulerData.renderData;
|
|
16
|
+
var agendaResourceTableWidth = schedulerData.getResourceTableWidth();
|
|
17
|
+
var tableHeaderHeight = schedulerData.getTableHeaderHeight();
|
|
18
|
+
var resourceName = schedulerData.isEventPerspective ? config.taskName : config.resourceName;
|
|
19
|
+
var agendaViewHeader = config.agendaViewHeader;
|
|
20
|
+
var resourceEventsList = renderData.map(function (item) {
|
|
21
|
+
return /*#__PURE__*/_react["default"].createElement(_AgendaResourceEvents["default"], _extends({}, props, {
|
|
22
|
+
resourceEvents: item,
|
|
23
|
+
key: item.slotId
|
|
24
|
+
}));
|
|
25
|
+
});
|
|
26
|
+
return /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, /*#__PURE__*/_react["default"].createElement("table", {
|
|
27
|
+
className: "scheduler-table"
|
|
28
|
+
}, /*#__PURE__*/_react["default"].createElement("thead", null, /*#__PURE__*/_react["default"].createElement("tr", {
|
|
29
|
+
style: {
|
|
30
|
+
height: tableHeaderHeight
|
|
31
|
+
}
|
|
32
|
+
}, /*#__PURE__*/_react["default"].createElement("th", {
|
|
33
|
+
style: {
|
|
34
|
+
width: agendaResourceTableWidth
|
|
35
|
+
},
|
|
36
|
+
className: "header3-text"
|
|
37
|
+
}, resourceName), /*#__PURE__*/_react["default"].createElement("th", {
|
|
38
|
+
className: "header3-text"
|
|
39
|
+
}, agendaViewHeader))), /*#__PURE__*/_react["default"].createElement("tbody", null, resourceEventsList))));
|
|
40
|
+
}
|
|
41
|
+
AgendaView.propTypes = {
|
|
42
|
+
schedulerData: _propTypes["default"].object.isRequired,
|
|
43
|
+
subtitleGetter: _propTypes["default"].func,
|
|
44
|
+
eventItemClick: _propTypes["default"].func,
|
|
45
|
+
viewEventClick: _propTypes["default"].func,
|
|
46
|
+
viewEventText: _propTypes["default"].string,
|
|
47
|
+
viewEvent2Click: _propTypes["default"].func,
|
|
48
|
+
viewEvent2Text: _propTypes["default"].string,
|
|
49
|
+
slotClickedFunc: _propTypes["default"].func
|
|
50
|
+
};
|
|
51
|
+
var _default = AgendaView;
|
|
52
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
10
|
+
function BodyView(_ref) {
|
|
11
|
+
var schedulerData = _ref.schedulerData;
|
|
12
|
+
var renderData = schedulerData.renderData,
|
|
13
|
+
headers = schedulerData.headers,
|
|
14
|
+
config = schedulerData.config,
|
|
15
|
+
behaviors = schedulerData.behaviors;
|
|
16
|
+
var width = schedulerData.getContentCellWidth();
|
|
17
|
+
var tableRows = renderData.filter(function (o) {
|
|
18
|
+
return o.render;
|
|
19
|
+
}).map(function (_ref2) {
|
|
20
|
+
var slotId = _ref2.slotId,
|
|
21
|
+
groupOnly = _ref2.groupOnly,
|
|
22
|
+
rowHeight = _ref2.rowHeight;
|
|
23
|
+
var rowCells = headers.map(function (header, index) {
|
|
24
|
+
var key = "".concat(slotId, "_").concat(header.time);
|
|
25
|
+
var style = index === headers.length - 1 ? {} : {
|
|
26
|
+
width: width
|
|
27
|
+
};
|
|
28
|
+
if (!!header.nonWorkingTime) {
|
|
29
|
+
style.backgroundColor = config.nonWorkingTimeBodyBgColor;
|
|
30
|
+
}
|
|
31
|
+
if (groupOnly) {
|
|
32
|
+
style.backgroundColor = config.groupOnlySlotColor;
|
|
33
|
+
}
|
|
34
|
+
if (!!behaviors.getNonAgendaViewBodyCellBgColorFunc) {
|
|
35
|
+
var cellBgColor = behaviors.getNonAgendaViewBodyCellBgColorFunc(schedulerData, slotId, header);
|
|
36
|
+
if (!!cellBgColor) {
|
|
37
|
+
style.backgroundColor = cellBgColor;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return /*#__PURE__*/_react["default"].createElement("td", {
|
|
41
|
+
key: key,
|
|
42
|
+
style: style
|
|
43
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null));
|
|
44
|
+
});
|
|
45
|
+
return /*#__PURE__*/_react["default"].createElement("tr", {
|
|
46
|
+
key: slotId,
|
|
47
|
+
style: {
|
|
48
|
+
height: rowHeight
|
|
49
|
+
}
|
|
50
|
+
}, rowCells);
|
|
51
|
+
});
|
|
52
|
+
return /*#__PURE__*/_react["default"].createElement("tbody", null, tableRows);
|
|
53
|
+
}
|
|
54
|
+
BodyView.propTypes = {
|
|
55
|
+
schedulerData: _propTypes["default"].object.isRequired
|
|
56
|
+
};
|
|
57
|
+
var _default = BodyView;
|
|
58
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _reactDnd = require("react-dnd");
|
|
8
|
+
var _index = require("./index");
|
|
9
|
+
var _default = require("../config/default");
|
|
10
|
+
var _utility = require("../helper/utility");
|
|
11
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
12
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
13
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
14
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
15
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
16
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
17
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
18
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
19
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
20
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
21
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
22
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
23
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
24
|
+
var DnDContext = /*#__PURE__*/_createClass(function DnDContext(sources, DecoratedComponent) {
|
|
25
|
+
var _this = this;
|
|
26
|
+
_classCallCheck(this, DnDContext);
|
|
27
|
+
_defineProperty(this, "getDropSpec", function () {
|
|
28
|
+
return {
|
|
29
|
+
drop: function drop(props, monitor, component) {
|
|
30
|
+
var schedulerData = props.schedulerData,
|
|
31
|
+
resourceEvents = props.resourceEvents;
|
|
32
|
+
var cellUnit = schedulerData.cellUnit,
|
|
33
|
+
localeDayjs = schedulerData.localeDayjs;
|
|
34
|
+
var type = monitor.getItemType();
|
|
35
|
+
var pos = (0, _utility.getPos)(component.eventContainer);
|
|
36
|
+
var cellWidth = schedulerData.getContentCellWidth();
|
|
37
|
+
var initialStartTime = null,
|
|
38
|
+
initialEndTime = null;
|
|
39
|
+
if (type === _default.DnDTypes.EVENT) {
|
|
40
|
+
var initialPoint = monitor.getInitialClientOffset();
|
|
41
|
+
var initialLeftIndex = Math.floor((initialPoint.x - pos.x) / cellWidth);
|
|
42
|
+
initialStartTime = resourceEvents.headerItems[initialLeftIndex].start;
|
|
43
|
+
initialEndTime = resourceEvents.headerItems[initialLeftIndex].end;
|
|
44
|
+
if (cellUnit !== _index.CellUnit.Hour) initialEndTime = localeDayjs(new Date(resourceEvents.headerItems[initialLeftIndex].start)).hour(23).minute(59).second(59).format(_index.DATETIME_FORMAT);
|
|
45
|
+
}
|
|
46
|
+
var point = monitor.getClientOffset();
|
|
47
|
+
var leftIndex = Math.floor((point.x - pos.x) / cellWidth);
|
|
48
|
+
var startTime = resourceEvents.headerItems[leftIndex].start;
|
|
49
|
+
var endTime = resourceEvents.headerItems[leftIndex].end;
|
|
50
|
+
if (cellUnit !== _index.CellUnit.Hour) endTime = localeDayjs(new Date(resourceEvents.headerItems[leftIndex].start)).hour(23).minute(59).second(59).format(_index.DATETIME_FORMAT);
|
|
51
|
+
return {
|
|
52
|
+
slotId: resourceEvents.slotId,
|
|
53
|
+
slotName: resourceEvents.slotName,
|
|
54
|
+
start: startTime,
|
|
55
|
+
end: endTime,
|
|
56
|
+
initialStart: initialStartTime,
|
|
57
|
+
initialEnd: initialEndTime
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
hover: function hover(props, monitor, component) {
|
|
61
|
+
var schedulerData = props.schedulerData,
|
|
62
|
+
resourceEvents = props.resourceEvents,
|
|
63
|
+
movingEvent = props.movingEvent;
|
|
64
|
+
var cellUnit = schedulerData.cellUnit,
|
|
65
|
+
config = schedulerData.config,
|
|
66
|
+
viewType = schedulerData.viewType,
|
|
67
|
+
localeDayjs = schedulerData.localeDayjs;
|
|
68
|
+
_this.config = config;
|
|
69
|
+
var item = monitor.getItem();
|
|
70
|
+
var type = monitor.getItemType();
|
|
71
|
+
var pos = (0, _utility.getPos)(component.eventContainer);
|
|
72
|
+
var cellWidth = schedulerData.getContentCellWidth();
|
|
73
|
+
var initialStart = null,
|
|
74
|
+
initialEnd = null;
|
|
75
|
+
if (type === _default.DnDTypes.EVENT) {
|
|
76
|
+
var initialPoint = monitor.getInitialClientOffset();
|
|
77
|
+
var initialLeftIndex = Math.floor((initialPoint.x - pos.x) / cellWidth);
|
|
78
|
+
initialStart = resourceEvents.headerItems[initialLeftIndex].start;
|
|
79
|
+
initialEnd = resourceEvents.headerItems[initialLeftIndex].end;
|
|
80
|
+
if (cellUnit !== _index.CellUnit.Hour) initialEnd = localeDayjs(new Date(resourceEvents.headerItems[initialLeftIndex].start)).hour(23).minute(59).second(59).format(_index.DATETIME_FORMAT);
|
|
81
|
+
}
|
|
82
|
+
var point = monitor.getClientOffset();
|
|
83
|
+
var leftIndex = Math.floor((point.x - pos.x) / cellWidth);
|
|
84
|
+
if (!resourceEvents.headerItems[leftIndex]) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
var newStart = resourceEvents.headerItems[leftIndex].start;
|
|
88
|
+
var newEnd = resourceEvents.headerItems[leftIndex].end;
|
|
89
|
+
if (cellUnit !== _index.CellUnit.Hour) newEnd = localeDayjs(new Date(resourceEvents.headerItems[leftIndex].start)).hour(23).minute(59).second(59).format(_index.DATETIME_FORMAT);
|
|
90
|
+
var slotId = resourceEvents.slotId,
|
|
91
|
+
slotName = resourceEvents.slotName;
|
|
92
|
+
var action = 'New';
|
|
93
|
+
var isEvent = type === _default.DnDTypes.EVENT;
|
|
94
|
+
if (isEvent) {
|
|
95
|
+
var event = item;
|
|
96
|
+
if (config.relativeMove) {
|
|
97
|
+
newStart = localeDayjs(event.start).add(localeDayjs(newStart).diff(localeDayjs(new Date(initialStart))), 'ms').format(_index.DATETIME_FORMAT);
|
|
98
|
+
} else {
|
|
99
|
+
if (viewType !== _index.ViewType.Day) {
|
|
100
|
+
var tmpDayjs = localeDayjs(newStart);
|
|
101
|
+
newStart = localeDayjs(event.start).year(tmpDayjs.year()).month(tmpDayjs.month()).date(tmpDayjs.date()).format(_index.DATETIME_FORMAT);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
newEnd = localeDayjs(newStart).add(localeDayjs(event.end).diff(localeDayjs(event.start)), 'ms').format(_index.DATETIME_FORMAT);
|
|
105
|
+
|
|
106
|
+
//if crossResourceMove disabled, slot returns old value
|
|
107
|
+
if (config.crossResourceMove === false) {
|
|
108
|
+
slotId = schedulerData._getEventSlotId(item);
|
|
109
|
+
slotName = undefined;
|
|
110
|
+
var slot = schedulerData.getSlotById(slotId);
|
|
111
|
+
if (!!slot) slotName = slot.name;
|
|
112
|
+
}
|
|
113
|
+
action = 'Move';
|
|
114
|
+
}
|
|
115
|
+
if (!!movingEvent) {
|
|
116
|
+
movingEvent(schedulerData, slotId, slotName, newStart, newEnd, action, type, item);
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
canDrop: function canDrop(props, monitor) {
|
|
120
|
+
var schedulerData = props.schedulerData,
|
|
121
|
+
resourceEvents = props.resourceEvents;
|
|
122
|
+
var item = monitor.getItem();
|
|
123
|
+
if (schedulerData._isResizing()) return false;
|
|
124
|
+
var config = schedulerData.config;
|
|
125
|
+
return config.movable && !resourceEvents.groupOnly && (item.movable == undefined || item.movable !== false);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
});
|
|
129
|
+
_defineProperty(this, "getDropCollect", function (connect, monitor) {
|
|
130
|
+
return {
|
|
131
|
+
connectDropTarget: connect.dropTarget(),
|
|
132
|
+
isOver: monitor.isOver()
|
|
133
|
+
};
|
|
134
|
+
});
|
|
135
|
+
_defineProperty(this, "getDropTarget", function (dragAndDropEnabled) {
|
|
136
|
+
return dragAndDropEnabled ? (0, _reactDnd.DropTarget)(_toConsumableArray(_this.sourceMap.keys()), _this.getDropSpec(), _this.getDropCollect)(_this.DecoratedComponent) : _this.DecoratedComponent;
|
|
137
|
+
});
|
|
138
|
+
_defineProperty(this, "getDndSource", function () {
|
|
139
|
+
var dndType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _default.DnDTypes.EVENT;
|
|
140
|
+
return _this.sourceMap.get(dndType);
|
|
141
|
+
});
|
|
142
|
+
this.sourceMap = new Map();
|
|
143
|
+
sources.forEach(function (item) {
|
|
144
|
+
_this.sourceMap.set(item.dndType, item);
|
|
145
|
+
});
|
|
146
|
+
this.DecoratedComponent = DecoratedComponent;
|
|
147
|
+
});
|
|
148
|
+
exports["default"] = DnDContext;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _reactDnd = require("react-dnd");
|
|
8
|
+
var _index = require("./index");
|
|
9
|
+
var _default = require("../config/default");
|
|
10
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
11
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
12
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
13
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
14
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
16
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
17
|
+
var DnDSource = /*#__PURE__*/_createClass(function DnDSource(resolveDragObjFunc, DecoratedComponent, DnDEnabled) {
|
|
18
|
+
var _this = this;
|
|
19
|
+
var dndType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _default.DnDTypes.EVENT;
|
|
20
|
+
_classCallCheck(this, DnDSource);
|
|
21
|
+
_defineProperty(this, "getDragSpec", function () {
|
|
22
|
+
return {
|
|
23
|
+
beginDrag: function beginDrag(props, monitor, component) {
|
|
24
|
+
return _this.resolveDragObjFunc(props);
|
|
25
|
+
},
|
|
26
|
+
endDrag: function endDrag(props, monitor, component) {
|
|
27
|
+
if (!monitor.didDrop()) return;
|
|
28
|
+
var moveEvent = props.moveEvent,
|
|
29
|
+
newEvent = props.newEvent,
|
|
30
|
+
schedulerData = props.schedulerData;
|
|
31
|
+
var events = schedulerData.events,
|
|
32
|
+
config = schedulerData.config,
|
|
33
|
+
viewType = schedulerData.viewType,
|
|
34
|
+
localeDayjs = schedulerData.localeDayjs;
|
|
35
|
+
var item = monitor.getItem();
|
|
36
|
+
var type = monitor.getItemType();
|
|
37
|
+
var dropResult = monitor.getDropResult();
|
|
38
|
+
var slotId = dropResult.slotId,
|
|
39
|
+
slotName = dropResult.slotName;
|
|
40
|
+
var newStart = dropResult.start,
|
|
41
|
+
newEnd = dropResult.end;
|
|
42
|
+
var initialStart = dropResult.initialStart,
|
|
43
|
+
initialEnd = dropResult.initialEnd;
|
|
44
|
+
var action = 'New';
|
|
45
|
+
var isEvent = type === _default.DnDTypes.EVENT;
|
|
46
|
+
if (isEvent) {
|
|
47
|
+
var event = item;
|
|
48
|
+
if (config.relativeMove) {
|
|
49
|
+
newStart = localeDayjs(event.start).add(localeDayjs(newStart).diff(localeDayjs(new Date(initialStart))), 'ms').format(_index.DATETIME_FORMAT);
|
|
50
|
+
} else {
|
|
51
|
+
if (viewType !== _default.ViewType.Day) {
|
|
52
|
+
var tmpDayjs = localeDayjs(newStart);
|
|
53
|
+
newStart = localeDayjs(event.start).year(tmpDayjs.year()).month(tmpDayjs.month()).date(tmpDayjs.date()).format(_index.DATETIME_FORMAT);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
newEnd = localeDayjs(newStart).add(localeDayjs(event.end).diff(localeDayjs(event.start)), 'ms').format(_index.DATETIME_FORMAT);
|
|
57
|
+
|
|
58
|
+
//if crossResourceMove disabled, slot returns old value
|
|
59
|
+
if (config.crossResourceMove === false) {
|
|
60
|
+
slotId = schedulerData._getEventSlotId(item);
|
|
61
|
+
slotName = undefined;
|
|
62
|
+
var slot = schedulerData.getSlotById(slotId);
|
|
63
|
+
if (!!slot) slotName = slot.name;
|
|
64
|
+
}
|
|
65
|
+
action = 'Move';
|
|
66
|
+
}
|
|
67
|
+
var hasConflict = false;
|
|
68
|
+
if (config.checkConflict) {
|
|
69
|
+
var start = localeDayjs(newStart),
|
|
70
|
+
end = localeDayjs(newEnd);
|
|
71
|
+
events.forEach(function (e) {
|
|
72
|
+
if (schedulerData._getEventSlotId(e) === slotId && (!isEvent || e.id !== item.id)) {
|
|
73
|
+
var eStart = localeDayjs(e.start),
|
|
74
|
+
eEnd = localeDayjs(e.end);
|
|
75
|
+
if (start >= eStart && start < eEnd || end > eStart && end <= eEnd || eStart >= start && eStart < end || eEnd > start && eEnd <= end) hasConflict = true;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
if (hasConflict) {
|
|
80
|
+
var conflictOccurred = props.conflictOccurred;
|
|
81
|
+
if (conflictOccurred != undefined) {
|
|
82
|
+
conflictOccurred(schedulerData, action, item, type, slotId, slotName, newStart, newEnd);
|
|
83
|
+
} else {
|
|
84
|
+
console.log('Conflict occurred, set conflictOccurred func in Scheduler to handle it');
|
|
85
|
+
}
|
|
86
|
+
} else {
|
|
87
|
+
if (isEvent) {
|
|
88
|
+
if (moveEvent !== undefined) {
|
|
89
|
+
moveEvent(schedulerData, item, slotId, slotName, newStart, newEnd);
|
|
90
|
+
}
|
|
91
|
+
} else {
|
|
92
|
+
if (newEvent !== undefined) newEvent(schedulerData, slotId, slotName, newStart, newEnd, type, item);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
canDrag: function canDrag(props) {
|
|
97
|
+
var schedulerData = props.schedulerData,
|
|
98
|
+
resourceEvents = props.resourceEvents;
|
|
99
|
+
var item = _this.resolveDragObjFunc(props);
|
|
100
|
+
if (schedulerData._isResizing()) return false;
|
|
101
|
+
var config = schedulerData.config;
|
|
102
|
+
return config.movable && (resourceEvents == undefined || !resourceEvents.groupOnly) && (item.movable == undefined || item.movable !== false);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
_defineProperty(this, "getDragCollect", function (connect, monitor) {
|
|
107
|
+
return {
|
|
108
|
+
connectDragSource: connect.dragSource(),
|
|
109
|
+
isDragging: monitor.isDragging(),
|
|
110
|
+
connectDragPreview: connect.dragPreview()
|
|
111
|
+
};
|
|
112
|
+
});
|
|
113
|
+
_defineProperty(this, "getDragSource", function () {
|
|
114
|
+
return _this.dragSource;
|
|
115
|
+
});
|
|
116
|
+
this.resolveDragObjFunc = resolveDragObjFunc;
|
|
117
|
+
this.DecoratedComponent = DecoratedComponent;
|
|
118
|
+
this.dndType = dndType;
|
|
119
|
+
this.dragSource = DnDEnabled ? (0, _reactDnd.DragSource)(this.dndType, this.getDragSpec(), this.getDragCollect)(this.DecoratedComponent) : this.DecoratedComponent;
|
|
120
|
+
});
|
|
121
|
+
exports["default"] = DnDSource;
|