instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
325 lines (256 loc) • 12.3 kB
JavaScript
;
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')
}];