instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
122 lines (95 loc) • 4.46 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactRedux = require('react-redux');
var _moment = require('../common/moment');
var _moment2 = _interopRequireDefault(_moment);
var _constants = require('../common/constants');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var work_start = 6;
var work_end = 24;
var event_width = 140;
var DayDetailStatic = function (_Component) {
(0, _inherits3.default)(DayDetailStatic, _Component);
function DayDetailStatic() {
(0, _classCallCheck3.default)(this, DayDetailStatic);
return (0, _possibleConstructorReturn3.default)(this, (DayDetailStatic.__proto__ || (0, _getPrototypeOf2.default)(DayDetailStatic)).apply(this, arguments));
}
(0, _createClass3.default)(DayDetailStatic, [{
key: 'render',
value: function render() {
var _this2 = this;
var working_hours = [];
for (var i = work_start; i < work_end; i = i + 1) {
working_hours.push(i);
}
return _react2.default.createElement(
'div',
{ style: { borderLeftWidth: 1, borderLeftColor: (0, _constants.color)('black', 'bright'), borderLeftStyle: 'solid', display: 'flex', flexDirection: 'column', alignItems: 'stretch', width: 200, position: 'relative', overflow: 'hidden' } },
working_hours.map(function (hour) {
return _react2.default.createElement(Hour, { hour: hour, key: hour });
}),
this.props.events.map(function (event) {
return _react2.default.createElement(Event, { event: event, key: event.id, currentDay: _this2.props.current_day });
})
);
}
}]);
return DayDetailStatic;
}(_react.Component);
var Hour = function Hour(props) {
return _react2.default.createElement(
'div',
{ style: { display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'space between' } },
_react2.default.createElement(
'div',
{ style: { width: 200 - event_width, display: 'flex', flexDirection: 'column', alignItems: 'flex-end', justifyContent: 'center', height: 30 } },
_react2.default.createElement(
'p',
{ style: { color: (0, _constants.color)('black', 'bright') } },
props.hour,
':00'
)
),
_react2.default.createElement('div', { style: { height: 1, backgroundColor: (0, _constants.color)('black', 'bright'), marginLeft: 10, width: 180 } })
);
};
var Event = function Event(props) {
var event = props.event;
var start = (0, _moment2.default)(event.start);
var start_hour = work_start;
if (props.currentDay.isSame(start, 'day')) {
start_hour = start.hour() + start.minute() / 60;
}
var end = (0, _moment2.default)(event.end);
var end_hour = work_end;
if (props.currentDay.isSame(end, 'day')) {
end_hour = end.hour() + end.minute() / 60;
}
return _react2.default.createElement('div', { style: { top: (start_hour - work_start) * 30, left: 200 - event_width, width: event_width, backgroundColor: (0, _constants.color)('important'), bottom: (work_end - end_hour) * 30, position: 'absolute' } });
};
var DayDetail = (0, _reactRedux.connect)(function (state) {
var current_day = (0, _moment2.default)({ y: state.calendar.current_year, M: state.calendar.current_month, d: state.calendar.current_date });
return {
events: state.calendar.current_events.map(function (event_id) {
return state.calendar.events[event_id];
}).filter(function (event) {
return current_day.isBetween(event.start, event.end, 'day', '[]');
}),
current_day: current_day
};
})(DayDetailStatic);
exports.default = DayDetail;