initial commit
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="appraisal-grid" title="Appraisals" model="com.axelor.apps.talent.db.Appraisal">
|
||||
<field name="employee" />
|
||||
<field name="company" if="__config__.app.getApp('base').getEnableMultiCompany()"/>
|
||||
<field name="appraisalType" />
|
||||
<field name="toDate" />
|
||||
<field name="reviewerEmployee" />
|
||||
<field name="statusSelect" />
|
||||
</grid>
|
||||
|
||||
<grid name="appraisal-template-grid" title="Appraisal templates" model="com.axelor.apps.talent.db.Appraisal">
|
||||
<field name="company" if="__config__.app.getApp('base').getEnableMultiCompany()"/>
|
||||
<field name="appraisalType" />
|
||||
<field name="toDate" />
|
||||
<field name="reviewerEmployee" />
|
||||
</grid>
|
||||
|
||||
<form name="appraisal-form" title="Appraisal" model="com.axelor.apps.talent.db.Appraisal" width="large">
|
||||
<panel name="actionPanel">
|
||||
<field name="statusSelect" colSpan="8" widget="NavSelect" showTitle="false" />
|
||||
<panel name="subActionPanel" colSpan="4" stacked="true">
|
||||
<button name="sendAppraisalBtn" title="Send" showIf="statusSelect == 0" onClick="save,action-appraisal-method-send-appraisal"/>
|
||||
<button name="realizeAppraisalBtn" title="Realize" showIf="statusSelect == 1" css="btn-success" onClick="save,action-appraisal-method-realize-appraisal"/>
|
||||
<button name="cancelAppraisalBtn" title="Cancel" showIf="statusSelect < 2" css="btn-danger" onClick="save,action-appraisal-method-cancel-appraisal"/>
|
||||
<button name="draftAppraisalBtn" title="Draft" showIf="statusSelect == 3" onClick="save,action-appraisal-method-draft-appraisal"/>
|
||||
</panel>
|
||||
</panel>
|
||||
<panel name="detailPanel">
|
||||
<field name="employee" required="true" canView="false" onChange="action-appraisal-record-set-company-employee-onchange"/>
|
||||
<field name="company" canEdit="false" canNew="false"/>
|
||||
<field name="appraisalType" canEdit="false" canNew="false"/>
|
||||
<field name="toDate" />
|
||||
<field name="reviewerEmployee" canEdit="false" canNew="false"/>
|
||||
<field name="description" colSpan="12" widget="html"/>
|
||||
<field name="attrs" colSpan="12"/>
|
||||
</panel>
|
||||
<panel-mail name="mailPanel">
|
||||
<mail-messages limit="4" />
|
||||
<mail-followers />
|
||||
</panel-mail>
|
||||
</form>
|
||||
|
||||
<form name="appraisal-template-form" title="Appraisal template" model="com.axelor.apps.talent.db.Appraisal" width="large" onNew="action-appraisal-template-defaults">
|
||||
<panel name="mainPanel">
|
||||
<field name="company" />
|
||||
<field name="appraisalType" />
|
||||
<field name="toDate" />
|
||||
<field name="reviewerEmployee" />
|
||||
<field name="description" colSpan="12" widget="html"/>
|
||||
<field name="attrs" colSpan="12"/>
|
||||
<button name="openEmployeeSelectBtn" title="Create Appraisals" onClick="save,action-appraisal-template-open-employee-selection" colSpan="3" />
|
||||
<field name="isTemplate" hidden="true" />
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<form name="appraisal-employee-select-form" title="Create Appraisals(Select Employees)" model="com.axelor.apps.talent.db.Appraisal"
|
||||
onNew="action-appraisal-employee-select-default" width="large">
|
||||
<panel name="mainPanel">
|
||||
<field name="$employeeSet" type="many-to-many" colSpan="12" target="com.axelor.apps.hr.db.Employee" title="Employees"/>
|
||||
<field name="sendAppraisals" type="boolean" title="Send" colSpan="2"/>
|
||||
<button name="createAppraisalsBtn" title="Create" onClick="action-appraisal-template-method-create-appraisals" showIf="$employeeSet.length > 0" colSpan="3"/>
|
||||
<field name="templateId" type="long" hidden="true" />
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<calendar name="appraisal-calendar" model="com.axelor.apps.talent.db.Appraisal" eventStart="toDate" title="Appraisals" colorBy="statusSelect">
|
||||
<field name="employee"/>
|
||||
</calendar>
|
||||
|
||||
<action-method name="action-appraisal-method-send-appraisal">
|
||||
<call class="com.axelor.apps.talent.web.AppraisalController" method="send"/>
|
||||
</action-method>
|
||||
|
||||
<action-method name="action-appraisal-method-realize-appraisal">
|
||||
<call class="com.axelor.apps.talent.web.AppraisalController" method="realize"/>
|
||||
</action-method>
|
||||
|
||||
<action-method name="action-appraisal-method-cancel-appraisal">
|
||||
<call class="com.axelor.apps.talent.web.AppraisalController" method="cancel"/>
|
||||
</action-method>
|
||||
|
||||
<action-method name="action-appraisal-method-draft-appraisal">
|
||||
<call class="com.axelor.apps.talent.web.AppraisalController" method="draft"/>
|
||||
</action-method>
|
||||
|
||||
<action-view name="action-appraisal-template-open-employee-selection" model="com.axelor.apps.talent.db.Appraisal" title="Create Appraisal(Select Employees)">
|
||||
<view type="form" name="appraisal-employee-select-form"/>
|
||||
<view-param name="popup" value="reload"/>
|
||||
<view-param name="popup-save" value="false"/>
|
||||
<view-param name="show-toolbar" value="false" />
|
||||
<view-param name="show-confirm" value="false"/>
|
||||
<context name="_templateId" expr="eval:id"/>
|
||||
</action-view>
|
||||
|
||||
<action-method name="action-appraisal-template-method-create-appraisals">
|
||||
<call class="com.axelor.apps.talent.web.AppraisalController" method="createAppraisals" />
|
||||
</action-method>
|
||||
|
||||
<action-record name="action-appraisal-employee-select-default" model="com.axelor.apps.talent.db.Appraisal">
|
||||
<field name="templateId" expr="eval:_templateId"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-appraisal-template-defaults" model="com.axelor.apps.talent.db.Appraisal">
|
||||
<field name="isTemplate" expr="eval:true"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-appraisal-record-set-company-employee-onchange" model="com.axelor.apps.talent.db.Appraisal">
|
||||
<field name="company" expr="eval:employee?.mainEmploymentContract?.payCompany"/>
|
||||
</action-record>
|
||||
|
||||
|
||||
<search-filters name="appraisal-fitlers" model="com.axelor.apps.talent.db.Appraisal" title="Appraisal filters">
|
||||
<filter title="New appraisal">
|
||||
<domain>self.isTemplate = false and self.statusSelect = 0</domain>
|
||||
</filter>
|
||||
<filter title="Upcoming appraisal">
|
||||
<domain>self.isTemplate = false and self.statusSelect = 1</domain>
|
||||
</filter>
|
||||
<filter title="My upcoming appraisal">
|
||||
<domain>self.employee.user.id = :_userId and self.isTemplate = false and self.statusSelect = 1</domain>
|
||||
</filter>
|
||||
<filter title="My completed appraisals">
|
||||
<domain>self.employee.user.id = :_userId and self.isTemplate = false and self.statusSelect = 2</domain>
|
||||
</filter>
|
||||
<filter title="Upcoming appraisals of all employees of a team">
|
||||
<domain>self.employee.user.id in :_teamUserIds and self.isTemplate = false and self.statusSelect = 1</domain>
|
||||
</filter>
|
||||
<filter title="Completed trainings of all employees of a team">
|
||||
<domain>self.employee.user.id in :_teamUserIds and self.isTemplate = false and self.statusSelect = 2</domain>
|
||||
</filter>
|
||||
</search-filters>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="appraisal-type-grid" title="Appraisal types" model="com.axelor.apps.talent.db.AppraisalType">
|
||||
<field name="name" />
|
||||
</grid>
|
||||
|
||||
<form name="appraisal-type-form" title="Appraisal type" model="com.axelor.apps.talent.db.AppraisalType" width="large">
|
||||
<panel name="namePanel">
|
||||
<field name="name" />
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,124 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<chart name="chart.employee.training.per.category" title="Training per category">
|
||||
<dataset type="jpql"><![CDATA[
|
||||
SELECT
|
||||
COUNT(*) AS _total,
|
||||
self.training.category.name AS _category,
|
||||
YEAR(self.fromDate) as _year
|
||||
FROM
|
||||
TrainingRegister self
|
||||
WHERE
|
||||
YEAR(self.fromDate) >= (YEAR(CURRENT_DATE)-3)
|
||||
AND self.employee =:id
|
||||
GROUP BY
|
||||
self.training.category.name,
|
||||
YEAR(self.fromDate)
|
||||
ORDER BY
|
||||
YEAR(self.fromDate)
|
||||
]]></dataset>
|
||||
<category key="_category" type="text" title="Training"/>
|
||||
<series key="_total" type="bar" title="Total" groupBy="_year" />
|
||||
</chart>
|
||||
|
||||
<chart name="chart.nb.hours.per.category" title="Nb. hours per category" onInit="action-training-chart-set-default-from-to-dates">
|
||||
<search-fields>
|
||||
<field name="fromDate" title="From" type="date" required="true" />
|
||||
<field name="toDate" title="To" type="date" required="true" />
|
||||
</search-fields>
|
||||
<dataset type="jpql"><![CDATA[
|
||||
SELECT
|
||||
SUM(self.duration) AS _nbHours,
|
||||
self.training.category.name AS _category
|
||||
FROM
|
||||
TrainingSession self
|
||||
WHERE
|
||||
self.fromDate >= :fromDate AND self.toDate <= :toDate
|
||||
AND self.statusSelect = 2
|
||||
GROUP BY
|
||||
self.training.category.name
|
||||
]]></dataset>
|
||||
<category key="_category" type="text" title="Category"/>
|
||||
<series key="_nbHours" type="bar" title="Nb Hours"/>
|
||||
</chart>
|
||||
|
||||
<chart name="chart.nb.hours.per.training" title="Nb. hours per training" onInit="action-training-chart-set-default-from-to-dates">
|
||||
<search-fields>
|
||||
<field name="fromDate" title="From" type="date" required="true" />
|
||||
<field name="toDate" title="To" type="date" required="true" />
|
||||
</search-fields>
|
||||
<dataset type="jpql"><![CDATA[
|
||||
SELECT
|
||||
SUM(self.duration) AS _nbHours,
|
||||
self.training.name AS _training
|
||||
FROM
|
||||
TrainingSession self
|
||||
WHERE
|
||||
self.fromDate >= :fromDate AND self.toDate <= :toDate
|
||||
AND self.statusSelect = 2
|
||||
GROUP BY
|
||||
self.training.name
|
||||
]]></dataset>
|
||||
<category key="_training" type="text" title="Training"/>
|
||||
<series key="_nbHours" type="bar" title="Nb Hours" />
|
||||
</chart>
|
||||
|
||||
<chart name="chart.nb.trained.employee.per.category" title="Nb. of trained employee per category" onInit="action-training-chart-set-default-from-to-dates">
|
||||
<search-fields>
|
||||
<field name="fromDate" title="From" type="date" required="true" />
|
||||
<field name="toDate" title="To" type="date" required="true" />
|
||||
</search-fields>
|
||||
<dataset type="jpql"><![CDATA[
|
||||
SELECT
|
||||
COUNT(*) AS _nbEmployee,
|
||||
self.training.category.name AS _category
|
||||
FROM
|
||||
TrainingRegister self
|
||||
WHERE
|
||||
self.fromDate >= :fromDate AND self.toDate <= :toDate
|
||||
AND self.statusSelect = 2
|
||||
GROUP BY
|
||||
self.training.category.name,
|
||||
self.employee
|
||||
]]></dataset>
|
||||
<category key="_category" type="text" title="Category"/>
|
||||
<series key="_nbEmployee" type="bar" title="Nb Employee" />
|
||||
</chart>
|
||||
|
||||
<chart name="chart.nb.training.hours.per.month" title="Nb of training hours per month" onInit="action-training-chart-set-3-month-from-to-dates">
|
||||
<search-fields>
|
||||
<field name="fromDate" title="From" type="date" required="true" />
|
||||
<field name="toDate" title="To" type="date" required="true" />
|
||||
</search-fields>
|
||||
<dataset type="jpql"><![CDATA[
|
||||
SELECT
|
||||
SUM(self.duration) AS _nbHours,
|
||||
CONCAT(MONTH(self.fromDate),'-',YEAR(self.fromDate)) AS _month
|
||||
FROM
|
||||
TrainingSession self
|
||||
WHERE
|
||||
self.fromDate >= :fromDate AND self.toDate <= :toDate
|
||||
AND self.statusSelect = 2
|
||||
GROUP BY
|
||||
CONCAT(MONTH(self.fromDate),'-',YEAR(self.fromDate))
|
||||
ORDER BY
|
||||
CONCAT(MONTH(self.fromDate),'-',YEAR(self.fromDate))
|
||||
]]></dataset>
|
||||
<category key="_month" type="text" title="Month"/>
|
||||
<series key="_nbHours" type="bar" title="Nb Hours" />
|
||||
</chart>
|
||||
|
||||
<action-attrs name="action-training-chart-set-default-from-to-dates">
|
||||
<attribute name="value" for="fromDate" expr="eval:__date__.withDayOfMonth(1)"/>
|
||||
<attribute name="value" for="toDate" expr="eval:__date__"/>
|
||||
</action-attrs>
|
||||
|
||||
<action-attrs name="action-training-chart-set-3-month-from-to-dates">
|
||||
<attribute name="value" for="fromDate" expr="eval:__date__.minusMonths(3)"/>
|
||||
<attribute name="value" for="toDate" expr="eval:__date__"/>
|
||||
</action-attrs>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<!-- Dashboard Manager -->
|
||||
<dashboard title="Dashboard" name="training.dashboard" >
|
||||
<dashlet action="chart:chart.nb.hours.per.category" height="350" />
|
||||
<dashlet action="chart:chart.nb.hours.per.training" height="350" />
|
||||
<dashlet action="chart:chart.nb.trained.employee.per.category" height="350" />
|
||||
<dashlet action="chart:chart.nb.training.hours.per.month" height="350" />
|
||||
</dashboard>
|
||||
|
||||
|
||||
</object-views>
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="education-level-grid" title="Education level" model="com.axelor.apps.talent.db.EducationLevel">
|
||||
<field name="name" />
|
||||
</grid>
|
||||
|
||||
<form name="education-level-form" title="Education level" model="com.axelor.apps.talent.db.EducationLevel" width="large">
|
||||
<panel name="namePanel">
|
||||
<field name="name" />
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<form name="talent-employee-form" title="Employee" model="com.axelor.apps.hr.db.Employee">
|
||||
<panel name="skillsPanel" title="Skills" if="__config__.app.isApp('training')">
|
||||
<field name="trainingSkillSet" colSpan="12"/>
|
||||
<field name="experienceSkillSet" colSpan="12"/>
|
||||
<field name="skillSet" colSpan="12"/>
|
||||
</panel>
|
||||
|
||||
<panel name="trainingPanel" title="Training" if="__config__.app.isApp('training')">
|
||||
<panel-dashlet name="employeeTrainingRegisterPanel" action="action-dashlet-employee-training-register" colSpan="12"/>
|
||||
<panel-dashlet name="employeeTrainingPerCategoryPanel" action="chart:chart.employee.training.per.category" colSpan="12"/>
|
||||
</panel>
|
||||
|
||||
<panel name="appraisalPanel" title="Appraisal" if="__config__.app.isApp('appraisal')">
|
||||
<panel-dashlet name="employeeAppraisalSentPanel" action="action-dashlet-employee-appraisal-sent" colSpan="12"/>
|
||||
</panel>
|
||||
</form>
|
||||
<action-view name="action-dashlet-employee-training-register" title="Training Register" model="com.axelor.apps.talent.db.TrainingRegister">
|
||||
<view type="grid" name="training-register-grid"/>
|
||||
<view type="form" name="training-register-form"/>
|
||||
<domain>self.employee = :__self__</domain>
|
||||
</action-view>
|
||||
|
||||
<action-view name="action-dashlet-employee-appraisal-sent" title="Appraisals" model="com.axelor.apps.talent.db.Appraisal">
|
||||
<view type="grid" name="appraisal-grid"/>
|
||||
<view type="form" name="appraisal-form"/>
|
||||
<domain>self.employee = :__self__</domain>
|
||||
</action-view>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="hiring-stage-grid" title="Hiring Stage" model="com.axelor.apps.talent.db.HiringStage" canMove="true" orderBy="sequence" >
|
||||
<field name="sequence" />
|
||||
<field name="name" />
|
||||
</grid>
|
||||
|
||||
<form name="hiring-stage-form" title="Hiring Stage" model="com.axelor.apps.talent.db.HiringStage" width="large">
|
||||
<panel name="mainPanel">
|
||||
<field name="sequence" />
|
||||
<field name="name" />
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,155 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="job-application-grid" title="Job applications" model="com.axelor.apps.talent.db.JobApplication">
|
||||
<field name="lastName" />
|
||||
<field name="firstName" />
|
||||
<field name="emailAddress" />
|
||||
<field name="fixedPhone" />
|
||||
<field name="mobilePhone" />
|
||||
<field name="jobPosition" />
|
||||
<field name="statusSelect" />
|
||||
</grid>
|
||||
|
||||
<form name="job-application-form" title="Job application" model="com.axelor.apps.talent.db.JobApplication" width="large"
|
||||
onNew="action-job-application-defaults" onLoad="action-talent-method-set-social-network-url">
|
||||
<menubar>
|
||||
<menu name="jobApplicationToolsMenu" title="Tools" icon="fa-wrench" showTitle="true">
|
||||
<item name="scheduleEventItem" title="Schedule Event" action="save,action-job-application-schedule-event" readonlyIf="id == null"/>
|
||||
</menu>
|
||||
</menubar>
|
||||
<panel name="mainPanel" readonlyIf="statusSelect == 3">
|
||||
<field name="statusSelect" widget="NavSelect" showTitle="false" colSpan="8" readonly="true"/>
|
||||
<field name="hiringStage" colSpan="4" widget="SuggestBox" canEdit="false"/>
|
||||
<panel name="imagePanel" colSpan="4">
|
||||
<field name="picture" widget="Image" colSpan="12" showTitle="false">
|
||||
<viewer>
|
||||
<![CDATA[
|
||||
<img ng-show="record.picture" ng-src="{{$image('picture', 'content')}}" />
|
||||
<img ng-show="!record.picture" src="img/partner-default.png" />
|
||||
]]>
|
||||
</viewer>
|
||||
</field>
|
||||
</panel>
|
||||
<panel name="namePanel" colSpan="8">
|
||||
<field name="titleSelect" selection-in="[1,2]"/>
|
||||
<spacer/>
|
||||
<field name="firstName" onChange="action-talent-method-set-social-network-url"/>
|
||||
<field name="lastName" required="true" onChange="action-talent-method-set-social-network-url"/>
|
||||
<field name="employee" showIf="statusSelect == 1" />
|
||||
</panel>
|
||||
</panel>
|
||||
<panel sidebar="true" name="actionsPanel">
|
||||
<button name="openBtn" title="Open" onClick="save,action-job-application-status-open,save" colSpan="12" hideIf="statusSelect == 0"/>
|
||||
<button name="rejectBtn" title="Rejected" onClick="save,action-job-application-status-reject,save" colSpan="12" showIf="statusSelect == 0"/>
|
||||
<button name="hireBtn" title="Hire" onClick="save,action-job-application-confirmation,action-job-application-method-hire" colSpan="12" showIf="statusSelect == 0"/>
|
||||
<button name="cancelBtn" title="Cancel" onClick="save,action-job-application-status-cancel,save" colSpan="12" icon="fa-times-circle" css="btn-danger" hideIf="statusSelect == 1 || statusSelect == 3"/>
|
||||
</panel>
|
||||
<panel sidebar="true" name="JobOfferInformationPanel" title="Job Offer Information" readonlyIf="statusSelect == 3">
|
||||
<field name="jobPosition" colSpan="6" canEdit="false"/>
|
||||
<field name="jobPosition.statusSelect" colSpan="6"/>
|
||||
<field name="responsible" colSpan="6" canEdit="false"/>
|
||||
<field name="jobPosition.companyDepartment" colSpan="6"/>
|
||||
<field name="jobPosition.publicationDate" colSpan="6"/>
|
||||
</panel>
|
||||
<panel sidebar="true" name="applicationInformationPanel" title="Application Information" readonlyIf="statusSelect == 3">
|
||||
<field name="educationLevel" colSpan="6"/>
|
||||
<field name="experienceSelect" colSpan="6"/>
|
||||
<field name="industrySectorSet" widget="TagSelect" colSpan="6"/>
|
||||
<field name="talentSource" title="Source" colSpan="6"/>
|
||||
<field name="skillSet" widget="TagSelect" colSpan="6"/>
|
||||
<field name="referredBy" colSpan="6"/>
|
||||
<field name="creationDate" colSpan="6"/>
|
||||
<field name="appreciation" widget="SelectProgress" colSpan="6"/>
|
||||
</panel>
|
||||
|
||||
<panel-tabs name="mainPanelTab" readonlyIf="statusSelect == 3">
|
||||
<panel name="descriptionPanel" title="Description">
|
||||
<field name="description" widget="html" colSpan="12" />
|
||||
</panel>
|
||||
<panel name="contactPanel" title="Contact" colSpan="12">
|
||||
<panel name="contactDetailsPanel" title="Contact details" colSpan="12">
|
||||
<field name="mobilePhone" colSpan="3"/>
|
||||
<field name="emailAddress" canRemove="false" canSelect="false" canSuggest="false" colSpan="3" canNew="true" canEdit="true">
|
||||
<editor x-show-titles="false">
|
||||
<field name="address" colSpan="12" pattern="^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@+[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$" widget="Email" placeholder="user@mydomain.com"/>
|
||||
</editor>
|
||||
</field>
|
||||
<field name="fixedPhone" colSpan="3"/>
|
||||
<field name="fax" colSpan="3"/>
|
||||
<field name="linkedInProfile" colSpan="3" widget="url"/>
|
||||
<label name="linkedinLabel" title="<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />" colSpan="2"/>
|
||||
</panel>
|
||||
<panel name="primaryAddressPanel" title="Primary Address" colSpan="12">
|
||||
<field name="employeeAddress" colSpan="12" form-view="address-form" grid-view="address-grid" canNew="true" canEdit="false"/>
|
||||
</panel>
|
||||
<field name="fullName" hidden="true" />
|
||||
</panel>
|
||||
<panel name="contractPanel" title="Contract" colSpan="12">
|
||||
<field name="jobPosition.contractType" />
|
||||
<field name="expectedSalary" />
|
||||
<field name="proposedSalary" />
|
||||
<field name="availabilityFrom" />
|
||||
</panel>
|
||||
<panel-dashlet name="eventsPanel" title="Events" action="action-job-application-events" colSpan="12" />
|
||||
<panel name="reasonNotHiredPanel" title="Reason not hired">
|
||||
<field name="reasonNotHired" colSpan="12" showTitle="false"/>
|
||||
</panel>
|
||||
</panel-tabs>
|
||||
|
||||
<panel-mail name="mailPanel">
|
||||
<mail-messages limit="4" />
|
||||
<mail-followers />
|
||||
</panel-mail>
|
||||
</form>
|
||||
|
||||
<action-view name="action-job-application-schedule-event" title="Schedule Event" model="com.axelor.apps.crm.db.Event">
|
||||
<view type="form" name="event-form"/>
|
||||
<context name="_relatedToSelect" expr="eval:'com.axelor.apps.talent.db.JobApplication'" />
|
||||
<context name="_relatedToSelectId" expr="eval:id" />
|
||||
</action-view>
|
||||
|
||||
<action-view name="action-job-application-events" model="com.axelor.apps.crm.db.Event" title="Events">
|
||||
<view type="grid" name="event-grid"/>
|
||||
<view type="form" name="event-form"/>
|
||||
<domain>self.relatedToSelect = 'com.axelor.apps.talent.db.JobApplication' and self.relatedToSelectId = :id</domain>
|
||||
</action-view>
|
||||
|
||||
<action-record name="action-job-application-defaults" model="com.axelor.apps.talent.db.JobApplication">
|
||||
<field name="jobPosition" expr="eval:__repo__(JobPosition).find(_jobPositionId)"/>
|
||||
<field name="responsible" expr="eval:__repo__(Employee).find(_responsibleId)" />
|
||||
</action-record>
|
||||
|
||||
<action-method name="action-job-application-method-hire">
|
||||
<call class="com.axelor.apps.talent.web.JobApplicationController" method="hire"/>
|
||||
</action-method>
|
||||
|
||||
<action-attrs name="action-job-application-status-cancel">
|
||||
<attribute name="value" for="statusSelect" expr="eval: 3"/>
|
||||
</action-attrs>
|
||||
|
||||
<action-attrs name="action-job-application-status-open">
|
||||
<attribute name="value" for="statusSelect" expr="eval: 0"/>
|
||||
</action-attrs>
|
||||
|
||||
<action-attrs name="action-job-application-status-reject">
|
||||
<attribute name="value" for="statusSelect" expr="eval: 2"/>
|
||||
</action-attrs>
|
||||
|
||||
<action-validate name="action-job-application-confirmation">
|
||||
<alert message="A new employee form will be created. Do you confirm the creation ?"/>
|
||||
</action-validate>
|
||||
|
||||
<action-method name="action-talent-method-set-social-network-url">
|
||||
<call class="com.axelor.apps.talent.web.JobApplicationController" method="setSocialNetworkUrl"/>
|
||||
</action-method>
|
||||
|
||||
<search-filters name="job-application-filters" model="com.axelor.apps.talent.db.JobApplication" title="Job Application Filters">
|
||||
<filter title="Current applications">
|
||||
<domain>self.statusSelect = 0</domain>
|
||||
</filter>
|
||||
</search-filters>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="job-position-grid" title="Job positions" model="com.axelor.apps.talent.db.JobPosition">
|
||||
<field name="jobReference" width="120"/>
|
||||
<field name="jobTitle" />
|
||||
<field name="companyDepartment" />
|
||||
<field name="employee" />
|
||||
<field name="contractType" />
|
||||
<field name="statusSelect" />
|
||||
</grid>
|
||||
|
||||
<form name="job-position-form" title="Job position" model="com.axelor.apps.talent.db.JobPosition" width="large">
|
||||
<toolbar>
|
||||
<button name="createJobApplicationBtn" title="Create a job application" colSpan="3" onClick="save,action-job-position-create-application"/>
|
||||
</toolbar>
|
||||
|
||||
<panel name="mainPanel" readonlyIf="statusSelect == 4">
|
||||
<field name="statusSelect" widget="NavSelect" readonly="true" colSpan="12" showTitle="false"/>
|
||||
<field name="jobReference" colSpan="4" showTitle="false"/>
|
||||
<field name="jobTitle" colSpan="12" showTitle="false" css="label-bold bold large" placeholder="Job title"/>
|
||||
<spacer name="jobTitleSpacer"/>
|
||||
<field name="company" />
|
||||
<field name="location" />
|
||||
<field name="companyDepartment" />
|
||||
<field name="employee" />
|
||||
<field name="nbOpenJob" />
|
||||
<field name="nbPeopleHired" />
|
||||
<field name="mailAccount" domain="self.isValid = true and self.serverTypeSelect > 1" />
|
||||
<field name="publicationDate" colSpan="6"/>
|
||||
<field name="jobDescription" widget="html" colSpan="6" />
|
||||
<field name="profileWanted" widget="html" colSpan="6" />
|
||||
<spacer name="profileWantedSpacer" />
|
||||
<panel-dashlet name="allApplicationsPanel" action="action-job-position-all-applications" colSpan="12" title="All applications"/>
|
||||
</panel>
|
||||
<panel name="buttonPanel" sidebar="true">
|
||||
<button name="statusDraftBtn" title="Draft" onClick="save,action-job-position-record-status-draft,save" showIf="statusSelect == 4" colSpan="12"/>
|
||||
<button name="statusOpenBtn" title="Open" onClick="save,action-job-position-record-status-open,save" showIf="statusSelect == 0" colSpan="12"/>
|
||||
<button name="statusOnHoldBtn" title="On hold" onClick="save,action-job-position-record-status-onhold,save" showIf="statusSelect == 1" colSpan="12"/>
|
||||
<button name="statusClosedBtn" title="Close" onClick="save,action-job-position-record-status-closed,save" showIf="statusSelect == 1 || statusSelect == 2" colSpan="12"/>
|
||||
<button name="cancelBtn" title="Cancel" onClick="save,action-job-position-record-status-cancel,save" hideIf="statusSelect == 4" colSpan="12" icon="fa-times-circle" css="btn-danger"/>
|
||||
</panel>
|
||||
<panel name="otherDetailPanel" sidebar="true" readonlyIf="statusSelect == 4">
|
||||
<field name="contractType" colSpan="6"/>
|
||||
<field name="positionStatusSelect" colSpan="6"/>
|
||||
<field name="experienceSelect" colSpan="6"/>
|
||||
<field name="salary" colSpan="6"/>
|
||||
<field name="startingDate" colSpan="6"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<cards name="job-position-cards" model="com.axelor.apps.talent.db.JobPosition" title="Job positions">
|
||||
<field name="jobTitle" />
|
||||
<field name="jobReference" />
|
||||
<template><![CDATA[
|
||||
<div>
|
||||
<div class="span12">
|
||||
<span><strong>{{jobTitle}}</strong></span>
|
||||
<br/>
|
||||
<span><strong>{{jobReference}}</strong></span>
|
||||
</div>
|
||||
</div>
|
||||
]]>
|
||||
</template>
|
||||
</cards>
|
||||
|
||||
<action-view name="action-job-position-all-applications" title="All applications" model="com.axelor.apps.talent.db.JobApplication">
|
||||
<view type="grid" name="job-application-grid"/>
|
||||
<view type="form" name="job-application-form"/>
|
||||
<domain>self.jobPosition.id = :_jobPositionId</domain>
|
||||
<context name="_jobPositionId" expr="eval:id"/>
|
||||
</action-view>
|
||||
|
||||
<action-view name="action-job-position-create-application" title="Job Application" model="com.axelor.apps.talent.db.JobApplication">
|
||||
<view type="form" name="job-application-form"/>
|
||||
<view type="grid" name="job-application-grid"/>
|
||||
<domain>self.jobPosition.id = :_jobPositionId</domain>
|
||||
<context name="_jobPositionId" expr="eval:id"/>
|
||||
<context name="_responsibleId" expr="eval:employee.id"/>
|
||||
</action-view>
|
||||
|
||||
<action-record name="action-job-position-record-status-draft" model="com.axelor.apps.talent.db.JobPosition">
|
||||
<field name="statusSelect" expr="eval: 0"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-job-position-record-status-open" model="com.axelor.apps.talent.db.JobPosition">
|
||||
<field name="statusSelect" expr="eval: 1"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-job-position-record-status-onhold" model="com.axelor.apps.talent.db.JobPosition">
|
||||
<field name="statusSelect" expr="eval: 2"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-job-position-record-status-closed" model="com.axelor.apps.talent.db.JobPosition">
|
||||
<field name="statusSelect" expr="eval: 3"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-job-position-record-status-cancel" model="com.axelor.apps.talent.db.JobPosition">
|
||||
<field name="statusSelect" expr="eval: 4"/>
|
||||
</action-record>
|
||||
|
||||
<search-filters name="job-position-filters" model="com.axelor.apps.talent.db.JobPosition" title="Job Position Filters">
|
||||
<filter title="Current job offers">
|
||||
<domain>self.statusSelect < 3</domain>
|
||||
</filter>
|
||||
<filter title="Closed job offers">
|
||||
<domain>self.statusSelect > 2</domain>
|
||||
</filter>
|
||||
</search-filters>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,129 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<!-- Recruitment menus -->
|
||||
<menuitem name="recruitment-root" parent="hr-root" if="__config__.app.isApp('recruitment')" title="Recruitment" icon="fa-handshake-o" icon-background="#84429f" />
|
||||
|
||||
<menuitem name="recruitment-job-position-open" parent="recruitment-root" title="Job positions" action="recruitment.job.position.open" />
|
||||
|
||||
<action-view name="recruitment.job.position.open" model="com.axelor.apps.talent.db.JobPosition" title="Job positions">
|
||||
<view name="job-position-cards" type="cards" />
|
||||
<view name="job-position-grid" type="grid" />
|
||||
<view name="job-position-form" type="form" />
|
||||
<view-param name="search-filters" value="job-position-filters"/>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="recruitment-job-application-all" parent="recruitment-root" title="Applications" action="recruitment.job.application.all" />
|
||||
|
||||
<action-view name="recruitment.job.application.all" model="com.axelor.apps.talent.db.JobApplication" title="Applications">
|
||||
<view name="job-application-grid" type="grid" />
|
||||
<view name="job-application-form" type="form" />
|
||||
<view-param name="search-filters" value="job-application-filters"/>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="recruitment-config" parent="recruitment-root" title="Configuration" icon="fa-cog"/>
|
||||
|
||||
<menuitem name="recruitment-config-education-level" parent="recruitment-config" title="Level of education" action="recruitment.config.education.level" />
|
||||
|
||||
<action-view name="recruitment.config.education.level" model="com.axelor.apps.talent.db.EducationLevel" title="Level of education">
|
||||
<view name="education-level-grid" type="grid" />
|
||||
<view name="education-level-form" type="form" />
|
||||
</action-view>
|
||||
|
||||
<menuitem name="recruitment-config-hiring-stage" parent="recruitment-config" title="Hiring Stage" action="recruitment.config.hiringStage" />
|
||||
|
||||
<action-view name="recruitment.config.hiringStage" model="com.axelor.apps.talent.db.HiringStage" title="Hiring Stage">
|
||||
<view name="hiring-stage-grid" type="grid" />
|
||||
<view name="hiring-stage-form" type="form" />
|
||||
</action-view>
|
||||
|
||||
<menuitem name="recruitment-config-source" parent="recruitment-config" title="Source" action="recruitment.config.source" />
|
||||
|
||||
<action-view name="recruitment.config.source" model="com.axelor.apps.talent.db.TalentSource" title="Source">
|
||||
<view name="talent-source-grid" type="grid" />
|
||||
<view name="talent-source-form" type="form" />
|
||||
</action-view>
|
||||
|
||||
<menuitem name="recruitment-config-skill" parent="recruitment-config" title="Skills" action="recruitment.config.skill"/>
|
||||
|
||||
<action-view name="recruitment.config.skill" title="Skills" model="com.axelor.apps.talent.db.Skill">
|
||||
<view type="grid" name="tag-skill-grid"/>
|
||||
<view type="form" name="tag-skill-form"/>
|
||||
</action-view>
|
||||
|
||||
<!-- Training menus -->
|
||||
<menuitem name="training-root" parent="hr-root" if="__config__.app.isApp('training')" title="Training" icon="fa-graduation-cap" icon-background="#84429f"/>
|
||||
|
||||
<menuitem name="training-register-all" parent="training-root" title="All trainings" action="training.register.all" />
|
||||
|
||||
<action-view name="training.register.all" model="com.axelor.apps.talent.db.TrainingRegister" title="All trainings">
|
||||
<view name="training-register-grid" type="grid" />
|
||||
<view name="training-register-form" type="form" />
|
||||
<view-param name="search-filters" value="my-training-register-fitlers"/>
|
||||
<context name="_employeeId" expr="eval:__user__.employee?.id" />
|
||||
<context name="_employeeList" expr="eval:([0] + __user__.teamSet.members.employee.id).flatten()" />
|
||||
</action-view>
|
||||
|
||||
<menuitem name="training-dashboard" parent="training-root" title="Training dashboard" action="training.dashboard" />
|
||||
|
||||
<action-view name="training.dashboard" title="Training dashboard">
|
||||
<view type="dashboard" name="training.dashboard"/>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="training-conf" parent="training-root" title="Configuration" icon="fa-cog"/>
|
||||
|
||||
<menuitem name="training-category-all" parent="training-conf" title="Categories" action="training.category.all" />
|
||||
|
||||
<action-view name="training.category.all" model="com.axelor.apps.talent.db.TrainingCategory" title="Categories">
|
||||
<view name="training-category-grid" type="grid" />
|
||||
<view name="training-category-form" type="form" />
|
||||
</action-view>
|
||||
|
||||
<menuitem name="training-training-all" parent="training-conf" title="Trainings" action="training.training.all" />
|
||||
|
||||
<action-view name="training.training.all" model="com.axelor.apps.talent.db.Training" title="Trainings">
|
||||
<view name="training-grid" type="grid" />
|
||||
<view name="training-form" type="form" />
|
||||
</action-view>
|
||||
|
||||
<menuitem name="training-session-all" parent="training-conf" title="Training sessions" action="training.session.all" />
|
||||
|
||||
<action-view name="training.session.all" model="com.axelor.apps.talent.db.TrainingSession" title="Training sessions">
|
||||
<view name="training-session-grid" type="grid" />
|
||||
<view name="training-session-form" type="form" />
|
||||
</action-view>
|
||||
|
||||
<!-- Appraisal menus-->
|
||||
<menuitem name="appraisal-root" parent="hr-root" title="Appraisals" if="__config__.app.isApp('appraisal')" icon="fa-comments-o" icon-background="#84429f"/>
|
||||
|
||||
<menuitem name="appraisal-all-appraisals" title="Appraisals" action="appraisal.all.appraisals" parent="appraisal-root" />
|
||||
|
||||
<action-view name="appraisal.all.appraisals"
|
||||
model="com.axelor.apps.talent.db.Appraisal" title="Appraisals">
|
||||
<view name="appraisal-grid" type="grid" />
|
||||
<view name="appraisal-form" type="form" />
|
||||
<view-param name="search-filters" value="appraisal-fitlers" />
|
||||
<domain>self.isTemplate = false</domain>
|
||||
<context name="_userId" expr="eval:__user__.id" />
|
||||
<context name="_teamUserIds" expr="eval:([0] + __user__.teamSet.members.id).flatten()" />
|
||||
</action-view>
|
||||
|
||||
<menuitem name="appraisal-config" title="Configuration" parent="appraisal-root" icon="fa-cog"/>
|
||||
|
||||
<menuitem name="appraisal-template-appraisals" title="Appraisal templates" action="appraisal.template.appraisals" parent="appraisal-config" />
|
||||
|
||||
<action-view name="appraisal.template.appraisals" title="Appraisal template" model="com.axelor.apps.talent.db.Appraisal">
|
||||
<view type="grid" name="appraisal-template-grid"/>
|
||||
<view type="form" name="appraisal-template-form"/>
|
||||
<domain>self.isTemplate = true</domain>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="appraisal-config-appraisal-type" title="Appraisal types" action="appraisal.config.appraisal.type" parent="appraisal-config" />
|
||||
|
||||
<action-view name="appraisal.config.appraisal.type" title="Appraisal types" model="com.axelor.apps.talent.db.AppraisalType">
|
||||
<view type="grid" name="appraisal-type-grid"/>
|
||||
<view type="form" name="appraisal-type-form"/>
|
||||
</action-view>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<selection name="training.register.rating.select">
|
||||
<option value="0">0 %</option>
|
||||
<option value="10">10 %</option>
|
||||
<option value="20">20 %</option>
|
||||
<option value="30">30 %</option>
|
||||
<option value="40">40 %</option>
|
||||
<option value="50">50 %</option>
|
||||
<option value="60">60 %</option>
|
||||
<option value="70">70 %</option>
|
||||
<option value="80">80 %</option>
|
||||
<option value="90">90 %</option>
|
||||
<option value="100">100 %</option>
|
||||
</selection>
|
||||
|
||||
<selection name="training.register.status.select">
|
||||
<option value="0">Requested</option>
|
||||
<option value="1">Planned</option>
|
||||
<option value="2">Completed</option>
|
||||
<option value="3">Canceled</option>
|
||||
</selection>
|
||||
|
||||
<selection name="training.session.status.select">
|
||||
<option value="1">Planned</option>
|
||||
<option value="2">Completed</option>
|
||||
<option value="3">Canceled</option>
|
||||
</selection>
|
||||
|
||||
<selection name="job.position.experience.select">
|
||||
<option value="0">0-2 years</option>
|
||||
<option value="1">2-5 years</option>
|
||||
<option value="2">5-10 years</option>
|
||||
<option value="3">+10 years</option>
|
||||
</selection>
|
||||
|
||||
<selection name="job.position.status.select">
|
||||
<option value="0">Draft</option>
|
||||
<option value="1">Open</option>
|
||||
<option value="2">On hold</option>
|
||||
<option value="3">Closed</option>
|
||||
<option value="4">Cancel</option>
|
||||
</selection>
|
||||
|
||||
<selection name="job.application.status.select">
|
||||
<option value="0">Opened</option>
|
||||
<option value="1">Hired</option>
|
||||
<option value="2">Rejected</option>
|
||||
<option value="3">Cancelled</option>
|
||||
</selection>
|
||||
|
||||
<selection name="crm.event.related.to.select" id="talent.crm.event.related.to.select">
|
||||
<option value="com.axelor.apps.talent.db.JobApplication">Job Application</option>
|
||||
<option value="com.axelor.apps.talent.db.TrainingRegister">Training Register</option>
|
||||
</selection>
|
||||
|
||||
<selection name="appraisal.status.selected">
|
||||
<option value="0">Draft</option>
|
||||
<option value="1">Sent</option>
|
||||
<option value="2">Completed</option>
|
||||
<option value="3">Canceled</option>
|
||||
</selection>
|
||||
|
||||
<selection name="job.position.position.status">
|
||||
<option value="0">Cadre</option>
|
||||
<option value="1">Technicien</option>
|
||||
</selection>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="tag-skill-grid" title="Tag skills" model="com.axelor.apps.talent.db.Skill">
|
||||
<field name="name" />
|
||||
</grid>
|
||||
|
||||
<form name="tag-skill-form" title="Tag skill" model="com.axelor.apps.talent.db.Skill" width="large">
|
||||
<panel name="namePanel">
|
||||
<field name="name" />
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="talent-source-grid" title="Source" model="com.axelor.apps.talent.db.TalentSource">
|
||||
<field name="code" x-bind="{{code|unaccent|uppercase}}" />
|
||||
<field name="name" />
|
||||
</grid>
|
||||
|
||||
<form name="talent-source-form" title="Source" model="com.axelor.apps.talent.db.TalentSource" width="large">
|
||||
<panel name="mainPanel">
|
||||
<field name="code" x-bind="{{code|unaccent|uppercase}}" />
|
||||
<field name="name" />
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="training-grid" title="Trainings" model="com.axelor.apps.talent.db.Training">
|
||||
<field name="name" />
|
||||
<field name="category" />
|
||||
<field name="company" if="__config__.app.getApp('base').getEnableMultiCompany()"/>
|
||||
<field name="duration" />
|
||||
<field name="mandatoryTraining" />
|
||||
</grid>
|
||||
|
||||
<form name="training-form" title="Training" model="com.axelor.apps.talent.db.Training" width="large"
|
||||
onNew="action-training-set-default" readonlyIf="$popup()" >
|
||||
<panel name="mainPanel">
|
||||
<field name="name" />
|
||||
<field name="category" />
|
||||
<field name="company" />
|
||||
<field name="duration" />
|
||||
<field name="mandatoryTraining" colSpan="4" />
|
||||
<field name="skillSet" colSpan="8" widget="tag-select" />
|
||||
<field name="requiredTrainingSet" colSpan="12" />
|
||||
<field name="description" colSpan="12" />
|
||||
<field name="program" colSpan="12" widget="html" />
|
||||
<field name="objectives" colSpan="12" />
|
||||
<button name="registerTrainingBtn" title="Register training" onClick="action-training-register-training" colSpan="4" />
|
||||
<field name="rating" widget="progress" readonly="true" colSpan="8" />
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<action-record name="action-training-set-default" model="com.axelor.apps.talent.db.Training">
|
||||
<field name="company" expr="eval:__user__.activeCompany"/>
|
||||
</action-record>
|
||||
|
||||
<action-view name="action-training-register-training" title="Register training" model="com.axelor.apps.talent.db.TrainingRegister">
|
||||
<view type="form" name="training-register-form"/>
|
||||
<view type="grid" name="training-register-grid"/>
|
||||
<context name="_training" expr="eval:__self__"/>
|
||||
</action-view>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="training-category-grid" title="Training Categories" model="com.axelor.apps.talent.db.TrainingCategory">
|
||||
<field name="name" />
|
||||
</grid>
|
||||
|
||||
<form name="training-category-form" title="Training Category" model="com.axelor.apps.talent.db.TrainingCategory" width="large">
|
||||
<panel name="namePanel">
|
||||
<field name="name" />
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="training-register-grid" title="Training registers" model="com.axelor.apps.talent.db.TrainingRegister">
|
||||
<field name="training" />
|
||||
<field name="trainingSession" />
|
||||
<field name="employee" />
|
||||
<field name="fromDate" />
|
||||
<field name="toDate" />
|
||||
<field name="statusSelect" />
|
||||
<field name="ratingSelect" widget="SelectProgress"/>
|
||||
</grid>
|
||||
|
||||
<form name="training-register-form" title="Training register" model="com.axelor.apps.talent.db.TrainingRegister" width="large"
|
||||
onNew="action-training-register-default" onSave="action-group-training-register-save-click">
|
||||
<panel name="statusPanel" title="Status">
|
||||
<field name="statusSelect" widget="NavSelect" readonly="true" colSpan="12" showTitle="false"/>
|
||||
</panel>
|
||||
<panel name="detailPanel">
|
||||
<field name="training" />
|
||||
<field name="trainingSession" onChange="action-training-session-change" onSelect="action-training-register-training-session-domain"/>
|
||||
<field name="employee" />
|
||||
<spacer name="employeeSpacer"/>
|
||||
<field name="fromDate" />
|
||||
<field name="toDate" />
|
||||
</panel>
|
||||
<panel name="actionPanel" itemSpan="12" sidebar="true">
|
||||
<button name="planBtn" title="Accept/plan" showIf="statusSelect == 0" onClick="save,action-training-register-method-plan"/>
|
||||
<button name="completeBtn" title="Training completed" showIf="statusSelect == 1" onClick="save,action-training-register-method-complete"/>
|
||||
<button name="cancelBtn" title="Cancel" onClick="save,action-training-register-method-cancel"/>
|
||||
<field name="ratingSelect" widget="SelectProgress"/>
|
||||
<field name="calendar"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<calendar name="training-register-calendar" model="com.axelor.apps.talent.db.TrainingRegister" eventStart="fromDate" eventStop="toDate" title="Training register" colorBy="statusSelect">
|
||||
<field name="training"/>
|
||||
<field name="statusSelect"/>
|
||||
<field name="ratingSelect" />
|
||||
</calendar>
|
||||
|
||||
<action-record name="action-training-session-change" model="com.axelor.apps.talent.db.TrainingRegister">
|
||||
<field name="training" expr="eval:trainingSession.training" if="training == null"/>
|
||||
<field name="fromDate" expr="eval:trainingSession?.fromDate" if="trainingSession != null"/>
|
||||
<field name="toDate" expr="eval:trainingSession?.toDate" if="trainingSession != null"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-training-register-default" model="com.axelor.apps.talent.db.TrainingRegister">
|
||||
<field name="training" expr="eval:_training" />
|
||||
<field name="employee" expr="eval:__user__.employee" />
|
||||
<field name="trainingSession" expr="eval:_trainingSession" />
|
||||
<field name="fromDate" expr="eval:_fromDate"/>
|
||||
<field name="toDate" expr="eval:_toDate"/>
|
||||
</action-record>
|
||||
|
||||
<action-attrs name="action-training-register-training-session-domain">
|
||||
<attribute name="domain" for="trainingSession" expr="eval:"self.training.id = ${training.id}"" if="training != null"/>
|
||||
<attribute name="domain" for="trainingSession" expr="eval:null" if="training == null"/>
|
||||
</action-attrs>
|
||||
|
||||
<action-method name="action-training-register-method-plan">
|
||||
<call class="com.axelor.apps.talent.web.TrainingRegisterController" method="plan"/>
|
||||
</action-method>
|
||||
|
||||
<action-method name="action-training-register-method-update-event-calendar">
|
||||
<call class="com.axelor.apps.talent.web.TrainingRegisterController" method="updateEventCalendar"/>
|
||||
</action-method>
|
||||
|
||||
<action-method name="action-training-register-method-complete">
|
||||
<call class="com.axelor.apps.talent.web.TrainingRegisterController" method="complete"/>
|
||||
</action-method>
|
||||
|
||||
<action-method name="action-training-register-method-cancel">
|
||||
<call class="com.axelor.apps.talent.web.TrainingRegisterController" method="cancel"/>
|
||||
</action-method>
|
||||
|
||||
<action-method name="action-training-register-update-old-rating">
|
||||
<call class="com.axelor.apps.talent.web.TrainingRegisterController" method="updateOldRating"/>
|
||||
</action-method>
|
||||
|
||||
<search-filters name="my-training-register-fitlers" model="com.axelor.apps.talent.db.Appraisal" title="My traning filters">
|
||||
<filter title="My upcoming trainings">
|
||||
<domain>self.employee.id = :_employeeId and self.statusSelect = 1</domain>
|
||||
</filter>
|
||||
<filter title="My completed trainings">
|
||||
<domain>self.employee.id = :_employeeId and self.statusSelect = 2</domain>
|
||||
</filter>
|
||||
<filter title="Upcoming trainings of all employees of a team">
|
||||
<domain>self.employee.id in :_employeeList and self.statusSelect = 1</domain>
|
||||
</filter>
|
||||
<filter title="Completed trainings of all employees of a team">
|
||||
<domain>self.employee.id in :_employeeList and self.statusSelect = 2</domain>
|
||||
</filter>
|
||||
</search-filters>
|
||||
|
||||
<action-group name="action-group-training-register-save-click">
|
||||
<action name="action-training-register-update-old-rating"/>
|
||||
<action if="__this__.calendar != null && __this__.calendar != __self__?.calendar" name="action-training-register-method-update-event-calendar"/>
|
||||
</action-group>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="training-session-grid" title="Training sessions" model="com.axelor.apps.talent.db.TrainingSession">
|
||||
<field name="training" />
|
||||
<field name="fromDate" />
|
||||
<field name="toDate" />
|
||||
<field name="statusSelect" />
|
||||
<field name="nbrRegistered" />
|
||||
<field name="location" />
|
||||
<field name="rating" widget="progress"/>
|
||||
</grid>
|
||||
|
||||
<form name="training-session-form" title="Training session" model="com.axelor.apps.talent.db.TrainingSession" width="large" readonlyIf="$popup()">
|
||||
<panel name="statusPanel" title="Status">
|
||||
<field name="statusSelect" colSpan="12" widget="NavSelect" showTitle="false" />
|
||||
</panel>
|
||||
<panel name="detailPanel">
|
||||
<field name="training" onChange="action-training-session-training-change" />
|
||||
<field name="location" />
|
||||
<field name="fromDate" />
|
||||
<field name="toDate" />
|
||||
<field name="duration" />
|
||||
<panel-dashlet name="employeeRegisteredPanel" action="action-dashlet-training-session-employee-registered" colSpan="12"/>
|
||||
</panel>
|
||||
<panel name="actionPanel" itemSpan="12" sidebar="true">
|
||||
<button name="registerTrainingBtn" title="Register training" onClick="save,action-training-session-register-training" showIf="statusSelect == 1"/>
|
||||
<button name="closeSessionBtn" title="Close session" onClick="save,action-training-session-method-close-session" showIf="statusSelect != 3" />
|
||||
<field name="nbrRegistered" readonly="true"/>
|
||||
<field name="rating" widget="progress" readonly="true" />
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<action-record name="action-training-session-training-change" model="com.axelor.apps.talent.db.TrainingSession">
|
||||
<field name="duration" expr="eval:training.duration" if="training != null"/>
|
||||
</action-record>
|
||||
|
||||
<action-view name="action-dashlet-training-session-employee-registered" title="Employee registred" model="com.axelor.apps.hr.db.Employee">
|
||||
<view type="grid" name="employee-grid"/>
|
||||
<view type="form" name="employee-form"/>
|
||||
<view-param name="search-filters" value="employee-filters"/>
|
||||
<domain>self.id in (:_employeeIds)</domain>
|
||||
<context name="_employeeIds" expr="eval:[0] + __repo__(TrainingRegister).all().filter('self.trainingSession.id = ' + id).fetch().collect{it->it.employee?.id}"/>
|
||||
</action-view>
|
||||
|
||||
<action-view name="action-training-session-register-training" title="Register training" model="com.axelor.apps.talent.db.TrainingRegister">
|
||||
<view type="form" name="training-register-form"/>
|
||||
<view type="grid" name="training-register-grid"/>
|
||||
<context name="_trainingSession" expr="eval:__self__"/>
|
||||
<context name="_training" expr="eval:__self__.training"/>
|
||||
<context name="_fromDate" expr="eval:__self__.fromDate"/>
|
||||
<context name="_toDate" expr="eval:__self__.toDate"/>
|
||||
</action-view>
|
||||
|
||||
<action-method name="action-training-session-method-close-session">
|
||||
<call class="com.axelor.apps.talent.web.TrainingSessionController" method="closeSession"/>
|
||||
</action-method>
|
||||
|
||||
</object-views>
|
||||
Reference in New Issue
Block a user