If JIRA is not activated the part to do the synchronization with the server in the project edition shouldn't be visible. FEA: ItEr77S16JiraAndTimConnectorContributionIntegration
346 lines
19 KiB
Text
346 lines
19 KiB
Text
<!--
|
|
This file is part of LibrePlan
|
|
|
|
Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
|
|
Desenvolvemento Tecnolóxico de Galicia
|
|
Copyright (C) 2010-2012 Igalia, S.L.
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Affero General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
-->
|
|
|
|
<?component name="orderElementTree" macroURI="components/_orderElementTree.zul"
|
|
class="org.libreplan.web.orders.OrdersTreeComponent"?>
|
|
<?component name="listOrderElementHours" inline="true" macroURI="_listOrderElementHours.zul"?>
|
|
<?component name="listOrderElementAdvances" inline="true" macroURI="_listOrderElementAdvances.zul"?>
|
|
<?component name="listOrderElementLabels" class="org.libreplan.web.orders.labels.LabelsAssignmentToOrderElementComponent" macroURI="components/_listOrderElementLabels.zul"?>
|
|
<?component name="listOrderElementCriterionRequirements"
|
|
class="org.libreplan.web.orders.criterionrequirements.OrderElementCriterionRequirementComponent"
|
|
macroURI="/orders/_listOrderElementCriterionRequirements.zul"?>
|
|
<?component name="listOrderElementMaterials"
|
|
class="org.libreplan.web.orders.materials.OrderElementMaterialAssignmentsComponent"
|
|
macroURI="/orders/components/_listOrderElementMaterials.zul"?>
|
|
<?component name="listOrderElementTaskQualityForms" inline="true" macroURI="_listOrderElementTaskQualityForms.zul"?>
|
|
<?component name="listOrderElementAuthorizations" inline="true" macroURI="_listOrderElementAuthorizations.zul"?>
|
|
|
|
<window id="${arg.top_id}">
|
|
|
|
<tabbox id="tabboxOrder">
|
|
<tabs>
|
|
<tab id="tabOrderElements" label="${i18n:_('WBS (tasks)')}"
|
|
onSelect = "controller.setupOrderElementTreeController();"/>
|
|
<tab id="tabGeneralData" label="${i18n:_('General data')}" selected="true"
|
|
onSelect = "controller.setupOrderDetails();"/>
|
|
<tab id="tabAssignedHours" label="${i18n:_('Cost')}"
|
|
onSelect = "controller.setupAssignedHoursToOrderElementController();"/>
|
|
<tab id="tabAdvances" label="${i18n:_('Progress')}"
|
|
onSelect = "controller.setupManageOrderElementAdvancesController();"/>
|
|
<tab id="tabLabels" label="${i18n:_('Labels')}"
|
|
onSelect = "controller.setupAssignedLabelsToOrderElementController();"/>
|
|
<tab id="tabRequirements" label="${i18n:_('Criterion Requirement')}"
|
|
onSelect = "controller.setupAssignedCriterionRequirementsToOrderElementController();"
|
|
onClick="controller.reloadHoursGroupOrder()" />
|
|
<tab id="tabMaterials" label="${i18n:_('Materials')}"
|
|
onSelect = "controller.setupAssignedMaterialsToOrderElementController();"/>
|
|
<tab id="tabTaskQualityForm" label="${i18n:_('Task quality forms')}"
|
|
onSelect = "controller.setupAssignedTaskQualityFormsToOrderElementController();"/>
|
|
<tab id="tabAuthorizations" label="${i18n:_('Authorizations')}"
|
|
onSelect = "controller.setupOrderAuthorizationController();"/>
|
|
</tabs>
|
|
<tabpanels>
|
|
<tabpanel sclass="orderelements-tab">
|
|
<orderElementTree id="orderElementTree" showCreateTemplateButton="true" />
|
|
</tabpanel>
|
|
<tabpanel id="tabPanelGeneralData" fulfill="tabGeneralData.onSelect">
|
|
<hbox width="100%">
|
|
<groupbox style="margin-top: 5px" sclass="assignedresources" closable="false" hflex="1">
|
|
<caption label="${i18n:_('Identification')}" />
|
|
|
|
<separator spacing="10px"/>
|
|
|
|
<grid fixedLayout="true" hflex="1">
|
|
<columns>
|
|
<column width="200px" />
|
|
<column />
|
|
</columns>
|
|
<rows>
|
|
<row>
|
|
<label value="${i18n:_('Name')}" />
|
|
<textbox value="@{controller.order.name}" hflex="1"
|
|
constraint="@{controller.chekValidProjectName}" />
|
|
</row>
|
|
<row>
|
|
<label value="${i18n:_('Code')}" />
|
|
<hbox>
|
|
<textbox value="@{controller.order.code}" hflex="1"
|
|
disabled="@{controller.codeAutogenerated}"
|
|
constraint="@{controller.chekValidProjectCode}" />
|
|
<checkbox label="${i18n:_('Generate code')}"
|
|
checked="@{controller.codeAutogenerated}" />
|
|
</hbox>
|
|
</row>
|
|
<row>
|
|
<label value="${i18n:_('Responsible')}" />
|
|
<textbox
|
|
value="@{controller.order.responsible}" width="200px"/>
|
|
</row>
|
|
<row>
|
|
<label value="${i18n:_('Description')}" />
|
|
<textbox
|
|
value="@{controller.order.description}"
|
|
rows="7" width="330px" />
|
|
</row>
|
|
<row>
|
|
<label value="${i18n:_('State')}" />
|
|
<listbox id="listOrderStatus" mold="select" rows="1" width="220px"
|
|
model="@{controller.orderStatus}"
|
|
selectedItem="@{controller.order.state}"
|
|
itemRenderer="org.libreplan.web.common.EnumsListitemRenderer" />
|
|
</row>
|
|
</rows>
|
|
</grid>
|
|
</groupbox>
|
|
|
|
<vbox hflex="1">
|
|
<groupbox style="margin-top: 5px" sclass="assignedresources" closable="false" hflex="1">
|
|
<caption label="${i18n:_('Planning Configuration')}" />
|
|
|
|
<separator spacing="10px"/>
|
|
|
|
<grid fixedLayout="true">
|
|
<columns>
|
|
<column width="180px" />
|
|
<column />
|
|
</columns>
|
|
<rows>
|
|
<row>
|
|
<label value="${i18n:_('Starting date')}" />
|
|
<datebox id="initDate"
|
|
value="@{controller.order.initDate}" />
|
|
</row>
|
|
<row>
|
|
<label value="${i18n:_('Deadline')}" />
|
|
<datebox id="deadline"
|
|
value="@{controller.order.deadline}"
|
|
disabled="@{controller.subcontractedProject}"/>
|
|
</row>
|
|
<row>
|
|
<label value="${i18n:_('Calendar')}" />
|
|
<combobox id="calendarCombobox" width="200px"
|
|
model="@{controller.baseCalendars}"
|
|
itemRenderer="@{controller.baseCalendarsComboitemRenderer}"
|
|
onSelect="controller.setBaseCalendar(self.selectedItem.value);" />
|
|
</row>
|
|
<row>
|
|
<label value="${i18n:_('Scheduling mode')}" />
|
|
<combobox id="schedulingMode" />
|
|
</row>
|
|
<row>
|
|
<label value="${i18n:_('Dependencies have priority')}" />
|
|
<checkbox
|
|
checked="@{controller.order.dependenciesConstraintsHavePriority}" />
|
|
</row>
|
|
</rows>
|
|
</grid>
|
|
</groupbox>
|
|
<groupbox style="margin-top: 5px" sclass="assignedresources" closable="false">
|
|
<caption label="${i18n:_('Cost')}" />
|
|
|
|
<separator spacing="10px"/>
|
|
|
|
<grid fixedLayout="true">
|
|
<columns>
|
|
<column width="120px" />
|
|
<column />
|
|
</columns>
|
|
<rows>
|
|
<row>
|
|
<label value="${i18n:_('Budget')}" />
|
|
<hbox align="center">
|
|
<label value="${i18n:_('Work')}" />
|
|
<decimalbox id="boxWorkBudget" width="80px" scale = "2"
|
|
value="@{controller.order.workBudget}"
|
|
onChange="controller.reloadTotalBudget(txtTotalBudget)"
|
|
format="@{controller.moneyFormat}"/>
|
|
<separator bar="false" spacing="15px" orient="vertical"/>
|
|
<label value="${i18n:_('Materials')}" />
|
|
<decimalbox id="boxMaterialsBudget" width="80px" scale="2"
|
|
value="@{controller.order.materialsBudget}"
|
|
onChange="controller.reloadTotalBudget(txtTotalBudget)"
|
|
format="@{controller.moneyFormat}"/>
|
|
<separator bar="false" spacing="15px" orient="vertical"/>
|
|
<label value=" ${i18n:_('Total')} :" />
|
|
<label id="txtTotalBudget" value="@{controller.order.totalBudget}"/>
|
|
<label value="@{controller.currencySymbol}"/>
|
|
</hbox>
|
|
</row>
|
|
<row>
|
|
<label value="${i18n:_('Calculated budget')}" />
|
|
<hbox>
|
|
<label id="budget" value="@{controller.order.budget}" />
|
|
<label value="@{controller.currencySymbol}"/>
|
|
</hbox>
|
|
</row>
|
|
<row>
|
|
<label value="${i18n:_('Total hours')}" />
|
|
<label value="@{controller.order.totalHours}"/>
|
|
</row>
|
|
</rows>
|
|
</grid>
|
|
</groupbox>
|
|
</vbox>
|
|
</hbox>
|
|
<groupbox style="margin-top: 5px" sclass="assignedresources" closable="false">
|
|
<caption label="${i18n:_('Customer information')}" />
|
|
<separator spacing="10px"/>
|
|
<hbox width="100%">
|
|
<separator spacing="10px" width="100%"/>
|
|
|
|
<grid fixedLayout="true" hflex="1">
|
|
<columns>
|
|
<column width="200px" />
|
|
<column />
|
|
</columns>
|
|
<rows>
|
|
<row>
|
|
<label value="${i18n:_('Project type')}" />
|
|
<label value="@{controller.projectType}" width="350px"/>
|
|
</row>
|
|
<row>
|
|
<label value="${i18n:_('External code')}" />
|
|
<textbox value="@{controller.order.externalCode}"
|
|
width="350px" disabled="true"/>
|
|
</row>
|
|
<row>
|
|
<label value="${i18n:_('Customer')}" />
|
|
<bandboxSearch id="bdExternalCompanies" widthBandbox="355px" widthListbox="370px"
|
|
finder="ExternalCompanyBandboxFinder"
|
|
model="@{controller.externalCompaniesAreClient}"
|
|
selectedElement="@{controller.order.customer}"
|
|
disabled="@{controller.subcontractedProject}"/>
|
|
</row>
|
|
<row>
|
|
<label value="${i18n:_('Customer reference')}" />
|
|
<textbox value="@{controller.order.customerReference}" width="350px"
|
|
disabled="@{controller.subcontractedProject}"/>
|
|
</row>
|
|
</rows>
|
|
</grid>
|
|
|
|
<separator spacing="20px"/>
|
|
<groupbox style="margin-top: 5px" sclass="assignedresources" closable="false"
|
|
visible="@{controller.subcontractedProject}" hflex="1">
|
|
<caption label="${i18n:_('Delivery dates requested by customer. ')}" />
|
|
<grid id="gridDeliveryDates"
|
|
model="@{controller.deliverDates}"
|
|
mold="paging" pageSize="4" fixedLayout="true" width="400px"
|
|
onInitRender="controller.setCurrentDeliveryDate(self);">
|
|
<columns>
|
|
<column label="${i18n:_('Delivery date')}" align="center" width="200px"/>
|
|
<column label="${i18n:_('Communication date')}" align="center"/>
|
|
</columns>
|
|
<rows>
|
|
<row self="@{each='deliverDate'}" value="@{deliverDate}">
|
|
<label value="@{deliverDate.deliverDate, converter='org.libreplan.web.common.typeconverters.DateConverter'}" />
|
|
<label value="@{deliverDate.saveDate, converter='org.libreplan.web.common.typeconverters.DateTimeConverter'}" />
|
|
</row>
|
|
</rows>
|
|
</grid>
|
|
</groupbox>
|
|
</hbox>
|
|
<separator spacing="20px"/>
|
|
<groupbox style="margin-top: 5px" sclass="assignedresources" closable="false"
|
|
visible="@{controller.subcontractedProject}">
|
|
<caption label="${i18n:_('Delivery dates asked by the subcontractor. ')}" />
|
|
<hbox align="bottom" sclass="add-resources-or-criteria">
|
|
<label value="${i18n:_('New end date for the customer')}" />
|
|
<datebox id="newEndDate"/>
|
|
<button label="${i18n:_('Add')}" onClick="controller.addAskedEndDate(newEndDate)"/>
|
|
</hbox>
|
|
|
|
<separator spacing="10px"/>
|
|
<grid id="gridAskedEndDates" model="@{controller.endDates}"
|
|
rowRenderer="@{controller.endDatesRenderer}"
|
|
mold="paging" pageSize="10" fixedLayout="true" width="880px">
|
|
<columns>
|
|
<column label="${i18n:_('Save date')}" sort="auto(saveDate)" align="center" width="220px"/>
|
|
<column label="${i18n:_('End date')}" align="center" width="220px"/>
|
|
<column label="${i18n:_('Communication date')}" align="center" width="220px"/>
|
|
<column label="${i18n:_('Operations')}" align="center"/>
|
|
</columns>
|
|
</grid>
|
|
</groupbox>
|
|
</groupbox>
|
|
<groupbox style="margin-top: 5px" sclass="jiraLabel" closable="false"
|
|
visible="@{controller.jiraActivated}">
|
|
<caption label="${i18n:_('JIRA import information')}" />
|
|
<separator spacing="10px"/>
|
|
<hbox width="100%">
|
|
<separator spacing="10px" width="100%"/>
|
|
|
|
<grid fixedLayout="true" hflex="1">
|
|
<columns>
|
|
<column width="200px" />
|
|
<column />
|
|
</columns>
|
|
<rows>
|
|
<row>
|
|
<label value="${i18n:_('JIRA label')}" width="50px"/>
|
|
<hbox>
|
|
<textbox id="txtImportedLabel" value="@{controller.order.importedLabel}"
|
|
width="350px" disabled="true"/>
|
|
<button label="${i18n:_('Sync with JIRA')}" id="syncWithJiraButton" disabled="@{controller.jiraDeactivated}"
|
|
onClick="controller.syncWithJira()" />
|
|
</hbox>
|
|
</row>
|
|
</rows>
|
|
</grid>
|
|
</hbox>
|
|
</groupbox>
|
|
</tabpanel>
|
|
<tabpanel>
|
|
<listOrderElementHours id="orderElementHours" fulfill="tabAssignedHours.onSelect"/>
|
|
</tabpanel>
|
|
<tabpanel>
|
|
<listOrderElementAdvances id="orderElementAdvances" fulfill="tabAdvances.onSelect"/>
|
|
</tabpanel>
|
|
<tabpanel>
|
|
<listOrderElementLabels id="orderElementLabels" fulfill="tabLabels.onSelect"/>
|
|
</tabpanel>
|
|
<tabpanel>
|
|
<listOrderElementCriterionRequirements id="orderElementCriterionRequirements"
|
|
fulfill="tabRequirements.onSelect"/>
|
|
</tabpanel>
|
|
<tabpanel>
|
|
<listOrderElementMaterials id="orderElementMaterials" fulfill="tabMaterials.onSelect"/>
|
|
</tabpanel>
|
|
<tabpanel>
|
|
<listOrderElementTaskQualityForms id="orderElementTaskQualityForms" fulfill="tabTaskQualityForm.onSelect"/>
|
|
</tabpanel>
|
|
<tabpanel>
|
|
<listOrderElementAuthorizations id="orderElementAuthorizations" fulfill="tabAuthorizations.onSelect"/>
|
|
</tabpanel>
|
|
</tabpanels>
|
|
</tabbox>
|
|
<popup id="jirasyncPopup" sclass="finder-popup">
|
|
<groupbox mold="3d" closable="false" width="420px">
|
|
<caption id="jiraSyncCaption" label="Select a label" />
|
|
<combobox id="comboJiraLabel" autodrop="true" mold="rounded" buttonVisible="false" width="400px"/>
|
|
<separator/>
|
|
<hbox>
|
|
<button id="startJiraSyncButton" />
|
|
<button id="cancelJiraSyncButton" />
|
|
</hbox>
|
|
</groupbox>
|
|
</popup>
|
|
</window>
|