UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

325 lines (256 loc) 12.3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.missions_fields_options = exports.users_fields_options = exports.new_comments_fuse = exports.new_values_fuse = undefined; var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); exports.action_remove_field = action_remove_field; exports.action_remove_value = action_remove_value; exports.action_select_entity_value = action_select_entity_value; exports.action_remove_entity_value = action_remove_entity_value; exports.action_update_entity_comment = action_update_entity_comment; exports.action_view_entity_template = action_view_entity_template; exports.action_upload_entity_file = action_upload_entity_file; exports.action_fetch_entity_computed_value = action_fetch_entity_computed_value; exports.action_create_user_field = action_create_user_field; exports.action_create_mission_field = action_create_mission_field; exports.action_create_proposal_field = action_create_proposal_field; exports.action_create_shift_field = action_create_shift_field; exports.action_create_value_field = action_create_value_field; exports.action_create_workplace_field = action_create_workplace_field; exports.action_create_deal_field = action_create_deal_field; exports.action_new_field = action_new_field; exports.action_create_field = action_create_field; exports.action_create_value = action_create_value; exports.action_show_associated_values = action_show_associated_values; exports.allow_creating_value = allow_creating_value; exports.action_update_field = action_update_field; exports.action_update_value = action_update_value; exports.action_update_field_template = action_update_field_template; exports.action_export_field = action_export_field; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _fuse = require('fuse.js'); var _fuse2 = _interopRequireDefault(_fuse); var _store = require('common/store'); var _store2 = _interopRequireDefault(_store); var _request = require('common/request'); var _request2 = _interopRequireDefault(_request); var _utilities = require('common/utilities'); var _fields = require('actions/fields'); var _fields2 = require('selectors/fields'); var _display = require('actions/display'); var _new_field_form = require('components/popovers/new_field_form'); var _new_field_form2 = _interopRequireDefault(_new_field_form); var _delete_field = require('components/popovers/delete_field'); var _delete_field2 = _interopRequireDefault(_delete_field); var _delete_value = require('components/popovers/delete_value'); var _delete_value2 = _interopRequireDefault(_delete_value); var _modals = require('components/architecture/modals'); var _associated_values_settings = require('components/associated_values_settings'); var _associated_values_settings2 = _interopRequireDefault(_associated_values_settings); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function action_remove_field(field_id) { var field = _store2.default.getState().fields.fields[field_id] || {}; var remove = function remove() { _store2.default.dispatch((0, _fields.remove_field)(field_id)); _request2.default.delete('fields/' + field_id); }; if (field.name) { _store2.default.dispatch((0, _display.show_popover)(_delete_field2.default, { field: field, on_delete: function on_delete() { remove(); _store2.default.dispatch((0, _display.dismiss_popover)()); } }, 'Supprimer le champ ' + field.name)); } else { remove(); } } function action_remove_value(value_id) { function remove() { _store2.default.dispatch((0, _fields.remove_value)(value_id)); return _request2.default.delete('values/' + value_id); } var _store$getState$field = _store2.default.getState().fields, values = _store$getState$field.values, fields = _store$getState$field.fields; var _values$value_id = values[value_id], mission_ids = _values$value_id.mission_ids, entity_ids = _values$value_id.entity_ids, name = _values$value_id.name, field_id = _values$value_id.field_id; var field_name = fields[field_id].name; if ((0, _utilities.empty_set)(mission_ids) && (0, _utilities.empty_set)(entity_ids)) { return remove(); } else { _store2.default.dispatch((0, _display.show_popover)(_delete_value2.default, { field_name: field_name, value_name: name, confirm: function confirm() { remove(); _store2.default.dispatch((0, _display.dismiss_popover)()); } }, 'Suppression de la valeur \xAB ' + name + ' \xBB')); } } function is_exclusive_update(value_id, for_missions) { var _store$getState$field2 = _store2.default.getState().fields, fields = _store$getState$field2.fields, values = _store$getState$field2.values; var _ref = values[value_id] || {}, field_id = _ref.field_id; var _ref2 = fields[field_id] || {}, for_entity = _ref2.for_entity, category = _ref2.category; return category == 'exclusive' && !(for_entity == 'User' && for_missions); } function action_select_entity_value(entity_id, value_id, for_missions) { var action = _fields.add_entity_value; if (is_exclusive_update(value_id, for_missions)) { action = _fields.update_exclusive_entity_value; } _store2.default.dispatch(action(entity_id, value_id, for_missions)); return _request2.default.put('values/' + value_id + '/add', { entity_id: entity_id, for_missions: for_missions }); } function action_remove_entity_value(entity_id, value_id, for_missions) { if (is_exclusive_update(value_id, for_missions)) { _store2.default.dispatch((0, _fields.clear_exclusive_entity_value)(entity_id, value_id)); } else { _store2.default.dispatch((0, _fields.remove_entity_value)(entity_id, value_id, for_missions)); } return _request2.default.delete('values/' + value_id + '/remove', { entity_id: entity_id, for_missions: for_missions }); } function action_update_entity_comment(entity_id, field_id, comment) { _store2.default.dispatch((0, _fields.update_entity_comment)(entity_id, field_id, comment)); return _request2.default.put('fields/' + field_id + '/comments', { entity_id: entity_id, comment: comment }); } function action_view_entity_template(entity_id, _ref3) { var name = _ref3.name, field_id = _ref3.id; return _request2.default.asynchronous('fields/' + field_id + '/create_from_template', { entity_id: entity_id }).then(function (_ref4) { var url = _ref4.url; return (0, _utilities.download_file)(url, name); }); } function action_upload_entity_file(entity_id, field_id, file) { return _request2.default.upload('fields/' + field_id + '/files', file, { entity_id: entity_id }); } function action_fetch_entity_computed_value(entity_id, field_id) { return _request2.default.get('fields/' + field_id + '/compute', { entity_id: entity_id }).then((0, _utilities.property_getter)('result')); } function action_create_user_field() { return action_new_field("Création d'un nouveau champ candidat", "user", { for_entity: 'User' }); } function action_create_mission_field() { return action_new_field("Création d'un nouveau champ mission", "mission", { for_entity: 'Mission' }, (0, _fields2.get_missions_recyclable_fields)(_store2.default.getState())); } function action_create_proposal_field() { return action_new_field("Création d'un nouveau champ poste", "mission_proposal", { for_entity: 'MissionProposal' }); } function action_create_shift_field() { return action_new_field("Création d'un nouveau champ créneau", "shift", { for_entity: 'Shift' }); } function action_create_value_field(field_id) { return action_new_field("Création d'une nouvelle valeur associée", "value", { for_entity: 'Value', field_id: field_id }); } function action_create_workplace_field() { return action_new_field("Création d'un nouveau champ Lieu de travail", "workplace", { for_entity: 'Workplace' }); } function action_create_deal_field() { return action_new_field("Création d'un champ d'export mission", "deal", { for_entity: 'Deal' }); } function action_new_field(title, type, template) { var existing_fields = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : []; _store2.default.dispatch((0, _display.show_popover)(_new_field_form2.default, { type: type, create_field: function create_field(field) { action_create_field((0, _extends3.default)({}, field, template)); _store2.default.dispatch((0, _display.dismiss_popover)()); }, recycle_field: function recycle_field(field) { action_update_field((0, _extends3.default)({}, field, { recycled: true })); _store2.default.dispatch((0, _display.dismiss_popover)()); }, existing_fields: existing_fields }, title)); } function action_create_field(field) { return _request2.default.post('agencies/' + _store2.default.getState().profile.agency_id + '/fields', { field: field }).then(function (field) { _store2.default.dispatch((0, _fields.store_fields)([field])); return field.id; }); } function action_create_value(field_id) { var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; return new _promise2.default(function (resolve, reject) { var characters = name.split(""); if (',' in characters || ';' in characters) { _store2.default.dispatch((0, _display.alert_failure)('Les caract\xE8res \',\' et \';\' sont interdits dans le nom d\'une valeur.')); reject(); } else { _request2.default.post('fields/' + field_id + '/values', { value: { name: name } }).then(function (value) { _store2.default.dispatch((0, _fields.store_values)([value])); action_show_associated_values(value.id); return value.id; }).then(resolve); } }); } function action_show_associated_values(value_id) { (0, _modals.add_modal)(function () { return _react2.default.createElement(_associated_values_settings2.default, { value_id: value_id }); }); } var new_values_fuse = exports.new_values_fuse = function new_values_fuse() { return new _fuse2.default([], { keys: ["name"], id: "id", threshold: 0.2 }); }; var new_comments_fuse = exports.new_comments_fuse = function new_comments_fuse() { return new _fuse2.default([], { keys: ["comment"], id: "id", threshold: 0.2 }); }; function allow_creating_value(item_type, field) { return !((item_type == 'mission' || item_type == 'new_mission') && field.recycled); } function action_update_field(field) { _store2.default.dispatch((0, _fields.update_field)(field)); return _request2.default.put('fields/' + field.id, { field: field }); } function action_update_value(value) { _store2.default.dispatch((0, _fields.update_value)(value)); return _request2.default.put('values/' + value.id, { value: value }); } function action_update_field_template(field_id, template) { return _request2.default.upload('fields/' + field_id + '/template', template, { field_id: field_id }).then(function () {}).catch(function () { return _store2.default.dispatch((0, _display.alert_failure)("Une erreur s'est produite. Avez-vous bien téléchargé un fichier au format .docx ?")); }); } function action_export_field(field_id, deal_ids) { var name = _store2.default.getState().fields.fields[field_id].name; var agency_id = _store2.default.getState().profile.agency_id; return _request2.default.asynchronous('agencies/' + agency_id + '/export_missions', { field_id: field_id, deal_ids: deal_ids }).then(function (_ref5) { var url = _ref5.url; return (0, _utilities.download_file)(url, name); }); } var users_fields_options = exports.users_fields_options = [{ name: "Renseigné par le candidat", get: (0, _utilities.property_getter)('shared_by_user'), toggle: (0, _utilities.property_toggler)('shared_by_user') }]; var missions_fields_options = exports.missions_fields_options = [{ name: "Partagé avec le candidat", get: (0, _utilities.property_getter)('shared_with_user'), toggle: (0, _utilities.property_toggler)('shared_with_user') }];