fiveapples 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/fiveapples +7 -0
- data/lib/config5.ru +31 -0
- data/lib/fiveapples.db3 +0 -0
- data/lib/fiveapples.rb +46 -0
- data/lib/model.rb +58 -0
- data/lib/ui5/Component.js +41 -0
- data/lib/ui5/controller/BreederList.controller.js +68 -0
- data/lib/ui5/controller/Breeder_Create.controller.js +82 -0
- data/lib/ui5/controller/Breeder_Detail.controller.js +89 -0
- data/lib/ui5/controller/CultivarList.controller.js +46 -0
- data/lib/ui5/controller/Cultivar_Create.controller.js +100 -0
- data/lib/ui5/controller/Cultivar_Detail.controller.js +204 -0
- data/lib/ui5/controller/FiveApplesApp.controller.js +62 -0
- data/lib/ui5/controller/MCultivarList.controller.js +96 -0
- data/lib/ui5/controller/MenuList.controller.js +28 -0
- data/lib/ui5/controller/NotFound.controller.js +9 -0
- data/lib/ui5/controller/ParentageList.controller.js +71 -0
- data/lib/ui5/controller/Parentage_Create.controller.js +134 -0
- data/lib/ui5/controller/Parentage_Detail.controller.js +116 -0
- data/lib/ui5/controller/VibertBaseController.js +40 -0
- data/lib/ui5/i18n/i18n.properties +7 -0
- data/lib/ui5/index.html +33 -0
- data/lib/ui5/manifest.json +194 -0
- data/lib/ui5/model/formatter.js +1 -0
- data/lib/ui5/model/models.js +19 -0
- data/lib/ui5/view/BreederList.view.xml +50 -0
- data/lib/ui5/view/BreederOptio.fragment.xml +21 -0
- data/lib/ui5/view/Breeder_Create.view.xml +26 -0
- data/lib/ui5/view/Breeder_Detail.view.xml +53 -0
- data/lib/ui5/view/CultivarList.view.xml +58 -0
- data/lib/ui5/view/CultivarOptio.fragment.xml +23 -0
- data/lib/ui5/view/Cultivar_Create.view.xml +33 -0
- data/lib/ui5/view/Cultivar_Detail.view.xml +93 -0
- data/lib/ui5/view/FiveApplesApp.view.xml +9 -0
- data/lib/ui5/view/MCultivarList.view.xml +43 -0
- data/lib/ui5/view/MenuList.view.xml +18 -0
- data/lib/ui5/view/NotFound.view.xml +9 -0
- data/lib/ui5/view/ParentageList.view.xml +64 -0
- data/lib/ui5/view/Parentage_Create.view.xml +26 -0
- data/lib/ui5/view/Parentage_Detail.view.xml +51 -0
- metadata +128 -0
@@ -0,0 +1,116 @@
|
|
1
|
+
sap.ui.define([
|
2
|
+
"sap/ui/core/mvc/Controller",
|
3
|
+
"sap/m/MessageToast",
|
4
|
+
'sap/ui/core/Fragment',
|
5
|
+
'sap/ui/model/Filter',
|
6
|
+
"sap/ui/model/odata/ODataModel",
|
7
|
+
"sap/ui/core/routing/History",
|
8
|
+
"./VibertBaseController",
|
9
|
+
], function (Controller, MessageToast, Fragment, Filter, ODataModel, History, VibertBaseController) {
|
10
|
+
"use strict";
|
11
|
+
return VibertBaseController.extend("vibert.controller.Parentage_Detail", {
|
12
|
+
_attachDetailMatched: function () {
|
13
|
+
this._oRouter = sap.ui.core.UIComponent.getRouterFor(this);
|
14
|
+
this._oRouter.getRoute("parentage_detail").attachPatternMatched(this._onDetailMatched, this);
|
15
|
+
},
|
16
|
+
|
17
|
+
_onDetailMatched : function (oEvent) {
|
18
|
+
var oObject = oEvent.getParameter("arguments");
|
19
|
+
var sObjectKey = "cultivar_id='" + oObject.cultivar_id + "',ptype_id='" + oObject.ptype_id + "',parent_id='" + oObject.parent_id + "'" ;
|
20
|
+
var sObjectPath = "/parentage(" + sObjectKey + ")" ;
|
21
|
+
// MessageToast.show(sObjectPath);
|
22
|
+
this._sObjectPath = sObjectPath;
|
23
|
+
var oView = this.getView();
|
24
|
+
var oModel = sap.ui.getCore().getModel();
|
25
|
+
oView.setModel(oModel);
|
26
|
+
oView.bindElement({ path: sObjectPath});
|
27
|
+
|
28
|
+
|
29
|
+
},
|
30
|
+
_onBindingChange : function (oEvent) {
|
31
|
+
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
|
32
|
+
// No data for the binding
|
33
|
+
//if (!this.getView().getBindingContext()) {
|
34
|
+
// oRouter.navTo("notFound");
|
35
|
+
//}
|
36
|
+
},
|
37
|
+
onSave: function() {
|
38
|
+
var oView = this.getView();
|
39
|
+
var oModel = oView.getModel();
|
40
|
+
var sPath = this._sObjectPath;
|
41
|
+
var mParms = {};
|
42
|
+
|
43
|
+
// oModel.updateBindings();
|
44
|
+
|
45
|
+
var oData = oModel.getData(sPath);
|
46
|
+
function onSuccessHandler(){
|
47
|
+
oModel.refresh();
|
48
|
+
MessageToast.show("Update success");
|
49
|
+
}
|
50
|
+
function onErrorHandler(){ MessageToast.show("Update failed"); }
|
51
|
+
|
52
|
+
mParms.success = onSuccessHandler;
|
53
|
+
mParms.error = onErrorHandler;
|
54
|
+
mParms.merge = false;
|
55
|
+
// oModel.setTokenHandlingEnabled(true);
|
56
|
+
// oModel.updateSecurityToken();
|
57
|
+
oModel.update( this._sObjectPath, oData, mParms );
|
58
|
+
|
59
|
+
},
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
onNavBack: function () {
|
64
|
+
var oHistory = History.getInstance();
|
65
|
+
var sPreviousHash = oHistory.getPreviousHash();
|
66
|
+
|
67
|
+
|
68
|
+
if (sPreviousHash !== undefined) {
|
69
|
+
window.history.go(-1);
|
70
|
+
} else {
|
71
|
+
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
|
72
|
+
oRouter.navTo("ParentageList", true);
|
73
|
+
}
|
74
|
+
},
|
75
|
+
inputId : "",
|
76
|
+
inputDescrId: "",
|
77
|
+
|
78
|
+
onIDValueHelp : function (oEvent) {
|
79
|
+
|
80
|
+
this.inputId = oEvent.getSource().getId();
|
81
|
+
this.inputDescrId = this.inputId + "_descr";
|
82
|
+
|
83
|
+
// create value help dialog
|
84
|
+
if (!this._valueHelpDialog) {
|
85
|
+
this._valueHelpDialog = sap.ui.xmlfragment(
|
86
|
+
"vibert.view.Dialog", this );
|
87
|
+
|
88
|
+
this.getView().addDependent(this._valueHelpDialog);
|
89
|
+
}
|
90
|
+
|
91
|
+
this._valueHelpDialog.open( '' );
|
92
|
+
},
|
93
|
+
|
94
|
+
_handleValueHelpSearch : function (evt) {
|
95
|
+
var sValue = evt.getParameter("value");
|
96
|
+
var oFilter = new Filter( "name",
|
97
|
+
sap.ui.model.FilterOperator.Contains, sValue
|
98
|
+
);
|
99
|
+
evt.getSource().getBinding("items").filter([oFilter]);
|
100
|
+
},
|
101
|
+
|
102
|
+
_handleValueHelpClose : function (evt) {
|
103
|
+
var oSelectedItem = evt.getParameter("selectedItem");
|
104
|
+
if (oSelectedItem) {
|
105
|
+
var IDInput = this.getView().byId(this.inputId);
|
106
|
+
IDInput.setValue(oSelectedItem.getTitle());
|
107
|
+
|
108
|
+
var oText = this.getView().byId(this.inputDescrId);
|
109
|
+
oText.setText(oSelectedItem.getDescription());
|
110
|
+
|
111
|
+
}
|
112
|
+
evt.getSource().getBinding("items").filter([]);
|
113
|
+
|
114
|
+
}
|
115
|
+
});
|
116
|
+
});
|
@@ -0,0 +1,40 @@
|
|
1
|
+
sap.ui.define(["sap/ui/core/mvc/Controller",
|
2
|
+
"sap/m/MessageToast",
|
3
|
+
"sap/ui/model/odata/ODataModel",
|
4
|
+
"sap/ui/commons/Dialog",
|
5
|
+
"sap/ui/model/resource/ResourceModel"],
|
6
|
+
function (Controller, MessageToast, ODataModel, Dialog, ResourceModel) {
|
7
|
+
"use strict";
|
8
|
+
return Controller.extend("VibertBaseController", {
|
9
|
+
parenstypusDescriptioMap : {},
|
10
|
+
|
11
|
+
onInit : function() {
|
12
|
+
this._loadJsonModels();
|
13
|
+
this._attachDetailMatched();
|
14
|
+
},
|
15
|
+
_loadJsonModels : function() {
|
16
|
+
// get data for parenstypusDescriptioMap
|
17
|
+
var oParameters = new Map();
|
18
|
+
var ojModel = new sap.ui.model.json.JSONModel();
|
19
|
+
ojModel.loadData("http://localhost:9494/odata/par_type",oParameters,false,"GET",true,true);
|
20
|
+
sap.ui.getCore().setModel(ojModel, "myPtModel");
|
21
|
+
this.getView().setModel(ojModel, "myPtModel");
|
22
|
+
var a = ojModel.getProperty("/d/results");
|
23
|
+
for (var i = 0; i < a.length; i++) {
|
24
|
+
this.parenstypusDescriptioMap[a[i].ID]= a[i].descriptio;
|
25
|
+
}
|
26
|
+
// merge lookup map to be used later
|
27
|
+
ojModel.setData({"map":this.parenstypusDescriptioMap},true);
|
28
|
+
// this.parenstypusDescriptioMap = ojModel.getProperty("/map");
|
29
|
+
},
|
30
|
+
parentageTypeDescription: function(sTid) {
|
31
|
+
//var ojModel = sap.ui.getCore().getModel("myPtModel");
|
32
|
+
//var map = ojModel.getProperty("/map");
|
33
|
+
return this.parenstypusDescriptioMap[sTid];
|
34
|
+
},
|
35
|
+
_attachDetailMatched : function(){},
|
36
|
+
|
37
|
+
});
|
38
|
+
});
|
39
|
+
|
40
|
+
|
data/lib/ui5/index.html
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>OpenUI5 App</title>
|
5
|
+
|
6
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
7
|
+
<meta charset="UTF-8">
|
8
|
+
|
9
|
+
|
10
|
+
<script id="sap-ui-bootstrap" type="text/javascript"
|
11
|
+
src="https://openui5.hana.ondemand.com/1.60.22/resources/sap-ui-core.js"
|
12
|
+
data-sap-ui-theme="sap_belize"
|
13
|
+
data-sap-ui-libs="sap.m"
|
14
|
+
data-sap-ui-bindingSyntax="complex"
|
15
|
+
data-sap-ui-compatVersion="edge"
|
16
|
+
data-sap-ui-preload="async"
|
17
|
+
data-sap-ui-resourceroots='{"vibert": "./"}'
|
18
|
+
>
|
19
|
+
</script>
|
20
|
+
|
21
|
+
<script>
|
22
|
+
sap.ui.getCore().attachInit( function () {
|
23
|
+
new sap.m.Shell({
|
24
|
+
app : new sap.ui.core.ComponentContainer({
|
25
|
+
name : "vibert",
|
26
|
+
height : "100%" })
|
27
|
+
}).placeAt("content");
|
28
|
+
});
|
29
|
+
</script>
|
30
|
+
|
31
|
+
</head>
|
32
|
+
<body class="sapUiBody" id="content" ></body>
|
33
|
+
</html>
|
@@ -0,0 +1,194 @@
|
|
1
|
+
{
|
2
|
+
"_version": "1.1.0",
|
3
|
+
"sap.app": {
|
4
|
+
"_version": "1.1.0",
|
5
|
+
"id": "vibert",
|
6
|
+
"type": "application",
|
7
|
+
"i18n": "i18n/i18n.properties",
|
8
|
+
"title": "{{appTitle}}",
|
9
|
+
"description": "{{appDescription}}",
|
10
|
+
"applicationVersion": {
|
11
|
+
"version": "1.0.0"
|
12
|
+
}
|
13
|
+
},
|
14
|
+
"sap.ui": {
|
15
|
+
"_version": "1.1.0",
|
16
|
+
"technology": "UI5",
|
17
|
+
"deviceTypes": {
|
18
|
+
"desktop": true,
|
19
|
+
"tablet": true,
|
20
|
+
"phone": true
|
21
|
+
},
|
22
|
+
"supportedThemes": [
|
23
|
+
"sap_bluecrystal"
|
24
|
+
]
|
25
|
+
},
|
26
|
+
"sap.ui5": {
|
27
|
+
"_version": "1.1.0",
|
28
|
+
"rootView": "vibert.view.FiveApplesApp",
|
29
|
+
"dependencies": {
|
30
|
+
"minUI5Version": "1.30",
|
31
|
+
"libs": {
|
32
|
+
"sap.m": {}
|
33
|
+
}
|
34
|
+
},
|
35
|
+
"models": {
|
36
|
+
"i18n": {
|
37
|
+
"type": "sap.ui.model.resource.ResourceModel",
|
38
|
+
"settings": {
|
39
|
+
"bundleName": "vibert.i18n.i18n"
|
40
|
+
}
|
41
|
+
},
|
42
|
+
"myPtModel": {"type": "sap.ui.model.json.JSONModel" }
|
43
|
+
},
|
44
|
+
"routing": {
|
45
|
+
"config": {
|
46
|
+
"routerClass": "sap.m.routing.Router",
|
47
|
+
"viewType": "XML",
|
48
|
+
"viewPath": "vibert.view",
|
49
|
+
"controlId": "FiveApplesApp",
|
50
|
+
"controlAggregation": "detailPages",
|
51
|
+
"bypassed": { "target": "notFound" }
|
52
|
+
},
|
53
|
+
"routes": [
|
54
|
+
{
|
55
|
+
"pattern": "",
|
56
|
+
"name": "menu",
|
57
|
+
"target": [ "cultivarList", "MenuList" ]
|
58
|
+
},
|
59
|
+
{
|
60
|
+
"pattern": "cultivarList",
|
61
|
+
"name": "cultivarList",
|
62
|
+
"target": [ "cultivarList", "MenuList" ]
|
63
|
+
},
|
64
|
+
{
|
65
|
+
"pattern": "MCultivarList",
|
66
|
+
"name": "MCultivarList",
|
67
|
+
"target": [ "MCultivarList", "MenuList" ]
|
68
|
+
},
|
69
|
+
{
|
70
|
+
"pattern": "parentageList",
|
71
|
+
"name": "parentageList",
|
72
|
+
"target": [ "parentageList", "MenuList" ]
|
73
|
+
},
|
74
|
+
{
|
75
|
+
"pattern": "breederList",
|
76
|
+
"name": "breederList",
|
77
|
+
"target": [ "breederList", "MenuList" ]
|
78
|
+
},
|
79
|
+
{
|
80
|
+
"pattern": "notFound",
|
81
|
+
"name": "notFound",
|
82
|
+
"target": "notFound"
|
83
|
+
},
|
84
|
+
{
|
85
|
+
"pattern": "cultivar/{id}",
|
86
|
+
"name": "cultivar_detail",
|
87
|
+
"target": [ "cultivar_detail", "MenuList" ]
|
88
|
+
},
|
89
|
+
{
|
90
|
+
"pattern": "breeder/{id}",
|
91
|
+
"name": "breeder_detail",
|
92
|
+
"target": [ "breeder_detail", "MenuList" ]
|
93
|
+
},
|
94
|
+
{
|
95
|
+
"pattern": "parentage/{cultivar_id}/{ptype_id}/{parent_id}",
|
96
|
+
"name": "parentage_detail",
|
97
|
+
"target": [ "parentage_detail", "MenuList" ]
|
98
|
+
},
|
99
|
+
{
|
100
|
+
"pattern": "parentage_create_for/{cultivar_id}",
|
101
|
+
"name": "parentage_create_for",
|
102
|
+
"target": [ "parentage_create", "MenuList" ]
|
103
|
+
},
|
104
|
+
{
|
105
|
+
"pattern": "cultivar_create",
|
106
|
+
"name": "cultivar_create",
|
107
|
+
"target": [ "cultivar_create", "MenuList" ]
|
108
|
+
},
|
109
|
+
{
|
110
|
+
"pattern": "parentage_create",
|
111
|
+
"name": "parentage_create",
|
112
|
+
"target": [ "parentage_create", "MenuList" ]
|
113
|
+
},
|
114
|
+
{
|
115
|
+
"pattern": "breeder_create",
|
116
|
+
"name": "breeder_create",
|
117
|
+
"target": [ "breeder_create", "MenuList" ]
|
118
|
+
}
|
119
|
+
],
|
120
|
+
"targets": {
|
121
|
+
"MenuList": {
|
122
|
+
"viewName": "MenuList",
|
123
|
+
"controlAggregation" : "masterPages",
|
124
|
+
"viewLevel" : 1
|
125
|
+
},
|
126
|
+
"parentageList": {
|
127
|
+
"viewName": "ParentageList",
|
128
|
+
"controlAggregation" : "detailPages",
|
129
|
+
"viewLevel" : 1
|
130
|
+
},
|
131
|
+
"cultivarList": {
|
132
|
+
"viewName": "CultivarList",
|
133
|
+
"controlAggregation" : "detailPages",
|
134
|
+
"viewLevel" : 1
|
135
|
+
},
|
136
|
+
"MCultivarList": {
|
137
|
+
"viewName": "MCultivarList",
|
138
|
+
"controlAggregation" : "detailPages",
|
139
|
+
"viewLevel" : 1
|
140
|
+
},
|
141
|
+
"breederList": {
|
142
|
+
"viewName": "BreederList",
|
143
|
+
"controlAggregation" : "detailPages",
|
144
|
+
"viewLevel" : 1
|
145
|
+
},
|
146
|
+
"cultivar_detail": {
|
147
|
+
"viewName": "Cultivar_Detail",
|
148
|
+
"controlAggregation" : "detailPages",
|
149
|
+
"viewLevel" : 2
|
150
|
+
},
|
151
|
+
"breeder_detail": {
|
152
|
+
"viewName": "Breeder_Detail",
|
153
|
+
"controlAggregation" : "detailPages",
|
154
|
+
"viewLevel" : 2
|
155
|
+
},
|
156
|
+
"cultivar_detail": {
|
157
|
+
"viewName": "Cultivar_Detail",
|
158
|
+
"controlAggregation" : "detailPages",
|
159
|
+
"viewLevel" : 2
|
160
|
+
},
|
161
|
+
"parentage_detail": {
|
162
|
+
"viewName": "Parentage_Detail",
|
163
|
+
"controlAggregation" : "detailPages",
|
164
|
+
"viewLevel" : 2
|
165
|
+
},
|
166
|
+
"cultivar_create": {
|
167
|
+
"viewName": "Cultivar_Create",
|
168
|
+
"controlAggregation" : "detailPages",
|
169
|
+
"viewLevel" : 2
|
170
|
+
},
|
171
|
+
"parentage_create": {
|
172
|
+
"viewName": "Parentage_Create",
|
173
|
+
"controlAggregation" : "detailPages",
|
174
|
+
"viewLevel" : 2
|
175
|
+
},
|
176
|
+
"cultivar_create": {
|
177
|
+
"viewName": "Cultivar_Create",
|
178
|
+
"controlAggregation" : "detailPages",
|
179
|
+
"viewLevel" : 2
|
180
|
+
},
|
181
|
+
"breeder_create": {
|
182
|
+
"viewName": "Breeder_Create",
|
183
|
+
"controlAggregation" : "detailPages",
|
184
|
+
"viewLevel" : 2
|
185
|
+
},
|
186
|
+
|
187
|
+
"notFound": {
|
188
|
+
"viewName": "NotFound",
|
189
|
+
"transition": "show"
|
190
|
+
}
|
191
|
+
}
|
192
|
+
}
|
193
|
+
}
|
194
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
sap.ui.define([
|
2
|
+
"sap/ui/model/json/JSONModel",
|
3
|
+
"sap/ui/Device"
|
4
|
+
], function (JSONModel, Device) {
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
return {
|
8
|
+
|
9
|
+
createDeviceModel : function () {
|
10
|
+
var oModel = new JSONModel(Device);
|
11
|
+
oModel.setDefaultBindingMode("OneWay");
|
12
|
+
return oModel;
|
13
|
+
}
|
14
|
+
|
15
|
+
|
16
|
+
};
|
17
|
+
|
18
|
+
}
|
19
|
+
);
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<mvc:View
|
2
|
+
controllerName="vibert.controller.BreederList"
|
3
|
+
xmlns="sap.ui.table"
|
4
|
+
xmlns:mvc="sap.ui.core.mvc"
|
5
|
+
xmlns:u="sap.ui.unified"
|
6
|
+
xmlns:co="sap.ui.commons"
|
7
|
+
xmlns:c="sap.ui.core"
|
8
|
+
xmlns:m="sap.m">
|
9
|
+
|
10
|
+
<m:Toolbar class="sapUiMediumMarginTop" id="toolbar1">
|
11
|
+
<m:Button text="Create record" press="onCreatePress"/>
|
12
|
+
<m:Button text="Delete record" press="onDeletePress"/>
|
13
|
+
|
14
|
+
</m:Toolbar>
|
15
|
+
|
16
|
+
<Table id="breeder_table"
|
17
|
+
selectionMode="Single"
|
18
|
+
rowSelectionChange = "onSelectionChange"
|
19
|
+
visibleRowCount="20"
|
20
|
+
visibleRowCountMode="auto"
|
21
|
+
selectionBehavior="Row"
|
22
|
+
rows="{
|
23
|
+
path: '/breeder',
|
24
|
+
parameters: {operationMode: 'Server'}
|
25
|
+
}">
|
26
|
+
<columns>
|
27
|
+
<Column width="6%" autoResizable="true" sortProperty="id">
|
28
|
+
<m:Label text="Breeder id"/>
|
29
|
+
<template>
|
30
|
+
<m:Text text="{id}"/>
|
31
|
+
</template>
|
32
|
+
|
33
|
+
</Column>
|
34
|
+
<Column autoResizable="true" sortProperty="last_name" filterProperty="last_name">
|
35
|
+
<m:Label text="Last name"/>
|
36
|
+
<template>
|
37
|
+
<m:Text text="{last_name}"/>
|
38
|
+
</template>
|
39
|
+
</Column>
|
40
|
+
<Column autoResizable="true" sortProperty="first_name" filterProperty="first_name">
|
41
|
+
<m:Label text="First name"/>
|
42
|
+
<template>
|
43
|
+
<m:Text text="{first_name}"/>
|
44
|
+
</template>
|
45
|
+
</Column>
|
46
|
+
</columns>
|
47
|
+
</Table>
|
48
|
+
|
49
|
+
|
50
|
+
</mvc:View>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<core:FragmentDefinition
|
2
|
+
xmlns="sap.m"
|
3
|
+
xmlns:core="sap.ui.core">
|
4
|
+
<SelectDialog
|
5
|
+
title="Select breeder"
|
6
|
+
items="{
|
7
|
+
path : '/breeder',
|
8
|
+
sorter : { path: 'last_name' }
|
9
|
+
}"
|
10
|
+
search="_handleValueHelpSearch"
|
11
|
+
confirm="_handleValueHelpClose"
|
12
|
+
cancel="_handleValueHelpClose">
|
13
|
+
<StandardListItem
|
14
|
+
iconDensityAware="false"
|
15
|
+
iconInset="false"
|
16
|
+
title="{last_name} {first_name}"
|
17
|
+
description="{id}" />
|
18
|
+
</SelectDialog>
|
19
|
+
</core:FragmentDefinition>
|
20
|
+
|
21
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<mvc:View
|
2
|
+
xmlns="sap.m"
|
3
|
+
xmlns:t="sap.ui.table"
|
4
|
+
xmlns:f="sap.ui.layout.form"
|
5
|
+
xmlns:mvc="sap.ui.core.mvc"
|
6
|
+
controllerName="vibert.controller.Breeder_Create" >
|
7
|
+
<Page title="Create Breeder record" showNavButton="true"
|
8
|
+
navButtonPress="onNavBack" >
|
9
|
+
|
10
|
+
<headerContent>
|
11
|
+
<Button icon="sap-icon://create" type="Accept" press="onCreate" text="Create"/>
|
12
|
+
</headerContent>
|
13
|
+
|
14
|
+
|
15
|
+
<ObjectHeader title="{id}"/>
|
16
|
+
|
17
|
+
<f:SimpleForm id="breeder_create_form" editable="true">
|
18
|
+
<Label text="First name"/>
|
19
|
+
<Input id="first_name" type="text" name="first_name" enabled="true" />
|
20
|
+
<Label text="Last name"/>
|
21
|
+
<Input id="last_name" type="text" name="last_name" enabled="true" />
|
22
|
+
</f:SimpleForm>
|
23
|
+
|
24
|
+
|
25
|
+
</Page>
|
26
|
+
</mvc:View>
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<mvc:View xmlns="sap.m" xmlns:t="sap.ui.table" xmlns:f="sap.ui.layout.form" xmlns:mvc="sap.ui.core.mvc" controllerName="vibert.controller.Breeder_Detail">
|
2
|
+
<Page title="Breeder" showNavButton="true" navButtonPress="onNavBack">
|
3
|
+
<customHeader>
|
4
|
+
<Bar>
|
5
|
+
<contentLeft>
|
6
|
+
<Button icon="sap-icon://nav-back" press="onNavBack" />
|
7
|
+
<Button icon="sap-icon://save" type="Accept" press="onSave" text="Save changes" />
|
8
|
+
</contentLeft>
|
9
|
+
</Bar>
|
10
|
+
</customHeader>
|
11
|
+
<ObjectHeader title="id : {id}" />
|
12
|
+
<Panel expandable="true" expanded="true" headerText="Details" width="auto" class="sapUiResponsiveMargin">
|
13
|
+
<content>
|
14
|
+
<f:SimpleForm editable="true">
|
15
|
+
<Label text="First name" />
|
16
|
+
<Input id="first_name" type="text" name="first_name" enabled="true" value="{first_name}" />
|
17
|
+
<Label text="Last name" />
|
18
|
+
<Input id="last_name" type="text" name="last_name" enabled="true" value="{last_name}" />
|
19
|
+
</f:SimpleForm>
|
20
|
+
</content>
|
21
|
+
</Panel>
|
22
|
+
<Panel expandable="true" expanded="true" headerText="Cultivars" width="auto" class="sapUiResponsiveMargin">
|
23
|
+
<content>
|
24
|
+
<t:Table id="breeder_cultivar_table" selectionMode="Single"
|
25
|
+
rowSelectionChange="onCultivarSelectionChange"
|
26
|
+
visibleRowCount="8" visibleRowCountMode="auto"
|
27
|
+
rows="{path: 'cultivar' }"
|
28
|
+
selectionBehavior="Row">
|
29
|
+
<t:columns>
|
30
|
+
<t:Column width="6%" autoResizable="true" sortProperty="id">
|
31
|
+
<Label text="Cultivar" />
|
32
|
+
<t:template>
|
33
|
+
<Text text="{id}" />
|
34
|
+
</t:template>
|
35
|
+
</t:Column>
|
36
|
+
<t:Column autoResizable="true" sortProperty="name" filterProperty="name">
|
37
|
+
<Label text="Name" />
|
38
|
+
<t:template>
|
39
|
+
<Text text="{name}" />
|
40
|
+
</t:template>
|
41
|
+
</t:Column>
|
42
|
+
<t:Column autoResizable="true" width="8%" sortProperty="year" filterProperty="year">
|
43
|
+
<Label text="Year" />
|
44
|
+
<t:template>
|
45
|
+
<Text text="{year}" />
|
46
|
+
</t:template>
|
47
|
+
</t:Column>
|
48
|
+
</t:columns>
|
49
|
+
</t:Table>
|
50
|
+
</content>
|
51
|
+
</Panel>
|
52
|
+
</Page>
|
53
|
+
</mvc:View>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
<mvc:View
|
2
|
+
controllerName="vibert.controller.CultivarList"
|
3
|
+
xmlns="sap.ui.table"
|
4
|
+
xmlns:mvc="sap.ui.core.mvc"
|
5
|
+
xmlns:u="sap.ui.unified"
|
6
|
+
xmlns:co="sap.ui.commons"
|
7
|
+
xmlns:c="sap.ui.core"
|
8
|
+
xmlns:m="sap.m">
|
9
|
+
|
10
|
+
<m:Toolbar class="sapUiMediumMarginTop" id="toolbar1">
|
11
|
+
<m:Button icon="sap-icon://create" text="Create" press="onCreatePress"/>
|
12
|
+
|
13
|
+
</m:Toolbar>
|
14
|
+
|
15
|
+
<Table id="cultivar_table"
|
16
|
+
selectionMode="Single"
|
17
|
+
rowSelectionChange = "onSelectionChange"
|
18
|
+
visibleRowCount="20"
|
19
|
+
visibleRowCountMode="auto"
|
20
|
+
selectionBehavior="Row"
|
21
|
+
rows="{
|
22
|
+
path: '/cultivar',
|
23
|
+
parameters: {expand: 'breeder',
|
24
|
+
operationMode: 'Server'}
|
25
|
+
}">
|
26
|
+
<columns>
|
27
|
+
<Column width="6%" autoResizable="true" sortProperty="ID">
|
28
|
+
<m:Label text="Cultivar"/>
|
29
|
+
<template>
|
30
|
+
<m:Text text="{id}"/>
|
31
|
+
</template>
|
32
|
+
|
33
|
+
</Column>
|
34
|
+
<Column autoResizable="true" sortProperty="name" filterProperty="name">
|
35
|
+
<m:Label text="Name"/>
|
36
|
+
<template>
|
37
|
+
<m:Text text="{name}"/>
|
38
|
+
</template>
|
39
|
+
</Column>
|
40
|
+
<Column autoResizable="true" width="8%" sortProperty="year" filterProperty="year">
|
41
|
+
<m:Label text="Year"/>
|
42
|
+
<template>
|
43
|
+
<m:Text text="{year}"/>
|
44
|
+
</template>
|
45
|
+
</Column>
|
46
|
+
<Column autoResizable="true"
|
47
|
+
sortProperty="breeder/last_name"
|
48
|
+
filterProperty="breeder/last_name">
|
49
|
+
<m:Label text="Breeder"/>
|
50
|
+
<template>
|
51
|
+
<m:Text text="{breeder/last_name} {breeder/first_name}" />
|
52
|
+
</template>
|
53
|
+
</Column>
|
54
|
+
</columns>
|
55
|
+
</Table>
|
56
|
+
|
57
|
+
|
58
|
+
</mvc:View>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<core:FragmentDefinition
|
2
|
+
xmlns="sap.m"
|
3
|
+
xmlns:core="sap.ui.core">
|
4
|
+
<SelectDialog
|
5
|
+
title="Select cultivar"
|
6
|
+
items="{path: '/cultivar',
|
7
|
+
sorter: {
|
8
|
+
path: 'year',
|
9
|
+
descending: false,
|
10
|
+
group: true }
|
11
|
+
}"
|
12
|
+
search="_handleValueHelpSearch"
|
13
|
+
confirm="_handleValueHelpClose"
|
14
|
+
cancel="_handleValueHelpClose">
|
15
|
+
<StandardListItem
|
16
|
+
iconDensityAware="false"
|
17
|
+
iconInset="false"
|
18
|
+
title="{name} / {breeder/last_name}"
|
19
|
+
description="{id}" />
|
20
|
+
</SelectDialog>
|
21
|
+
</core:FragmentDefinition>
|
22
|
+
|
23
|
+
|