Compare commits
16 Commits
dynamic-co
...
hierarch-d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
55c0190653 | ||
|
|
5716dece3f | ||
|
|
ef892b58e7 | ||
|
|
c175575840 | ||
|
|
c6cc70a062 | ||
|
|
7c33813102 | ||
|
|
ef9a891445 | ||
|
|
8230757540 | ||
|
|
fe53798330 | ||
|
|
3ca79efcfb | ||
|
|
9c1d5280af | ||
|
|
9b80311472 | ||
|
|
34f75b52c8 | ||
|
|
aeb8bca9ac | ||
|
|
044f513e16 | ||
|
|
6b15dbdd2e |
64
bookshop/db/data/sap.capire.bookshop-Contents.csv
Normal file
64
bookshop/db/data/sap.capire.bookshop-Contents.csv
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
ID;parent_ID;name;page;book_ID
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62514;;Foreword;3;207
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62515;;Chapter 1;4;207
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62516;f846b0b9-01d4-4f6d-82a4-d79204f62515;Section 1.1;5;207
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62517;f846b0b9-01d4-4f6d-82a4-d79204f62515;Section 1.2;28;207
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62518;f846b0b9-01d4-4f6d-82a4-d79204f62517;Subsection 1.2.1;30;207
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62519;f846b0b9-01d4-4f6d-82a4-d79204f62517;Subsection 1.2.2;33;207
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62520;f846b0b9-01d4-4f6d-82a4-d79204f62515;Section 1.3;36;207
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62521;;Chapter 2;54;207
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62522;f846b0b9-01d4-4f6d-82a4-d79204f62521;Section 2.1;56;207
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62523;f846b0b9-01d4-4f6d-82a4-d79204f62521;Section 2.2;58;207
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62524;;Conclusion;63;207
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62525;;Endnotes;65;207
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62526;;Copyright notice;2;251
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62527;;Chapter 1;3;251
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62528;f846b0b9-01d4-4f6d-82a4-d79204f62527;Section 1.1;5;251
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62529;f846b0b9-01d4-4f6d-82a4-d79204f62527;Section 1.2;13;251
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62530;;Chapter 2;20;251
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62531;f846b0b9-01d4-4f6d-82a4-d79204f62530;Section 2.1;21;251
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62532;f846b0b9-01d4-4f6d-82a4-d79204f62530;Section 2.2;25;251
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62533;f846b0b9-01d4-4f6d-82a4-d79204f62530;Section 2.3;27;251
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62534;;Chapter 3;30;251
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62535;;Endnotes;41;251
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62551;;Acknowledgements;1;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62552;;The Flight;2;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62553;;Hexwood Farm;8;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62554;f846b0b9-01d4-4f6d-82a4-d79204f62553;Castle Saburac;13;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62555;f846b0b9-01d4-4f6d-82a4-d79204f62553;The Curse of Rapkyn;27;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62556;f846b0b9-01d4-4f6d-82a4-d79204f62553;The Mannikin;35;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62557;;The Eye of Time;44;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62558;;The Enchanting;59;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62559;f846b0b9-01d4-4f6d-82a4-d79204f62558;The Telling Bone;73;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62560;f846b0b9-01d4-4f6d-82a4-d79204f62558;The Power of Adamcos;86;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62561;f846b0b9-01d4-4f6d-82a4-d79204f62558;The House of the Sorcerer;98;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62562;;The Changeling;105;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62563;f846b0b9-01d4-4f6d-82a4-d79204f62562;The Flying Broomsticks;118;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62564;f846b0b9-01d4-4f6d-82a4-d79204f62563;The Fish Out of Water;126;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62565;;The Final Magic;138;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62566;;Copyright;159;271
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62567;;Editor's Note;1;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62568;;Chapter I;2;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62569;;Chapter II;31;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62570;f846b0b9-01d4-4f6d-82a4-d79204f62569;Section II.I;47;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62571;f846b0b9-01d4-4f6d-82a4-d79204f62569;Section II.II;62;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62572;f846b0b9-01d4-4f6d-82a4-d79204f62569;Section II.III;75;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62573;f846b0b9-01d4-4f6d-82a4-d79204f62569;Section II.IV;87;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62574;;Chapter III;105;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62575;f846b0b9-01d4-4f6d-82a4-d79204f62574;Section III.I;128;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62576;f846b0b9-01d4-4f6d-82a4-d79204f62575;Subsection III.I.I;156;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62577;f846b0b9-01d4-4f6d-82a4-d79204f62575;Subsection III.I.II;173;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62578;f846b0b9-01d4-4f6d-82a4-d79204f62574;Section III.II;185;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62579;;Chapter IV;203;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62580;;Acknowledgments;250;201
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62582;;Foreword;1;252
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62583;;Chapter 1;3;252
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62584;f846b0b9-01d4-4f6d-82a4-d79204f62583;Section 1.1;5;252
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62585;f846b0b9-01d4-4f6d-82a4-d79204f62583;Section 1.2;8;252
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62586;;Chapter 2;10;252
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62587;f846b0b9-01d4-4f6d-82a4-d79204f62586;Section 2.1;12;252
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62588;f846b0b9-01d4-4f6d-82a4-d79204f62587;Subsection 2.1.1;14;252
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62589;f846b0b9-01d4-4f6d-82a4-d79204f62587;Subsection 2.1.2;16;252
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62590;f846b0b9-01d4-4f6d-82a4-d79204f62586;Section 2.2;18;252
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62591;f846b0b9-01d4-4f6d-82a4-d79204f62590;Subsection 2.2.1;21;252
|
||||||
|
f846b0b9-01d4-4f6d-82a4-d79204f62592;;Endnotes;25;252
|
||||||
|
@@ -11,6 +11,7 @@ entity Books : managed {
|
|||||||
price : Price;
|
price : Price;
|
||||||
currency : Currency;
|
currency : Currency;
|
||||||
image : LargeBinary @Core.MediaType: 'image/png';
|
image : LargeBinary @Core.MediaType: 'image/png';
|
||||||
|
contents : Composition of many Contents on contents.book = $self;
|
||||||
}
|
}
|
||||||
|
|
||||||
entity Authors : managed {
|
entity Authors : managed {
|
||||||
@@ -30,6 +31,16 @@ entity Genres : sap.common.CodeList {
|
|||||||
children : Composition of many Genres on children.parent = $self;
|
children : Composition of many Genres on children.parent = $self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Hierarchically organized entity for Contents */
|
||||||
|
entity Contents {
|
||||||
|
key ID : UUID;
|
||||||
|
name : String;
|
||||||
|
page : Integer;
|
||||||
|
parent : Association to Contents;
|
||||||
|
children : Composition of many Contents on children.parent = $self;
|
||||||
|
book : Association to Books;
|
||||||
|
}
|
||||||
|
|
||||||
type Price : Decimal(9,2);
|
type Price : Decimal(9,2);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,4 +3,5 @@ service AdminService @(path:'/admin') {
|
|||||||
entity Authors as projection on my.Authors;
|
entity Authors as projection on my.Authors;
|
||||||
entity Books as projection on my.Books;
|
entity Books as projection on my.Books;
|
||||||
entity Genres as projection on my.Genres;
|
entity Genres as projection on my.Genres;
|
||||||
|
entity Contents as projection on my.Contents;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ service CatalogService @(path:'/browse') {
|
|||||||
|
|
||||||
/** For displaying lists of Books */
|
/** For displaying lists of Books */
|
||||||
@readonly entity ListOfBooks as projection on Books
|
@readonly entity ListOfBooks as projection on Books
|
||||||
excluding { descr };
|
excluding { descr, contents };
|
||||||
|
|
||||||
/** For display in details pages */
|
/** For display in details pages */
|
||||||
@readonly entity Books as projection on my.Books { *,
|
@readonly entity Books as projection on my.Books { *,
|
||||||
author.name as author
|
author.name as author
|
||||||
} excluding { createdBy, modifiedBy };
|
} excluding { createdBy, modifiedBy, contents };
|
||||||
|
|
||||||
@requires: 'authenticated-user'
|
@requires: 'authenticated-user'
|
||||||
action submitOrder ( book: Books:ID, quantity: Integer ) returns { stock: Integer };
|
action submitOrder ( book: Books:ID, quantity: Integer ) returns { stock: Integer };
|
||||||
event OrderedBook : { book: Books:ID; quantity: Integer; buyer: String };
|
event OrderedBook : { book: Books:ID; quantity: Integer; buyer: String };
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
using { AdminService } from '@capire/bookstore';
|
using { AdminService } from '@capire/bookstore';
|
||||||
using from '../common'; // to help UI linter get the complete annotations
|
using from '../common'; // to help UI linter get the complete annotations
|
||||||
|
|
||||||
|
annotate sap.capire.bookshop.Genres with @fiori.draft.enabled;
|
||||||
|
annotate AdminService.Genres with @odata.draft.enabled;
|
||||||
|
annotate AdminService.Genres with @odata.draft.bypass;
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -11,10 +14,11 @@ using from '../common'; // to help UI linter get the complete annotations
|
|||||||
annotate AdminService.Books with @(
|
annotate AdminService.Books with @(
|
||||||
UI: {
|
UI: {
|
||||||
Facets: [
|
Facets: [
|
||||||
{$Type: 'UI.ReferenceFacet', Label: '{i18n>General}', Target: '@UI.FieldGroup#General'},
|
{$Type: 'UI.ReferenceFacet', Label: '{i18n>General}', Target: '@UI.FieldGroup#General'},
|
||||||
{$Type: 'UI.ReferenceFacet', Label: '{i18n>Translations}', Target: 'texts/@UI.LineItem'},
|
{$Type: 'UI.ReferenceFacet', Label: '{i18n>Translations}', Target: 'texts/@UI.LineItem'},
|
||||||
{$Type: 'UI.ReferenceFacet', Label: '{i18n>Details}', Target: '@UI.FieldGroup#Details'},
|
{$Type: 'UI.ReferenceFacet', Label: '{i18n>Details}', Target: '@UI.FieldGroup#Details'},
|
||||||
{$Type: 'UI.ReferenceFacet', Label: '{i18n>Admin}', Target: '@UI.FieldGroup#Admin'},
|
{$Type: 'UI.ReferenceFacet', Label: '{i18n>Admin}', Target: '@UI.FieldGroup#Admin'},
|
||||||
|
{$Type: 'UI.ReferenceFacet', Label: '{i18n>Contents}', Target: 'contents/@UI.PresentationVariant'}
|
||||||
],
|
],
|
||||||
FieldGroup#General: {
|
FieldGroup#General: {
|
||||||
Data: [
|
Data: [
|
||||||
@@ -71,6 +75,7 @@ annotate AdminService.Genres with {
|
|||||||
ID @UI.Hidden;
|
ID @UI.Hidden;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Draft for Localized Data
|
// Draft for Localized Data
|
||||||
@@ -110,3 +115,5 @@ extend service AdminService {
|
|||||||
|
|
||||||
// Workaround for Fiori popup for asking user to enter a new UUID on Create
|
// Workaround for Fiori popup for asking user to enter a new UUID on Create
|
||||||
annotate AdminService.Books with { ID @Core.Computed; }
|
annotate AdminService.Books with { ID @Core.Computed; }
|
||||||
|
|
||||||
|
using from './tree-view';
|
||||||
|
|||||||
42
fiori/app/admin-books/tree-view.cds
Normal file
42
fiori/app/admin-books/tree-view.cds
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
using { AdminService } from '@capire/bookstore';
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Contents Tree Table Annotations
|
||||||
|
//
|
||||||
|
|
||||||
|
// Tell Fiori about the structure of the hierarchy
|
||||||
|
annotate AdminService.Contents with @Aggregation.RecursiveHierarchy #ContentsHierarchy : {
|
||||||
|
ParentNavigationProperty : parent, // navigates to a node's parent
|
||||||
|
NodeProperty : ID, // identifies a node, usually the key
|
||||||
|
};
|
||||||
|
|
||||||
|
// Fiori expects the following to be defined explicitly, even though they're always the same
|
||||||
|
extend AdminService.Contents with @(
|
||||||
|
// The columns expected by Fiori to be present in hierarchy entities
|
||||||
|
Hierarchy.RecursiveHierarchy #ContentsHierarchy : {
|
||||||
|
LimitedDescendantCount : LimitedDescendantCount,
|
||||||
|
DistanceFromRoot : DistanceFromRoot,
|
||||||
|
DrillState : DrillState,
|
||||||
|
LimitedRank : LimitedRank
|
||||||
|
},
|
||||||
|
// Disallow filtering on these properties from Fiori UIs
|
||||||
|
Capabilities.FilterRestrictions.NonFilterableProperties: [
|
||||||
|
'LimitedDescendantCount',
|
||||||
|
'DistanceFromRoot',
|
||||||
|
'DrillState',
|
||||||
|
'LimitedRank'
|
||||||
|
],
|
||||||
|
// Disallow sorting on these properties from Fiori UIs
|
||||||
|
Capabilities.SortRestrictions.NonSortableProperties : [
|
||||||
|
'LimitedDescendantCount',
|
||||||
|
'DistanceFromRoot',
|
||||||
|
'DrillState',
|
||||||
|
'LimitedRank'
|
||||||
|
],
|
||||||
|
) columns { // Ensure we can query these fields from database
|
||||||
|
null as LimitedDescendantCount : Int16,
|
||||||
|
null as DistanceFromRoot : Int16,
|
||||||
|
null as DrillState : String,
|
||||||
|
null as LimitedRank : Int16,
|
||||||
|
};
|
||||||
@@ -79,6 +79,11 @@
|
|||||||
"pattern": "Books({key}/author({key2}):?query:",
|
"pattern": "Books({key}/author({key2}):?query:",
|
||||||
"name": "AuthorsDetails",
|
"name": "AuthorsDetails",
|
||||||
"target": "AuthorsDetails"
|
"target": "AuthorsDetails"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "Books({key})/contents({key2}):?query:",
|
||||||
|
"name": "ContentsDetails",
|
||||||
|
"target": "ContentsDetails"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"targets": {
|
"targets": {
|
||||||
@@ -112,11 +117,34 @@
|
|||||||
"detail" : {
|
"detail" : {
|
||||||
"route" : "AuthorsDetails"
|
"route" : "AuthorsDetails"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"contents": {
|
||||||
|
"detail": {
|
||||||
|
"route": "ContentsDetails"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"controlConfiguration": {
|
||||||
|
"contents/@com.sap.vocabularies.UI.v1.LineItem": {
|
||||||
|
"tableSettings": {
|
||||||
|
"hierarchyQualifier": "ContentsHierarchy",
|
||||||
|
"type": "TreeTable"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ContentsDetails": {
|
||||||
|
"type": "Component",
|
||||||
|
"id": "ContentsDetails",
|
||||||
|
"name": "sap.fe.templates.ObjectPage",
|
||||||
|
"options": {
|
||||||
|
"settings": {
|
||||||
|
"contextPath": "/Books/contents"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"AuthorsDetails": {
|
"AuthorsDetails": {
|
||||||
"type": "Component",
|
"type": "Component",
|
||||||
"id": "AuthorsDetailsList",
|
"id": "AuthorsDetailsList",
|
||||||
|
|||||||
@@ -18,14 +18,6 @@
|
|||||||
"title": "Browse Books",
|
"title": "Browse Books",
|
||||||
"targetURL": "#Books-display"
|
"targetURL": "#Books-display"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "BrowseGenres",
|
|
||||||
"tileType": "sap.ushell.ui.tile.StaticTile",
|
|
||||||
"properties": {
|
|
||||||
"title": "Browse Genres",
|
|
||||||
"targetURL": "#Genres-display"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -43,6 +35,14 @@
|
|||||||
"title": "Manage Books",
|
"title": "Manage Books",
|
||||||
"targetURL": "#Books-manage"
|
"targetURL": "#Books-manage"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ManageGenres",
|
||||||
|
"tileType": "sap.ushell.ui.tile.StaticTile",
|
||||||
|
"properties": {
|
||||||
|
"title": "Manage Genres",
|
||||||
|
"targetURL": "#Genres-manage"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ManageAuthors",
|
"id": "ManageAuthors",
|
||||||
@@ -114,10 +114,10 @@
|
|||||||
"url": "/admin-authors/webapp"
|
"url": "/admin-authors/webapp"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"BrowseGenres": {
|
"ManageGenres": {
|
||||||
"semanticObject": "Genres",
|
"semanticObject": "Genres",
|
||||||
"action": "display",
|
"action": "manage",
|
||||||
"title": "Browse Genres",
|
"title": "Manage Genres",
|
||||||
"signature": {
|
"signature": {
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"Genre.ID": {
|
"Genre.ID": {
|
||||||
|
|||||||
@@ -68,6 +68,54 @@ annotate my.Books with {
|
|||||||
image @title: '{i18n>Image}';
|
image @title: '{i18n>Image}';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
annotate my.Contents with @(
|
||||||
|
cds.search: {name}
|
||||||
|
);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Contents List
|
||||||
|
//
|
||||||
|
annotate my.Contents with @UI: {
|
||||||
|
PresentationVariant : {
|
||||||
|
$Type : 'UI.PresentationVariantType',
|
||||||
|
RequestAtLeast: [name],
|
||||||
|
Visualizations: ['@UI.LineItem'],
|
||||||
|
},
|
||||||
|
LineItem : [{
|
||||||
|
$Type: 'UI.DataField',
|
||||||
|
Value: name,
|
||||||
|
Label : '{i18n>Name}'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$Type: 'UI.DataField',
|
||||||
|
Value: page,
|
||||||
|
Label : '{i18n>Page}'
|
||||||
|
}],
|
||||||
|
HeaderInfo : {
|
||||||
|
$Type : 'UI.HeaderInfoType',
|
||||||
|
TypeName : '{i18n>ContentsLevel}',
|
||||||
|
TypeNamePlural: '{i18n>ContentsLevels}',
|
||||||
|
Title : {
|
||||||
|
$Type: 'UI.DataField',
|
||||||
|
Value: name,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
FieldGroup : {
|
||||||
|
$Type: 'UI.FieldGroupType',
|
||||||
|
Data : [{
|
||||||
|
$Type: 'UI.DataField',
|
||||||
|
Value: page,
|
||||||
|
Label : '{i18n>PageNumber}'
|
||||||
|
}],
|
||||||
|
},
|
||||||
|
Facets : [{
|
||||||
|
$Type : 'UI.ReferenceFacet',
|
||||||
|
Target: '@UI.FieldGroup',
|
||||||
|
Label : '{i18n>Informations}',
|
||||||
|
}],
|
||||||
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Authors List
|
// Authors List
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using { sap.capire.bookshop.Genres } from '@capire/bookstore';
|
using { sap.capire.bookshop.Genres } from '@capire/bookstore';
|
||||||
|
|
||||||
annotate Genres with @cds.search: {name};
|
annotate Genres with @cds.search: {name};
|
||||||
annotate Genres with @readonly;
|
|
||||||
annotate Genres with {
|
annotate Genres with {
|
||||||
name @title: '{i18n>Genre}';
|
name @title: '{i18n>Genre}';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#XTIT
|
#XTIT
|
||||||
appTitle=Browse Genres
|
appTitle=Manage Genres
|
||||||
#XTXT
|
#XTXT
|
||||||
appDescription=Genres as Tree View
|
appDescription=Genres as Tree View
|
||||||
|
|||||||
@@ -19,13 +19,13 @@
|
|||||||
},
|
},
|
||||||
"crossNavigation": {
|
"crossNavigation": {
|
||||||
"inbounds": {
|
"inbounds": {
|
||||||
"Genres-display": {
|
"Genres-manage": {
|
||||||
"signature": {
|
"signature": {
|
||||||
"parameters": {},
|
"parameters": {},
|
||||||
"additionalParameters": "allowed"
|
"additionalParameters": "allowed"
|
||||||
},
|
},
|
||||||
"semanticObject": "Genres",
|
"semanticObject": "Genres",
|
||||||
"action": "display"
|
"action": "manage"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
52
package-lock.json
generated
52
package-lock.json
generated
@@ -205,9 +205,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/js": {
|
"node_modules/@eslint/js": {
|
||||||
"version": "9.24.0",
|
"version": "9.30.1",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.30.1.tgz",
|
||||||
"integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
|
"integrity": "sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
"peer": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -320,9 +320,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sap/xsenv": {
|
"node_modules/@sap/xsenv": {
|
||||||
"version": "5.5.0",
|
"version": "5.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sap/xsenv/-/xsenv-5.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sap/xsenv/-/xsenv-5.6.1.tgz",
|
||||||
"integrity": "sha512-+FIpnXjDrgtJaN6AxjDRIc5ONd4Yt5UarCqqzRiZjvJaknnkT+b6/ho/va/rg8UdiCAVxn8c4vMVhgjXGc/gmQ==",
|
"integrity": "sha512-4pDpsYLNJsLUBWtTSG+TJ8ul5iY0dWDyJgTy2H/WZGZww9CSPLP/39x+syDDTjkggsmZAlo9t7y9TiXMmtAunw==",
|
||||||
"license": "SEE LICENSE IN LICENSE file",
|
"license": "SEE LICENSE IN LICENSE file",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"debug": "4.4.0",
|
"debug": "4.4.0",
|
||||||
@@ -369,9 +369,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sap/xssec/node_modules/debug": {
|
"node_modules/@sap/xssec/node_modules/debug": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
|
||||||
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
|
"integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ms": "^2.1.3"
|
"ms": "^2.1.3"
|
||||||
@@ -477,9 +477,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/axios": {
|
"node_modules/axios": {
|
||||||
"version": "1.8.4",
|
"version": "1.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz",
|
||||||
"integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
|
"integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"follow-redirects": "^1.15.6",
|
"follow-redirects": "^1.15.6",
|
||||||
@@ -1153,9 +1153,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/form-data": {
|
"node_modules/form-data": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz",
|
||||||
"integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
|
"integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"asynckit": "^0.4.0",
|
"asynckit": "^0.4.0",
|
||||||
@@ -1461,12 +1461,12 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/jwa": {
|
"node_modules/jwa": {
|
||||||
"version": "1.4.1",
|
"version": "1.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz",
|
||||||
"integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
|
"integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"buffer-equal-constant-time": "1.0.1",
|
"buffer-equal-constant-time": "^1.0.1",
|
||||||
"ecdsa-sig-formatter": "1.0.11",
|
"ecdsa-sig-formatter": "1.0.11",
|
||||||
"safe-buffer": "^5.0.1"
|
"safe-buffer": "^5.0.1"
|
||||||
}
|
}
|
||||||
@@ -1755,12 +1755,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/opossum": {
|
"node_modules/opossum": {
|
||||||
"version": "8.4.0",
|
"version": "8.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/opossum/-/opossum-8.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/opossum/-/opossum-8.5.0.tgz",
|
||||||
"integrity": "sha512-YYamqKu48bZCSTJKSWLLO4SSk8tKN2Gg2z1sJZVzHJYVObMO/xQpIzAh6re9HCMHRdB1dJvBjJH18DW7xYOicg==",
|
"integrity": "sha512-LZNvs+p9/ZbG4oN6unnjh4hTxkB0dyHKI2p7azVt8w+//GKDpfHss6WR7KebbpzGEssYwtSd8Mvwxqcmxg10NA==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^22 || ^21 || ^20 || ^18 || ^16"
|
"node": "^24 || ^22 || ^21 || ^20 || ^18 || ^16"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/parseurl": {
|
"node_modules/parseurl": {
|
||||||
@@ -1956,9 +1956,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "7.7.1",
|
"version": "7.7.2",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
|
||||||
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
|
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
|
|||||||
@@ -7,6 +7,6 @@ extend service CatalogService with {
|
|||||||
*, //> non-localized defaults, e.g. title
|
*, //> non-localized defaults, e.g. title
|
||||||
key ID,
|
key ID,
|
||||||
texts.title as localized_title,
|
texts.title as localized_title,
|
||||||
texts.locale
|
texts.locale,
|
||||||
};
|
} excluding { contents };
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user