This commit is contained in:
2026-08-10 18:10:28 +02:00
parent b5e8476c9b
commit 17350816c2
23 changed files with 11113 additions and 4 deletions
+23
View File
@@ -0,0 +1,23 @@
{
"generationParameters": {
"generationDate": "Mon Aug 10 2026 18:00:41 GMT+0200 (Central European Summer Time)",
"generatorPlatform": "Visual Studio Code",
"serviceType": "None",
"metadataFilename": "",
"serviceUrl": "N/A",
"appName": "week-organizer-app",
"appTitle": "Week Organizer",
"appDescription": "SAPUI5, Task managment, Time organization",
"appNamespace": "de.paulvincenthorn.weekorganizer",
"ui5Theme": "sap_horizon",
"ui5Version": "1.151.0",
"enableEslint": true,
"enableTypeScript": true,
"showMockDataInfo": false,
"generatorVersion": "1.30.0",
"template": "Basic",
"generatorName": "SAP Fiori Application Generator",
"entityRelatedConfig": [],
"launchText": "To launch the generated application, run the following from the generated application root folder:\n\n```\n npm start\n```"
}
}
+11
View File
@@ -0,0 +1,11 @@
node_modules/
dist/
.scp/
.env
Makefile*.mta
mta_archives
mta-*
resources
archive.zip
.*_mta_build_tmp
.vscode/
+34 -4
View File
@@ -1,5 +1,35 @@
# week-organizer-app ## Application Details
| |
| ------------- |
|**Generation Date and Time**<br>Mon Aug 10 2026 18:00:41 GMT+0200 (Central European Summer Time)|
|**App Generator**<br>SAP Fiori Application Generator|
|**App Generator Version**<br>1.30.0|
|**Generation Platform**<br>Visual Studio Code|
|**Template Used**<br>Basic|
|**Service Type**<br>None|
|**Service URL**<br>N/A|
|**Module Name**<br>week-organizer-app|
|**Application Title**<br>Week Organizer|
|**Namespace**<br>de.paulvincenthorn.weekorganizer|
|**UI5 Theme**<br>sap_horizon|
|**UI5 Version**<br>1.151.0|
|**Enable TypeScript**<br>True|
|**Add Eslint configuration**<br>True, see https://www.npmjs.com/package/@sap-ux/eslint-plugin-fiori-tools#rules for the eslint rules.|
## week-organizer-app
SAPUI5, Task managment, Time organization
### Starting the generated app
- This app has been generated using the SAP Fiori tools - App Generator, as part of the SAP Fiori tools suite. To launch the generated application, run the following from the generated application root folder:
```
npm start
```
#### Pre-requisites:
1. Active NodeJS LTS (Long Term Support) version and associated supported NPM version. (See https://nodejs.org)
- SAPUI5
- Task managment
- Time organization
+5
View File
@@ -0,0 +1,5 @@
import fioriTools from '@sap-ux/eslint-plugin-fiori-tools';
export default [
...fioriTools.configs.recommended
];
+10570
View File
File diff suppressed because it is too large Load Diff
+37
View File
@@ -0,0 +1,37 @@
{
"name": "week-organizer-app",
"version": "0.0.1",
"description": "SAPUI5, Task managment, Time organization",
"keywords": [
"ui5",
"openui5",
"sapui5"
],
"main": "webapp/index.html",
"dependencies": {},
"devDependencies": {
"@ui5/cli": "^4.0.33",
"@sap/ux-ui5-tooling": "1",
"@sap-ux/eslint-plugin-fiori-tools": "^10.0.0",
"eslint": "^10",
"@sapui5/types": "~1.151.0",
"ui5-tooling-transpile": "^3.10.0",
"typescript": "^5.9.3"
},
"scripts": {
"start": "fiori run --open \"test/flp.html#app-preview\"",
"start-local": "fiori run --config ./ui5-local.yaml --open \"test/flp.html#app-preview\"",
"build": "ui5 build --config=ui5.yaml --clean-dest --dest dist",
"lint": "eslint ./",
"ts-typecheck": "tsc --noEmit",
"prestart": "npm run ts-typecheck",
"prebuild": "npm run ts-typecheck",
"deploy": "fiori verify",
"deploy-config": "fiori add deploy-config",
"start-noflp": "fiori run --open \"/index.html?sap-ui-xx-viewCache=false\"",
"int-test": "fiori run --open \"test/integration/opaTests.qunit.html\"",
"start-variants-management": "fiori run --open \"/preview.html#app-preview\"",
"unit-test": "fiori run --open \"test/unit/unitTests.qunit.html\""
},
"sapuxLayer": "CUSTOMER_BASE"
}
+31
View File
@@ -0,0 +1,31 @@
{
"compilerOptions": {
"target": "es2022",
"module": "es2022",
"skipLibCheck": true,
"allowJs": true,
"strict": true,
"strictPropertyInitialization": false,
"moduleResolution": "bundler",
"rootDir": "./webapp",
"outDir": "./dist",
"paths": {
"de/paulvincenthorn/weekorganizer/weekorganizerapp/*": [
"./webapp/*"
],
"unit/*": [
"./webapp/test/unit/*"
],
"integration/*": [
"./webapp/test/integration/*"
]
},
"typeRoots": [
"./node_modules/@types",
"./node_modules/@sapui5/types"
]
},
"include": [
"./webapp/**/*"
]
}
+51
View File
@@ -0,0 +1,51 @@
# yaml-language-server: $schema=https://sap.github.io/ui5-tooling/schema/ui5.yaml.json
specVersion: "4.0"
metadata:
name: de.paulvincenthorn.weekorganizer.weekorganizerapp
type: application
framework:
name: SAPUI5
version: 1.151.0
libraries:
- name: sap.m
- name: sap.ui.core
- name: sap.ushell
- name: themelib_sap_horizon
server:
customMiddleware:
- name: fiori-tools-appreload
afterMiddleware: compression
configuration:
port: 35729
path: webapp
delay: 300
- name: ui5-tooling-transpile-middleware
afterMiddleware: compression
configuration:
debug: true
transformModulesToUI5:
overridesToOverride: true
excludePatterns:
- /Component-preload.js
- name: fiori-tools-preview
afterMiddleware: fiori-tools-appreload
configuration:
flp:
theme: sap_horizon
- name: fiori-tools-proxy
afterMiddleware: compression
configuration:
ignoreCertErrors: false # If set to true, certificate errors will be ignored. E.g. self-signed certificates will be accepted
builder:
resources:
excludes:
- /test/**
- /localService/**
customTasks:
- name: ui5-tooling-transpile-task
afterTask: replaceVersion
configuration:
debug: true
transformModulesToUI5:
overridesToOverride: true
+48
View File
@@ -0,0 +1,48 @@
# yaml-language-server: $schema=https://sap.github.io/ui5-tooling/schema/ui5.yaml.json
specVersion: "4.0"
metadata:
name: de.paulvincenthorn.weekorganizer.weekorganizerapp
type: application
server:
customMiddleware:
- name: fiori-tools-proxy
afterMiddleware: compression
configuration:
ignoreCertErrors: false # If set to true, certificate errors will be ignored. E.g. self-signed certificates will be accepted
ui5:
path:
- /resources
- /test-resources
url: https://ui5.sap.com
- name: fiori-tools-appreload
afterMiddleware: compression
configuration:
port: 35729
path: webapp
delay: 300
- name: fiori-tools-preview
afterMiddleware: fiori-tools-appreload
configuration:
flp:
theme: sap_horizon
- name: ui5-tooling-transpile-middleware
afterMiddleware: compression
configuration:
debug: true
transformModulesToUI5:
overridesToOverride: true
excludePatterns:
- /Component-preload.js
builder:
resources:
excludes:
- /test/**
- /localService/**
customTasks:
- name: ui5-tooling-transpile-task
afterTask: replaceVersion
configuration:
debug: true
transformModulesToUI5:
overridesToOverride: true
+26
View File
@@ -0,0 +1,26 @@
import BaseComponent from "sap/ui/core/UIComponent";
import { createDeviceModel } from "./model/models";
/**
* @namespace de.paulvincenthorn.weekorganizer.weekorganizerapp
*/
export default class Component extends BaseComponent {
public static metadata = {
manifest: "json",
interfaces: [
"sap.ui.core.IAsyncContentCreation"
]
};
public init() : void {
// call the base component's init function
super.init();
// set the device model
this.setModel(createDeviceModel(), "device");
// enable routing
this.getRouter().initialize();
}
}
+11
View File
@@ -0,0 +1,11 @@
import Controller from "sap/ui/core/mvc/Controller";
/**
* @namespace de.paulvincenthorn.weekorganizer.weekorganizerapp.controller
*/
export default class App extends Controller {
public onInit(): void {
}
}
+11
View File
@@ -0,0 +1,11 @@
import Controller from "sap/ui/core/mvc/Controller";
/**
* @namespace de.paulvincenthorn.weekorganizer.weekorganizerapp.controller
*/
export default class Main extends Controller {
public onInit(): void {
}
}
+1
View File
@@ -0,0 +1 @@
/* Enter your custom styles here */
+11
View File
@@ -0,0 +1,11 @@
# This is the resource bundle for de.paulvincenthorn.weekorganizer.weekorganizerapp
#Texts for manifest.json
#XTIT: Application name
appTitle=Week Organizer
#YDES: Application description
appDescription=SAPUI5, Task managment, Time organization
#XTIT: Main view title
title=Week Organizer
+35
View File
@@ -0,0 +1,35 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Week Organizer</title>
<style>
html, body, body > div, #container, #container-uiarea {
height: 100%;
}
</style>
<script
id="sap-ui-bootstrap"
src="resources/sap-ui-core.js"
data-sap-ui-theme="sap_horizon"
data-sap-ui-resource-roots='{
"de.paulvincenthorn.weekorganizer.weekorganizerapp": "./"
}'
data-sap-ui-on-init="module:sap/ui/core/ComponentSupport"
data-sap-ui-compat-version="edge"
data-sap-ui-async="true"
data-sap-ui-frame-options="trusted"
></script>
</head>
<body class="sapUiBody sapUiSizeCompact" id="content">
<div
data-sap-ui-component
data-name="de.paulvincenthorn.weekorganizer.weekorganizerapp"
data-id="container"
data-settings='{"id" : "de.paulvincenthorn.weekorganizer.weekorganizerapp"}'
data-handle-validation="true"
></div>
</body>
</html>
+98
View File
@@ -0,0 +1,98 @@
{
"_version": "1.86.0",
"sap.app": {
"id": "de.paulvincenthorn.weekorganizer.weekorganizerapp",
"type": "application",
"i18n": "i18n/i18n.properties",
"applicationVersion": {
"version": "0.0.1"
},
"title": "{{appTitle}}",
"description": "{{appDescription}}",
"resources": "resources.json",
"sourceTemplate": {
"id": "@sap/generator-fiori:basic",
"version": "1.30.0",
"toolsId": "b7c06782-fca8-43d8-a212-9b16ef404db7"
}
},
"sap.ui": {
"technology": "UI5",
"icons": {
"icon": "",
"favIcon": "",
"phone": "",
"phone@2": "",
"tablet": "",
"tablet@2": ""
},
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
},
"sap.ui5": {
"flexEnabled": true,
"dependencies": {
"minUI5Version": "1.151.0",
"libs": {
"sap.m": {},
"sap.ui.core": {}
}
},
"contentDensities": {
"compact": true,
"cozy": true
},
"models": {
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "de.paulvincenthorn.weekorganizer.weekorganizerapp.i18n.i18n"
}
}
},
"resources": {
"css": [
{
"uri": "css/style.css"
}
]
},
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"controlAggregation": "pages",
"controlId": "app",
"transition": "slide",
"type": "View",
"viewType": "XML",
"path": "de.paulvincenthorn.weekorganizer.weekorganizerapp.view",
"async": true,
"viewPath": "de.paulvincenthorn.weekorganizer.weekorganizerapp.view"
},
"routes": [
{
"name": "RouteMain",
"pattern": ":?query:",
"target": [
"TargetMain"
]
}
],
"targets": {
"TargetMain": {
"id": "Main",
"name": "Main"
}
}
},
"rootView": {
"viewName": "de.paulvincenthorn.weekorganizer.weekorganizerapp.view.App",
"type": "XML",
"id": "App",
"async": true
}
}
}
+8
View File
@@ -0,0 +1,8 @@
import JSONModel from "sap/ui/model/json/JSONModel";
import Device from "sap/ui/Device";
export function createDeviceModel () {
const model = new JSONModel(Device);
model.setDefaultBindingMode("OneWay");
return model;
}
@@ -0,0 +1,34 @@
/*global QUnit*/
import opaTest from "sap/ui/test/opaQunit";
import AppPage from "./pages/AppPage";
import ViewPage from "./pages/MainPage";
import Opa5 from "sap/ui/test/Opa5";
QUnit.module("Navigation Journey");
const onTheAppPage = new AppPage();
const onTheViewPage = new ViewPage();
Opa5.extendConfig({
viewNamespace: "de.paulvincenthorn.weekorganizer.weekorganizerapp.view.",
autoWait: true
});
opaTest("Should see the initial page of the app", function () {
// Arrangements
// eslint-disable-next-line @typescript-eslint/no-floating-promises
onTheAppPage.iStartMyUIComponent({
componentConfig: {
name: "de.paulvincenthorn.weekorganizer.weekorganizerapp"
}
});
// Assertions
onTheAppPage.iShouldSeeTheApp();
onTheViewPage.iShouldSeeThePageView();
// Cleanup
// eslint-disable-next-line @typescript-eslint/no-floating-promises
onTheAppPage.iTeardownMyApp();
});
+22
View File
@@ -0,0 +1,22 @@
import Opa5 from "sap/ui/test/Opa5";
const sViewName = "App";
export default class AppPage extends Opa5 {
// Actions
// Assertions
iShouldSeeTheApp() {
return this.waitFor({
id: "app",
viewName: sViewName,
success: function () {
Opa5.assert.ok(true, "The " + sViewName + " view is displayed");
},
errorMessage: "Did not find the " + sViewName + " view"
});
}
}
+23
View File
@@ -0,0 +1,23 @@
import Opa5 from "sap/ui/test/Opa5";
const sViewName = "Main";
export default class MainPage extends Opa5 {
// Actions
// Assertions
iShouldSeeThePageView() {
return this.waitFor({
id: "page",
viewName: sViewName,
success: function () {
Opa5.assert.ok(true, "The " + sViewName + " view is displayed");
},
errorMessage: "Did not find the " + sViewName + " view"
});
}
}
@@ -0,0 +1,10 @@
/*global QUnit*/
import Controller from "de/paulvincenthorn/weekorganizer/weekorganizerapp/controller/Main.controller";
QUnit.module("Main Controller");
QUnit.test("I should test the Main controller", function (assert: Assert) {
const oAppController = new Controller("Main");
oAppController.onInit();
assert.ok(oAppController);
});
+7
View File
@@ -0,0 +1,7 @@
<mvc:View controllerName="de.paulvincenthorn.weekorganizer.weekorganizerapp.controller.App"
displayBlock="true"
xmlns:mvc="sap.ui.core.mvc"
xmlns="sap.m">
<App id="app">
</App>
</mvc:View>
+6
View File
@@ -0,0 +1,6 @@
<mvc:View controllerName="de.paulvincenthorn.weekorganizer.weekorganizerapp.controller.Main"
xmlns:mvc="sap.ui.core.mvc"
xmlns="sap.m">
<Page id="page" title="{i18n>title}">
</Page>
</mvc:View>