summaryrefslogtreecommitdiff
path: root/addons/hr/static/src/js/standalone_m2o_avatar_employee.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/hr/static/src/js/standalone_m2o_avatar_employee.js')
-rw-r--r--addons/hr/static/src/js/standalone_m2o_avatar_employee.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/addons/hr/static/src/js/standalone_m2o_avatar_employee.js b/addons/hr/static/src/js/standalone_m2o_avatar_employee.js
new file mode 100644
index 00000000..64da43ec
--- /dev/null
+++ b/addons/hr/static/src/js/standalone_m2o_avatar_employee.js
@@ -0,0 +1,61 @@
+odoo.define('hr.StandaloneM2OAvatarEmployee', function (require) {
+ 'use strict';
+
+ const StandaloneFieldManagerMixin = require('web.StandaloneFieldManagerMixin');
+ const Widget = require('web.Widget');
+
+ const { Many2OneAvatarEmployee } = require('hr.Many2OneAvatarEmployee');
+
+ const StandaloneM2OAvatarEmployee = Widget.extend(StandaloneFieldManagerMixin, {
+ className: 'o_standalone_avatar_employee',
+
+ /**
+ * @override
+ */
+ init(parent, value) {
+ this._super(...arguments);
+ StandaloneFieldManagerMixin.init.call(this);
+ this.value = value;
+ },
+ /**
+ * @override
+ */
+ willStart() {
+ return Promise.all([this._super(...arguments), this._makeAvatarWidget()]);
+ },
+ /**
+ * @override
+ */
+ start() {
+ this.avatarWidget.$el.appendTo(this.$el);
+ return this._super(...arguments);
+ },
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * Create a record, and initialize and start the avatar widget.
+ *
+ * @private
+ * @returns {Promise}
+ */
+ async _makeAvatarWidget() {
+ const modelName = 'hr.employee';
+ const fieldName = 'employee_id';
+ const recordId = await this.model.makeRecord(modelName, [{
+ name: fieldName,
+ relation: modelName,
+ type: 'many2one',
+ value: this.value,
+ }]);
+ const state = this.model.get(recordId);
+ this.avatarWidget = new Many2OneAvatarEmployee(this, fieldName, state);
+ this._registerWidget(recordId, fieldName, this.avatarWidget);
+ return this.avatarWidget.appendTo(document.createDocumentFragment());
+ },
+ });
+
+ return StandaloneM2OAvatarEmployee;
+});