fiveapples 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/config5.ru +8 -5
- data/lib/fa_utils.rb +18 -0
- data/lib/fiveapples.db3 +0 -0
- data/lib/fiveapples.rb +53 -19
- data/lib/model.rb +17 -2
- data/lib/options.rb +5 -2
- data/lib/ui5/Component.js.erb +4 -3
- data/lib/ui5/controller/Base64.js +87 -0
- data/lib/ui5/controller/Breeder.js +74 -0
- data/lib/ui5/controller/BreederList.controller.js +5 -5
- data/lib/ui5/controller/Breeder_Create.controller.js +20 -49
- data/lib/ui5/controller/Breeder_Detail.controller.js +62 -91
- data/lib/ui5/controller/Create.js +41 -0
- data/lib/ui5/controller/CultivarList.controller.js +5 -4
- data/lib/ui5/controller/Cultivar_Create.controller.js +25 -80
- data/lib/ui5/controller/Cultivar_Detail.controller.js +126 -159
- data/lib/ui5/controller/Detail.js +96 -0
- data/lib/ui5/controller/FileUpload.js +40 -0
- data/lib/ui5/controller/Parentage_Create.controller.js +0 -3
- data/lib/ui5/controller/Parentage_Detail.controller.js +10 -37
- data/lib/ui5/view/BreederList.view.xml +8 -1
- data/lib/ui5/view/Breeder_Create.view.xml +6 -3
- data/lib/ui5/view/Breeder_Detail.view.xml +46 -9
- data/lib/ui5/view/CultivarList.view.xml +2 -1
- data/lib/ui5/view/Cultivar_Create.view.xml +6 -3
- data/lib/ui5/view/Cultivar_Detail.view.xml +47 -43
- data/lib/version.rb +1 -1
- metadata +13 -8
@@ -18,11 +18,11 @@ sap.ui.define(
|
|
18
18
|
var iIndex = oTable.getSelectedIndex();
|
19
19
|
|
20
20
|
var oCtxt = oTable.getContextByIndex(iIndex);
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
21
|
+
if (oCtxt) {
|
22
|
+
var sToPageId = oCtxt.getProperty("id");
|
23
|
+
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
|
24
|
+
oRouter.navTo("breeder_detail", { id: sToPageId });
|
25
|
+
}
|
26
26
|
}
|
27
27
|
});
|
28
28
|
}
|
@@ -2,68 +2,39 @@ sap.ui.define(
|
|
2
2
|
[
|
3
3
|
"sap/ui/core/mvc/Controller",
|
4
4
|
"sap/m/MessageToast",
|
5
|
-
"
|
5
|
+
"./Detail",
|
6
|
+
"./Create"
|
6
7
|
],
|
7
|
-
function(Controller, MessageToast,
|
8
|
+
function(Controller, MessageToast, Detail, Create) {
|
8
9
|
"use strict";
|
9
10
|
return Controller.extend("fivea.controller.Breeder_Create", {
|
10
11
|
onInit: function() {
|
11
12
|
this._oRouter = sap.ui.core.UIComponent.getRouterFor(this);
|
13
|
+
this._oRouter
|
14
|
+
.getRoute("breeder_create")
|
15
|
+
.attachPatternMatched(this.createEntry, this);
|
16
|
+
},
|
17
|
+
createEntry: function(){
|
12
18
|
var oView = this.getView();
|
13
19
|
var oModel = this.getOwnerComponent().getModel();
|
14
20
|
var oContext = oModel.createEntry("/breeder", {});
|
15
21
|
oView.setModel(oModel);
|
16
|
-
oView.setBindingContext(oContext);
|
22
|
+
oView.setBindingContext(oContext);
|
17
23
|
},
|
18
|
-
|
19
|
-
|
20
|
-
var sPreviousHash = oHistory.getPreviousHash();
|
21
|
-
|
22
|
-
if (sPreviousHash !== undefined) {
|
23
|
-
// history contains a previous entry
|
24
|
-
window.history.go(-1);
|
25
|
-
} else {
|
26
|
-
this._oRouter.navTo("breederList");
|
27
|
-
}
|
24
|
+
navToList: function(){
|
25
|
+
this._oRouter.navTo("breederList", true);
|
28
26
|
},
|
29
|
-
onCreate: function() {
|
30
|
-
var oModel = this.getView().getModel();
|
31
|
-
var _oRouter = this._oRouter;
|
32
|
-
|
33
|
-
|
34
|
-
function onSuccessHandler(data) {
|
35
|
-
MessageToast.show("Create success");
|
36
|
-
// TODO: isnt this data access OData version dependant?
|
37
|
-
// OneWay is simply
|
38
|
-
// var new_entity_tab = data
|
39
|
-
|
40
|
-
// The TwoWay way. No this is not ridiculous. You tell me the better way ?
|
41
|
-
var new_entity_tab = data["__batchResponses"]["0"].__changeResponses["0"].data;
|
42
|
-
_oRouter.navTo("breeder_detail", { id: new_entity_tab["results"][0].id });
|
43
|
-
}
|
44
|
-
function onErrorHandler() {
|
45
|
-
MessageToast.show("Create failed");
|
46
|
-
}
|
47
|
-
var mParms = {};
|
48
|
-
|
49
|
-
mParms.success = onSuccessHandler;
|
50
|
-
mParms.error = onErrorHandler;
|
51
|
-
|
52
|
-
oModel.submitChanges(mParms);
|
53
|
-
|
54
|
-
|
55
|
-
},
|
56
|
-
|
57
27
|
onNavBack: function() {
|
58
|
-
|
59
|
-
|
28
|
+
Detail.onNavBack(this);
|
29
|
+
},
|
30
|
+
onCreatePress: function() {
|
31
|
+
Create.onPress(this);
|
32
|
+
},
|
33
|
+
navToDetail: function(oData){
|
34
|
+
// navigate to detail page but dont keep create
|
35
|
+
// page history (hist. replace)
|
60
36
|
|
61
|
-
|
62
|
-
window.history.go(-1);
|
63
|
-
} else {
|
64
|
-
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
|
65
|
-
oRouter.navTo("breederList", true);
|
66
|
-
}
|
37
|
+
this._oRouter.navTo("breeder_detail", { id: oData.id }, {}, true);
|
67
38
|
}
|
68
39
|
});
|
69
40
|
}
|
@@ -1,10 +1,12 @@
|
|
1
|
+
|
1
2
|
sap.ui.define(
|
2
3
|
[
|
3
4
|
"sap/ui/core/mvc/Controller",
|
4
5
|
"sap/m/MessageToast",
|
5
|
-
"
|
6
|
+
"./FileUpload",
|
7
|
+
"./Detail"
|
6
8
|
],
|
7
|
-
function(Controller, MessageToast,
|
9
|
+
function(Controller, MessageToast, FileUpload, Detail) {
|
8
10
|
"use strict";
|
9
11
|
return Controller.extend("fivea.controller.Breeder_Detail", {
|
10
12
|
onInit: function() {
|
@@ -12,6 +14,7 @@ sap.ui.define(
|
|
12
14
|
this._oRouter
|
13
15
|
.getRoute("breeder_detail")
|
14
16
|
.attachPatternMatched(this.onDetailMatched, this);
|
17
|
+
this._entity_name = 'Breeder';
|
15
18
|
},
|
16
19
|
onDetailMatched: function(oEvent) {
|
17
20
|
this._sObjectID = oEvent.getParameter("arguments").id;
|
@@ -20,9 +23,57 @@ sap.ui.define(
|
|
20
23
|
var oView = this.getView();
|
21
24
|
|
22
25
|
oView.bindElement({ path: sObjectPath });
|
26
|
+
|
27
|
+
var oAvatar = this.byId("avatar");
|
28
|
+
this._sAvatar = oAvatar;
|
29
|
+
this._sAvatarImage = false;
|
30
|
+
this.loadAvatar();
|
31
|
+
},
|
32
|
+
loadAvatar: function() {
|
33
|
+
var sImgsPath = this._sObjectPath + "/avatar";
|
34
|
+
var that = this;
|
35
|
+
var oView = this.getView();
|
36
|
+
var oModel = oView.getModel();
|
37
|
+
var oAvatar = that.byId("avatar");
|
38
|
+
|
39
|
+
function _loadavsuccs(oData, response) {
|
40
|
+
// UploadUrl for Avatar creation (first time)
|
41
|
+
var oUrl = "/odata"+that._sObjectPath+"/avatar";
|
42
|
+
var oSrc = null;
|
43
|
+
if (oData.avatar !== undefined ){
|
44
|
+
if (Object.keys(oData.avatar).length === 0) {
|
45
|
+
var oI = oData.first_name.trim()[0] + oData.last_name.trim()[0];
|
46
|
+
oAvatar.setInitials(oI);
|
47
|
+
}
|
48
|
+
else{
|
49
|
+
oUrl = "/odata"+that._sObjectPath+"/avatar/$value";
|
50
|
+
oSrc = oData.avatar.__metadata.media_src;
|
51
|
+
// Avatar was already uploaded. UploadUrl should be for an Update
|
52
|
+
// but it's not yet implemented in safrano 0.4
|
53
|
+
// (POST /Photo(4)/$value ...safrano-todo)
|
54
|
+
oUrl = oSrc
|
55
|
+
|
56
|
+
}
|
57
|
+
}
|
58
|
+
oAvatar.setSrc(oSrc);
|
59
|
+
oView.byId("fileUploader").setUploadUrl(oUrl);
|
60
|
+
oView.byId("fileUploader").setValue("");
|
61
|
+
}
|
62
|
+
|
63
|
+
function _loadaverr(oErr) { }
|
64
|
+
|
65
|
+
oModel.read(this._sObjectPath,
|
66
|
+
{ urlParameters:{$expand: "avatar"},
|
67
|
+
success: _loadavsuccs,
|
68
|
+
error: _loadaverr });
|
69
|
+
},
|
70
|
+
handleUploadComplete: function() {
|
71
|
+
FileUpload.onComplete(this);
|
72
|
+
this.loadAvatar();
|
73
|
+
},
|
74
|
+
handleUploadPress: function() {
|
75
|
+
FileUpload.onPress(this) ;
|
23
76
|
},
|
24
|
-
|
25
|
-
_onBindingChange: function(oEvent) {},
|
26
77
|
|
27
78
|
onCultivarSelectionChange: function() {
|
28
79
|
var oTable = this.byId("breeder_cultivar_table");
|
@@ -30,99 +81,19 @@ sap.ui.define(
|
|
30
81
|
|
31
82
|
var oCtxt = oTable.getContextByIndex(iIndex);
|
32
83
|
var sToPageParID = oCtxt.getProperty("id");
|
33
|
-
|
34
|
-
oRouter.navTo("cultivar_detail", { id: sToPageParID });
|
84
|
+
this._oRouter.navTo("cultivar_detail", { id: sToPageParID });
|
35
85
|
},
|
36
|
-
|
37
86
|
onDeletePress: function(evt) {
|
38
|
-
|
39
|
-
var oModel = oView.getModel();
|
40
|
-
|
41
|
-
var mParms = {};
|
42
|
-
|
43
|
-
var oDeleteDialog = new sap.ui.commons.Dialog();
|
44
|
-
oDeleteDialog.setTitle("Delete Breeder");
|
45
|
-
var oText = new sap.ui.commons.TextView({
|
46
|
-
text: "Are you sure to delete this Breeder?"
|
47
|
-
});
|
48
|
-
var _that = this;
|
49
|
-
oDeleteDialog.addContent(oText);
|
50
|
-
oDeleteDialog.addButton(
|
51
|
-
new sap.ui.commons.Button({
|
52
|
-
text: "Confirm",
|
53
|
-
press: function() {
|
54
|
-
var mParms = {};
|
55
|
-
|
56
|
-
mParms.success = function(data, response) {
|
57
|
-
oDeleteDialog.close();
|
58
|
-
_that._oRouter.navTo("breederList");
|
59
|
-
// oModel.refresh();
|
60
|
-
};
|
61
|
-
mParms.error = function(error) {
|
62
|
-
oDeleteDialog.close();
|
63
|
-
MessageToast.show("Delete failed");
|
64
|
-
};
|
65
|
-
var sMsg;
|
66
|
-
sMsg = oView.getBindingContext();
|
67
|
-
mParms.context = sMsg;
|
68
|
-
oModel.remove("", mParms);
|
69
|
-
}
|
70
|
-
})
|
71
|
-
);
|
72
|
-
oDeleteDialog.open();
|
87
|
+
Detail.onDeletePress(this, evt);
|
73
88
|
},
|
74
|
-
|
75
89
|
onSave: function() {
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
function onSuccessHandler() {
|
82
|
-
oModel.refresh();
|
83
|
-
oModel.updateBindings();
|
84
|
-
MessageToast.show("Update success");
|
85
|
-
}
|
86
|
-
|
87
|
-
function onErrorHandler() {
|
88
|
-
MessageToast.show("Update failed");
|
89
|
-
}
|
90
|
-
|
91
|
-
//var sPath = this._sObjectPath;
|
92
|
-
//var oData = oModel.getData(sPath);
|
93
|
-
//console.log("Model data:", oData);
|
94
|
-
//console.log("Model has pending changes:", oModel.hasPendingChanges());
|
95
|
-
//console.log("Pending changes:", oModel.getPendingChanges());
|
96
|
-
|
97
|
-
mParms.success = onSuccessHandler;
|
98
|
-
mParms.error = onErrorHandler;
|
99
|
-
|
100
|
-
oModel.setTokenHandlingEnabled(true);
|
101
|
-
oModel.updateSecurityToken();
|
102
|
-
|
103
|
-
oModel.submitChanges(mParms);
|
104
|
-
},
|
105
|
-
|
106
|
-
onCheck: function() {
|
107
|
-
var oView = this.getView();
|
108
|
-
var oModel = oView.getModel();
|
109
|
-
var sPath = this._sObjectPath;
|
110
|
-
var oData = oModel.getData(sPath);
|
111
|
-
console.log("Model data:", oData);
|
112
|
-
console.log("Model has pending changes:", oModel.hasPendingChanges());
|
113
|
-
console.log("Pending changes:", oModel.getPendingChanges());
|
90
|
+
Detail.onSave(this);
|
91
|
+
},
|
92
|
+
navToList: function(){
|
93
|
+
this._oRouter.navTo("breederList", true);
|
114
94
|
},
|
115
|
-
|
116
95
|
onNavBack: function() {
|
117
|
-
|
118
|
-
var sPreviousHash = oHistory.getPreviousHash();
|
119
|
-
|
120
|
-
if (sPreviousHash !== undefined) {
|
121
|
-
window.history.go(-1);
|
122
|
-
} else {
|
123
|
-
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
|
124
|
-
oRouter.navTo("breederList", true);
|
125
|
-
}
|
96
|
+
Detail.onNavBack(this);
|
126
97
|
}
|
127
98
|
});
|
128
99
|
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
/**
|
3
|
+
* Common helper/callbacks for entity creation
|
4
|
+
*
|
5
|
+
* **/
|
6
|
+
|
7
|
+
sap.ui.define(["sap/m/MessageToast"],
|
8
|
+
function(MessageToast) {
|
9
|
+
|
10
|
+
"use strict";
|
11
|
+
|
12
|
+
return {
|
13
|
+
onPress: function(that) {
|
14
|
+
|
15
|
+
var oModel = that.getView().getModel();
|
16
|
+
|
17
|
+
function onSuccessHandler(data) {
|
18
|
+
MessageToast.show("Create success");
|
19
|
+
// isnt this data access OData version dependant?
|
20
|
+
// OneWay is simply
|
21
|
+
// var new_entity_tab = data
|
22
|
+
|
23
|
+
// The TwoWay way. No this is not ridiculous.
|
24
|
+
// You tell me the better way ?
|
25
|
+
|
26
|
+
var entity_tab = data.__batchResponses[0].__changeResponses[0].data;
|
27
|
+
that.navToDetail(entity_tab.results[0]);
|
28
|
+
}
|
29
|
+
function onErrorHandler() {
|
30
|
+
MessageToast.show("Create failed");
|
31
|
+
}
|
32
|
+
var mParms = {};
|
33
|
+
|
34
|
+
mParms.success = onSuccessHandler;
|
35
|
+
mParms.error = onErrorHandler;
|
36
|
+
|
37
|
+
oModel.submitChanges(mParms);
|
38
|
+
},
|
39
|
+
};
|
40
|
+
}
|
41
|
+
);
|
@@ -19,10 +19,11 @@ sap.ui.define(
|
|
19
19
|
var iIndex = oTable.getSelectedIndex();
|
20
20
|
|
21
21
|
var oCtxt = oTable.getContextByIndex(iIndex);
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
if (oCtxt) {
|
23
|
+
var sToPageId = oCtxt.getProperty("id");
|
24
|
+
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
|
25
|
+
oRouter.navTo("cultivar_detail", { id: sToPageId });
|
26
|
+
}
|
26
27
|
}
|
27
28
|
});
|
28
29
|
}
|
@@ -2,108 +2,53 @@ sap.ui.define(
|
|
2
2
|
[
|
3
3
|
"sap/ui/core/mvc/Controller",
|
4
4
|
"sap/m/MessageToast",
|
5
|
-
"
|
5
|
+
"./Detail",
|
6
|
+
"./Breeder",
|
7
|
+
"./Create"
|
6
8
|
],
|
7
|
-
function(Controller, MessageToast,
|
9
|
+
function(Controller, MessageToast, Detail, Breeder, Create) {
|
8
10
|
"use strict";
|
9
11
|
return Controller.extend("fivea.controller.Cultivar_Create", {
|
10
12
|
onInit: function() {
|
11
|
-
|
12
|
-
this._oRouter
|
13
|
-
|
13
|
+
this._oRouter = sap.ui.core.UIComponent.getRouterFor(this);
|
14
|
+
this._oRouter
|
15
|
+
.getRoute("cultivar_create")
|
16
|
+
.attachPatternMatched(this.createEntry, this);
|
17
|
+
},
|
18
|
+
createEntry: function(){
|
14
19
|
var oView = this.getView();
|
15
20
|
var oModel = this.getOwnerComponent().getModel();
|
16
21
|
var oContext = oModel.createEntry("/cultivar", {});
|
17
22
|
oView.setModel(oModel);
|
18
|
-
oView.setBindingContext(oContext);
|
23
|
+
oView.setBindingContext(oContext);
|
19
24
|
},
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
function onSuccessHandler(data) {
|
28
|
-
MessageToast.show("Create success");
|
29
|
-
// TODO: isnt this data access OData version dependant?
|
30
|
-
// OneWay is simply
|
31
|
-
// var new_entity_tab = data
|
32
|
-
|
33
|
-
// The TwoWay way. No this is not ridiculous. You tell me the better way ?
|
34
|
-
var new_entity_tab = data["__batchResponses"]["0"].__changeResponses["0"].data;
|
35
|
-
_oRouter.navTo("cultivar_detail", { id: new_entity_tab["results"][0].id });
|
36
|
-
}
|
37
|
-
function onErrorHandler() {
|
38
|
-
MessageToast.show("Create failed");
|
39
|
-
}
|
40
|
-
var mParms = {};
|
41
|
-
|
42
|
-
mParms.success = onSuccessHandler;
|
43
|
-
mParms.error = onErrorHandler;
|
44
|
-
|
45
|
-
oModel.submitChanges(mParms);
|
25
|
+
onCreatePress: function() {
|
26
|
+
Create.onPress(this);
|
27
|
+
},
|
28
|
+
navToDetail: function(oData){
|
29
|
+
// navigate to detail page but dont keep create
|
30
|
+
// page history (hist. replace)
|
46
31
|
|
47
|
-
|
32
|
+
this._oRouter.navTo("cultivar_detail", { id: oData.id }, {}, true);
|
33
|
+
},
|
34
|
+
navToList: function(){
|
35
|
+
this._oRouter.navTo("cultivarList", true);
|
48
36
|
},
|
49
|
-
|
50
37
|
onNavBack: function() {
|
51
|
-
|
52
|
-
var sPreviousHash = oHistory.getPreviousHash();
|
53
|
-
|
54
|
-
if (sPreviousHash !== undefined) {
|
55
|
-
window.history.go(-1);
|
56
|
-
} else {
|
57
|
-
this._oRouter.navTo("cultivarList", true);
|
58
|
-
}
|
38
|
+
Detail.onNavBack(this);
|
59
39
|
},
|
60
|
-
|
61
40
|
inputId: "",
|
62
41
|
inputDescrId: "",
|
63
|
-
|
64
42
|
onBreederIdValueHelp: function(oEvent) {
|
65
|
-
this
|
66
|
-
this.inputDescrId = this.inputId + "_descr";
|
67
|
-
|
68
|
-
// create value help dialog
|
69
|
-
if (!this._valueHelpDialog) {
|
70
|
-
this._valueHelpDialog = sap.ui.xmlfragment(
|
71
|
-
"fivea.view.BreederOptio",
|
72
|
-
this
|
73
|
-
);
|
74
|
-
|
75
|
-
this.getView().addDependent(this._valueHelpDialog);
|
76
|
-
}
|
77
|
-
|
78
|
-
this._valueHelpDialog.open("");
|
43
|
+
Breeder.onIdValueHelp(this, oEvent);
|
79
44
|
},
|
80
45
|
|
81
46
|
_handleValueHelpSearch: function(evt) {
|
82
|
-
|
83
|
-
var oFilter = new Filter(
|
84
|
-
"name",
|
85
|
-
sap.ui.model.FilterOperator.Contains,
|
86
|
-
sValue
|
87
|
-
);
|
88
|
-
evt
|
89
|
-
.getSource()
|
90
|
-
.getBinding("items")
|
91
|
-
.filter([oFilter]);
|
47
|
+
Breeder._handleValueHelpSearch(evt);
|
92
48
|
},
|
93
49
|
|
94
50
|
_handleValueHelpClose: function(evt) {
|
95
|
-
|
96
|
-
if (oSelectedItem) {
|
97
|
-
var IDInput = this.getView().byId(this.inputId);
|
98
|
-
IDInput.setValue(oSelectedItem.getDescription());
|
99
|
-
|
100
|
-
var oText = this.getView().byId(this.inputDescrId);
|
101
|
-
oText.setText(oSelectedItem.getTitle());
|
102
|
-
}
|
103
|
-
evt
|
104
|
-
.getSource()
|
105
|
-
.getBinding("items")
|
106
|
-
.filter([]);
|
51
|
+
Breeder._handleValueHelpClose(this, evt);
|
107
52
|
}
|
108
53
|
});
|
109
54
|
}
|