将不同的员工数据放入Quickview

时间:2019-08-06 13:25:57

标签: arrays

问题:当我单击员工图标时,每个快速查看都有相同的数据。

需要:如果我单击一个雇员图标,则应该有单击的雇员图标的数据。它不应在每个员工图标上显示相同的数据。

请你帮我一下:)

View1.controller.js:

sap.ui.define([
	"jquery.sap.global",
	"sap/ui/core/Fragment",
	"sap/ui/core/mvc/Controller",
	"sap/ui/model/json/JSONModel",
	"sap/m/MessageToast",
	"sap/m/Popover",
	"sap/m/Dialog",
	"sap/m/MessageBox",
	"sap/m/List",
	"sap/m/StandardListItem",
	"sap/m/Button"
], function (jQuery, Fragment, Controller, JSONModel, MessageToast, Popover, Dialog, MessageBox, List, StandardListItem, Button) {
	"use strict";
	var PageController = Controller.extend(".........controller.View1", {
		oEmployeeModel: new JSONModel(),
		oEmployeeData: new JSONModel(),
		onInit: function () {


			var mEmployeeData = {
				width: "320px",
				pages: [{
					pageId: "employeePageId",
					header: "Mitarbeiter Info",
					icon: "sap-icon://employee",
					title: "......",
					description: "Teamleiter",
					groups: [{
						heading: "Kontakt Details",
						elements: [{
							label: "Handy",
							value: "........"
//							elementType: sap.m.QuickViewGroupElementType.mobile
						}, {
							label: "Festnetz",
							value: "............."
//							elementType: sap.m.QuickViewGroupElementType.phone
						}, {
							label: "Email",
							value: "........",
							emailSubject: "Subject",
							elementType: sap.m.QuickViewGroupElementType.email
						}, {
							label: "Projekt",
							value: "........."
//							elementType: sap.m.QuickViewGroupElementType.pageLink,
//							pageLinkId: "page"
						}]
					}, {
						heading: "Unternehmen",
						elements: [{
							label: "Name",
							value: "...........",
//							url: ".............",
							elementType: sap.m.QuickViewGroupElementType.link
						}, {
							label: "Adresse",
							value: "..............."
						}]
					}]
				}]
			};
			// create model
			var oModel = new JSONModel();
			oModel.setData({
				startDate: new Date(2019, 7, 5, 7, 0),
				minDate: new Date(2019, 0, 1, 0, 0, 0),
				maxDate: new Date(2050, 11, 31, 23, 59, 59),
				people: [{
					pageId: "page",
					pic: "sap-icon://employee",
					name: "...............",
					role: "Teamleiter",
					appointments: [{
						start: new Date(2019, 7, 5, 9, 0),
						end: new Date(2019, 7, 9, 9, 30),
						title: "Meeting",
						type: "Type07",
						icon: "sap-icon://activate",
						tentative: false

					},{
					start: new Date(2019, 5, 26, 5, 11),
						end: new Date(2019, 5, 14, 5, 11),
						title: "Meeting",
						type: "Type07",
						icon: "sap-icon://activate",
						tentative: false
					}]
				}, {
					pic: "sap-icon://employee",
					name: ".............",
					role: "Teammitglied",
					appointments: [{
						start: new Date(2019, 7, 5, 8, 0),
						end: new Date(2019, 7, 9, 8, 0),
						title: "Urlaub",
						type: "Type01",
						icon: "sap-icon://activate",
						tentative: false
					},{
					start: new Date(2019, 5, 17, 5, 11),
						end: new Date(2019, 5, 18, 5, 11),
						title: "Meeting",
						type: "Type07",
						icon: "sap-icon://activate",
						tentative: false
						}]
				}, {
					pic: "sap-icon://employee",
					name: ".............",
					role: "Teammitglied",
					appointments: [{
							start: new Date(2019, 7, 9, 11, 0),
							end: new Date(2019, 7, 9, 11, 30),
							title: "Besprechungstermin",
							type: "Type01",
							icon: "sap-icon://activate",
							tentative: false
						},
											{
												start: new Date(2019, 5, 19, 5, 11),
												end: new Date(2019, 5, 20, 5, 11),
												title: "Schulung",
												type: "Type01",
												icon: "sap-icon://activate",
												tentative: false
										}
					]
				}]
			});
			this.oEmployeeModel.setData(mEmployeeData);
		
			this.getView().setModel(oModel);
		},
		
		openHarveyBallMicroChart: function(oEvent) {   
			var oAppointment = oEvent.getParameter("appointment");
			
				if (oAppointment) {
					this._handleSingleAppointment(oAppointment);
				} else {
					this._handleGroupAppointments(oEvent);
				}
			
    if (!this._oPopover) {
        this._oPopover = sap.ui.xmlfragment("......view.Popover", this);// create popover
        this.getView().addDependent(this._oPopover);
    }

},

	
		onAfterRendering: function () {
			var oButton = this.byId('showQuickView');
			oButton.$().attr('aria-haspopup', true);
			oButton = this.byId("employeeQuickView");
			oButton.$().attr("aria-haspopup", true);
			oButton = this.byId("genericQuickView");
			oButton.$().attr("aria-haspopup", true);
	
		}, 
		openQuickView: function (oEvent, oModel) {
			this.createPopover();
			this._oQuickView.setModel(oModel);
			var oButton = oEvent.getSource();
			jQuery.sap.delayedCall(0, this, function () {
				this._oQuickView.openBy(oButton);
			});
		},

		
		handleRowHeaderClick: function (oEvent) {
			this.openQuickView(oEvent, this.oEmployeeModel);
			this._oQuickView.setPlacement(sap.m.PlacementType.PreferredLeftOrFlip);
		},
		
			handleOkButton: function (oEvent) {
				var oFrag =  sap.ui.core.Fragment,
					oStartValue = oFrag.byId("myPopoverFrag", "startDate").getDateValue(),
					oEndValue = oFrag.byId("myPopoverFrag", "endDate").getDateValue(),
					sInfoValue = oFrag.byId("myPopoverFrag", "moreInfo").getValue(),
					sAppointmentPath = this._oDetailsPopover.getBindingContext().sPath;

				this._oDetailsPopover.getModel().setProperty(sAppointmentPath + "/start", oStartValue);
				this._oDetailsPopover.getModel().setProperty(sAppointmentPath + "/end", oEndValue);
				this._oDetailsPopover.getModel().setProperty(sAppointmentPath + "/info", sInfoValue);
				this._oDetailsPopover.close();
			},

			handleCancelButton: function (oEvent) {
				this._oDetailsPopover.close();
			},
		
		createPopover: function () {
			if (this._oQuickView) {
				this._oQuickView.destroy();
			}
			this._oQuickView = sap.ui.xmlfragment("........view.QuickView", this);
			this.getView().addDependent(this._oQuickView);
	},

		handleAppointmentCreate: function (oEvent) {
			var oFrag = sap.ui.core.Fragment,
				oDateTimePickerStart, oDateTimePickerEnd, oBeginButton;
			this._createDialog();
			oFrag.byId("myFrag", "selectPerson").setSelectedItem(oFrag.byId("myFrag", "selectPerson").getItems()[0]);
			oDateTimePickerStart = oFrag.byId("myFrag", "startDate");
			oDateTimePickerEnd = oFrag.byId("myFrag", "endDate");
			oBeginButton = this.oNewAppointmentDialog.getBeginButton();
			oDateTimePickerStart.setValue("");
			oDateTimePickerEnd.setValue("");
			oDateTimePickerStart.setValueState("None");
			oDateTimePickerEnd.setValueState("None");
			this.updateButtonEnabledState(oDateTimePickerStart, oDateTimePickerEnd, oBeginButton);
			this.oNewAppointmentDialog.open();
		},
		handleAppointmentAddWithContext: function (oEvent) {
			var oFrag = sap.ui.core.Fragment,
				currentRow, sPersonName, oSelect, oSelectedItem, oSelectedIntervalStart, oStartDate, oSelectedIntervalEnd, oEndDate,
				oDateTimePickerStart, oDateTimePickerEnd, oBeginButton;
			this._createDialog();
			currentRow = oEvent.getParameter("row");
			sPersonName = currentRow.getTitle();
			oSelect = this.oNewAppointmentDialog.getContent()[0].getContent()[1];
			oSelectedItem = oSelect.getItems().filter(function (oItem) {
				return oItem.getText() === sPersonName;
			})[0];
			oSelect.setSelectedItem(oSelectedItem);
			oSelectedIntervalStart = oEvent.getParameter("startDate");
			oStartDate = oFrag.byId("myFrag", "startDate");
			oStartDate.setDateValue(oSelectedIntervalStart);
			oSelectedIntervalEnd = oEvent.getParameter("endDate");
			oEndDate = oFrag.byId("myFrag", "endDate");
			oEndDate.setDateValue(oSelectedIntervalEnd);
			oDateTimePickerStart = oFrag.byId("myFrag", "startDate");
			oDateTimePickerEnd = oFrag.byId("myFrag", "endDate");
			oBeginButton = this.oNewAppointmentDialog.getBeginButton();
			oDateTimePickerStart.setValueState("None");
			oDateTimePickerEnd.setValueState("None");
			this.updateButtonEnabledState(oDateTimePickerStart, oDateTimePickerEnd, oBeginButton);
			this.oNewAppointmentDialog.open();
		},
		_validateDateTimePicker: function (oDateTimePickerStart, oDateTimePickerEnd) {
			var oStartDate = oDateTimePickerStart.getDateValue(),
				oEndDate = oDateTimePickerEnd.getDateValue(),
				sValueStateText = "Start date should be before End date";
			if (oStartDate && oEndDate && oEndDate.getTime() <= oStartDate.getTime()) {
				oDateTimePickerStart.setValueState("Error");
				oDateTimePickerEnd.setValueState("Error");
				oDateTimePickerStart.setValueStateText(sValueStateText);
				oDateTimePickerEnd.setValueStateText(sValueStateText);
			} else {
				oDateTimePickerStart.setValueState("None");
				oDateTimePickerEnd.setValueState("None");
			}
		},
		updateButtonEnabledState: function (oDateTimePickerStart, oDateTimePickerEnd, oButton) {
			var bEnabled = oDateTimePickerStart.getValueState() !== "Error" && oDateTimePickerStart.getValue() !== "" && oDateTimePickerEnd.getValue() !==
				"" && oDateTimePickerEnd.getValueState() !== "Error";
			oButton.setEnabled(bEnabled);
		},
		handleDetailsChange: function (oEvent) {
			var oFrag = sap.ui.core.Fragment,
				oDTPStart = oFrag.byId("myPopoverFrag", "startDate"),
				oDTPEnd = oFrag.byId("myPopoverFrag", "endDate"),
				oOKButton = oFrag.byId("myPopoverFrag", "OKButton");
			if (oEvent.getParameter("valid")) {
				this._validateDateTimePicker(oDTPStart, oDTPEnd);
			} else {
				oEvent.getSource().setValueState("Error");
			}
			this.updateButtonEnabledState(oDTPStart, oDTPEnd, oOKButton);
		}, 
		
		handleCreateChange: function (oEvent) {
			var oFrag = sap.ui.core.Fragment,
				oDateTimePickerStart = oFrag.byId("myFrag", "startDate"),
				oDateTimePickerEnd = oFrag.byId("myFrag", "endDate"),
				oBeginButton = this.oNewAppointmentDialog.getBeginButton();
			if (oEvent.getParameter("valid")) {
				this._validateDateTimePicker(oDateTimePickerStart, oDateTimePickerEnd);
			} else {
				oEvent.getSource().setValueState("Error");
			}
			this.updateButtonEnabledState(oDateTimePickerStart, oDateTimePickerEnd, oBeginButton);
		},
		_createDialog: function () {
			var oFrag = sap.ui.core.Fragment,
				that = this,
				oStartDate, oEndDate, sTitle, sInfoResponse, oNewAppointment, oModel, sPath, oPersonAppointments;
			if (!that.oNewAppointmentDialog) {
				that.oNewAppointmentDialog = new Dialog({
					title: "Add a new appointment",
					content: [sap.ui.xmlfragment("myFrag", ".............view.Create", this)],
					beginButton: new Button({
						text: "Create",
						enabled: false,
						press: function () {
							oStartDate = oFrag.byId("myFrag", "startDate").getDateValue();
							oEndDate = oFrag.byId("myFrag", "endDate").getDateValue();
							sTitle = oFrag.byId("myFrag", "inputTitle").getValue();
							sInfoResponse = oFrag.byId("myFrag", "moreInfo").getValue();
							if (oFrag.byId("myFrag", "startDate").getValueState() !== "Error" && oFrag.byId("myFrag", "endDate").getValueState() !==
								"Error") {
								oNewAppointment = {
									start: oStartDate,
									end: oEndDate,
									title: sTitle,
									info: sInfoResponse
								};
								oModel = that.getView().getModel();
								sPath = "/people/" + oFrag.byId("myFrag", "selectPerson").getSelectedIndex() + "/appointments";
								oPersonAppointments = oModel.getProperty(sPath);
								oPersonAppointments.push(oNewAppointment);
								oModel.setProperty(sPath, oPersonAppointments);
								that.oNewAppointmentDialog.close();
							}
						}
					}),
					endButton: new Button({
						text: "Close",
						press: function () {
							that.oNewAppointmentDialog.close();
						}
					})
				});
				that.oNewAppointmentDialog.addStyleClass("sapUiContentPadding");
				this.getView().addDependent(that.oNewAppointmentDialog);
			}
		},
		
		_handleSingleAppointment: function (oAppointment) {
			var oFrag = sap.ui.core.Fragment,
				oAppBC, oDateTimePickerStart, oDateTimePickerEnd, oInfoInput, oOKButton;
			if (!this._oDetailsPopover) {
				this._oDetailsPopover = sap.ui.xmlfragment("myPopoverFrag", "..........view.Popover", this);
				this.getView().addDependent(this._oDetailsPopover);
			}
			// the binding context is needed, because later when the OK button is clicked, the information must be updated
			oAppBC = oAppointment.getBindingContext();
			this._oDetailsPopover.setBindingContext(oAppBC);
			oDateTimePickerStart = oFrag.byId("myPopoverFrag", "startDate");
			oDateTimePickerEnd = oFrag.byId("myPopoverFrag", "endDate");
			oInfoInput = oFrag.byId("myPopoverFrag", "moreInfo");
			oOKButton = oFrag.byId("myPopoverFrag", "OKButton");
			oDateTimePickerStart.setDateValue(oAppointment.getStartDate());
			oDateTimePickerEnd.setDateValue(oAppointment.getEndDate());
			oInfoInput.setValue(oAppointment.getText());
			oDateTimePickerStart.setValueState("None");
			oDateTimePickerEnd.setValueState("None");
			this.updateButtonEnabledState(oDateTimePickerStart, oDateTimePickerEnd, oOKButton);
			this._oDetailsPopover.openBy(oAppointment);
		},
		_handleGroupAppointments: function (oEvent) {
			var aAppointments, sGroupAppointmentType, sGroupPopoverValue, sGroupAppDomRefId, bTypeDiffer;
			aAppointments = oEvent.getParameter("appointments");
			sGroupAppointmentType = aAppointments[0].getType();
			sGroupAppDomRefId = oEvent.getParameter("domRefId");
			bTypeDiffer = aAppointments.some(function (oAppointment) {
				return sGroupAppointmentType !== oAppointment.getType();
			});
			if (bTypeDiffer) {
				sGroupPopoverValue = aAppointments.length + " Appointments of different types selected";
			} else {
				sGroupPopoverValue = aAppointments.length + " Appointments of the same " + sGroupAppointmentType + " selected";
			}
			if (!this._oGroupPopover) {
					this._oGroupPopover = new Popover({
						title: "Group Appointments",
						content: new Label({
							text: sGroupPopoverValue
						})
					});
			} else {
				this._oGroupPopover.getContent()[0].setText(sGroupPopoverValue);
			}
			this._oGroupPopover.addStyleClass("sapUiPopupWithPadding");
			this._oGroupPopover.openBy(document.getElementById(sGroupAppDomRefId));
		}, 
		
		onPress: function (oEvent) { 
			//This code was generated by the layout editor. 
		} 
	});
	return PageController;
});

QuickView.fragment.xml:

<core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core">
	<QuickView id="quickView" pages="{ path : '/pages', templateShareable : 'true'}" navigate=".onNavigate">
		<QuickViewPage
				pageId="{pageId}"
				header="{header}"
				icon="{icon}"
				title="{title}"
				titleUrl="{titleUrl}"
				description="{description}"
				groups="{ path : 'groups', templateShareable : 'true'}">
			<QuickViewGroup heading="{heading}" elements="{ path : 'elements', templateShareable : 'true'}">
				<QuickViewGroupElement
						label="{label}"
						value="{value}"
						url="{url}"
						type="{elementType}"
						pageLinkId="{pageLinkId}"
						emailSubject="{emailSubject}"
						target="{target}">
				</QuickViewGroupElement>
			</QuickViewGroup>
		</QuickViewPage>
	</QuickView>
</core:FragmentDefinition>

View1.view.xml:

<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns:unified="sap.ui.unified" xmlns:l="sap.ui.layout" xmlns="sap.m"
	controllerName=".......controller.View1">
	<VBox class="sapUiSmallMargin">
		<PlanningCalendar rowHeaderClick="handleRowHeaderClick" id="PC1" showIntervalHeaders="false" startDate="{path: '/startDate'}"
			minDate="{path: '/minDate'}" maxDate="{path: '/maxDate'}" rows="{path: '/people'}" appointmentsVisualization="Filled"
			appointmentSelect="openHarveyBallMicroChart">
			<toolbarContent>
				<Title xmlns:action="http://......." text="Teamkalender" titleStyle="H4"
					validateFieldGroup="action"
					action:wiring="\{'validateFieldGroup':\{'navigation':\{'routeName':'EmployeeDetails_binded','keys':[\{'name':'EmployeeID','type':'Edm.Int32'\}]\}\}\}"/>
				<ToolbarSpacer/>
				<Button id="addButton" icon="sap-icon://add" press="handleAppointmentCreate" tooltip="Add"/>
			</toolbarContent>
			<rows>
				<PlanningCalendarRow title="{name}" icon="{pic}" text="{role}" appointments="{path : 'appointments', templateShareable: 'false'}"
					intervalHeaders="{path: 'headers', templateShareable: 'true'}">
					<appointments>
						<unified:CalendarAppointment class="size" startDate="{start}" endDate="{end}" icon="{pic}" tooltip="{tooltip}" title="{title}" text="{info}"
							type="{type}" tentative="{tentative}"/>
					</appointments>
					<intervalHeaders>
						<unified:CalendarAppointment startDate="{start}" endDate="{end}" icon="{pic}" title="{title}" type="{type}"/>
					</intervalHeaders>
				</PlanningCalendarRow>
			</rows>
		</PlanningCalendar>
	</VBox>
</mvc:View>

这是我的快速查看[link](https://imgur.com/a/vws6srn

0 个答案:

没有答案