This project is the SwiftUI implementation of the SAP Fiori for iOS Design Language, and is meant to augment and in some cases replace the UIKit-based implementation contained in the SAPFiori framework of the SAP Cloud Platform SDK for iOS.
This project currently contains the two modules
The FioriCharts module is planned to replace the RoambiChartKit charting library which was already embedded in SAPFiori. Migrating to SwiftUI gives the ability to easily add new chart components (donut, bullet, stocks, etc.) while modernizing the existing supported charts with pinch-to-zoom, pan, and new design features.
|SAPFiori 4.0.x, 5.0.x||FioriCharts|
The API is designed for backwards compatibility to the existing SAPFiori charting APIs, but is optimized for SwiftUI.
Fiori Integration Cards
The FioriIntegrationCards module is a native SwiftUI renderer for the UI5 Integration Cards. These types of cards are common in UI5 dashboard and overview page user contexts. In native iOS apps, we are focusing initially on the dashboard use case, and also considering Cards as ideal for Annotation-style views--in maps, or AR experiences.
- iOS 13 or higher, macOS 10.15.4 or higher
- Xcode 11.4 or higher
- Swift Package Manager
Download and Installation
The package is intended for consumption via Swift Package Manager.
- To add to your application target, navigate to the
Project Settings > Swift Packagestab, then add the repository URL.
- To add to your framework target, add the repository URL to your Package.swift manifest.
In both cases, xcodebuild tooling will manage cloning and updating the repository to your app or framework project.
Three products are exposed by the
FioriSwiftUI as umbrella product will contain everything the package as to offer in the future.
If you are concerned about bundle size you can use either one of the individual products FioriCharts or FioriIntegrationCards
Both modules are currently in development, and should not yet be used productively. Breaking changes may occur in 0.x.x release(s)
Several functional limitations exist at present, which are planned for resolution before milestone release 1.0.0. Please check the Issues tab for an up-to-date view of the backlog and issue status.
Key gaps which are present at time of open-source project launch:
- FioriIntegrationCards networking shall support injection of
- FioriIntegrationCards currently handles only data which is in-line json; must be augmented to support resolving relative data files, and remote URIs
- FioriIntegrationCards and FioriCharts requires design specifications to improve UI
- FioriIntegrationCards and FioriCharts must support theming with NUI nss stylesheets, as currently supported by SAPFiori.
How to obtain support
Support for the modules is provided thorough this open-source repository. Please file Github Issues for any issues experienced, or questions.
When SAPFiori integrates FioriCharts productively, customers should continue to report issues through OSS for SLA tracking. However, developers may also report chart-related issues directly into the Github Issues; SAP will mirror FioriCharts-related issues reported through OSS into Github Issues.
If you want to contribute, please check the Contribution Guidelines
To-Do (upcoming changes)
Functionality can be further explored with a demo app which is already part of this package (
You may find interesting
⚠ BREAKING CHANGES
- ✏️ change micro charts from public to internal
- 🎸 a chart is determined by the max of data or axis label (2296c1a)
- 🎸 add multiple selection for donut chart (b8c7359)
- 🎸 add nav/popup mode for test app (#159) (cf0b96c)
- 🎸 add new mode fixedBottom for x axis labels (4748180)
- 🎸 add validation for numeric properties in chart models (0cebe97)
- 🎸 add xAxisLabelsPosition to init() (76a3611)
- 🎸 allow ChartView to pass a NoDataView to customize it (13a1ae3)
- 🎸 allow more number of ChartSeriesAttributes than number (e4176cc)
- 🎸 improve color palette (d6a8837)
- 🎸 refactor line and point shapes (42d7e7c)
- 🎸 small improvements to test app (df83ff0)
- 🎸 support .single and .all selection mode for donut chart (2e2e0d4)
- 🎸 support both y axes for column insdex of combo chart (18d3ac7)
- 🎸 support more variants of data format in chart model (a99bd80)
- 🎸 support to display multiple selctions for line charts (9095261)
🐛 adjust spacing between axis's labels and baseline (c0025f4)
🐛 color issue caused by order of series on analytical card (a10b808)
🐛 color palette issues for integration (994b619)
🐛 compiler error for selectionMode of ChartModel on Xcode 11 (71ea4c8)
🐛 fix ui update issue and refactor code (711526f)
🐛 fix x axis ui update issue (1ec70b0)
🐛 fix xcode 11 compile bug (793457b)
🐛 fix xcode 11 compile issue (dd36c50)
🐛 fix xcode 11 compile issue (b0ea42d)
🐛 improve hex color initialization (30fbd90)
🐛 improve test app (c189fc5)
🐛 selection mode .all in bubble & scatter chart (125bdb9)
🐛 show chart plot on top of axes and grid lines (7f90c02)
🐛 xcode 11 compile issue (d70690a)
✏️ change micro charts from public to internal (e129a97)
- 🎸 color palette update (e6a774a)
- 🎸 stacked bar chart (d0f8029)
- 🎸 support contrast color display mode (a138adb)
- 🎸 support multiple selection in donut chart (#120) (831e0fb)
- 🎸 bar chart (1efba9a)
- 🎸 request data for remote int. card (non-cardBundle) (#113) (193316d)
- 🐛 add API doc for resolvedColor() method (9d95a77)
- 🐛 fix the flickering issue on main branch (053a711), closes #106
- 🐛 fix the problem that title row does not align with card (8846532), closes #117
- 🐛 fix lint issues (e33be69)
- 🐛 integration Card Header: no dynamic value for status (2a7eae2)
- 🐛 truncated header in list card when running iOS 14 (4912c47)
🎸 add scatter chart (2dc3fd1) 🎸 support for bubble chart (#85) (4f77e3f)
fix visualization for iOS 14 widgets (2dc3fd1), closes #87
⚠ BREAKING CHANGES
- FioriIntegrationCards: decoder in
⚠ BREAKING CHANGES
- FioriIntegrationCards: Class name changed
- 🎸 add stacked column chart and improve column chart (9ed685b)
- 🎸 color palettes and theme manager (#66) (bfbc5fd)
- 🎸 support colorsForCategory for column and stacked column (4f88c4d)
- 🎸 Support fetching data with Request object (#68) (4689b12), closes #33
- 🎸 add custom views of FioriCharts to Xcode library (bc23d6e)
- project ‘FioriSwiftUI’ is damaged and cannot be opened (8c324df)
- rename BaseBaseCard to BackingCard (e998644), closes #59
⚠ BREAKING CHANGES
- SegmentedControl: API renaming
- add a new chart type - column (06bb4a6)
- add new column chart to test app Micro Chart (52b41c0)
- pin&zoom and pan for column chart's x axis labels (44ca423)
- pinch&zoom and pan for column chart (def04f5)
- selections for column chart (0b99e0f)
version solving failed when adding try to add package in XCode with version rules
- First public release! 🎉
- Introducing FioriCharts and FioriIntegrationCards module
- Software is incomplete (but useable) and remains a work in progress