Skip to content

Commit

Permalink
Uploaded version 1.0. including:
Browse files Browse the repository at this point in the history
- Prepared for I18N
- New workflow to write comments for an Alarm and updated Alarm details
- Dark mode support
- Credentials will be saved after logging out, log out needs to be confirmed
- Alarm list will display it's filter settings
- Corrected creation date for Alarms to match WebUI
- Added a button to open Alarm filter when no Alarm matches the filter
- Updated Alarm based icons
  • Loading branch information
joerghartmann committed Jan 11, 2023
1 parent 4172353 commit 46cc9ed
Show file tree
Hide file tree
Showing 87 changed files with 1,477 additions and 637 deletions.
106 changes: 76 additions & 30 deletions ios/AlarmApp/AlarmApp.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0x19",
"green" : "0x2B",
"red" : "0xD0"
"blue" : "0x43",
"green" : "0x3D",
"red" : "0xC1"
}
},
"idiom" : "universal"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0x3C",
"green" : "0x87",
"red" : "0xF0"
"blue" : "0x2D",
"green" : "0x7D",
"red" : "0xD2"
}
},
"idiom" : "universal"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0x3E",
"green" : "0xB3",
"red" : "0xED"
"blue" : "0x49",
"green" : "0xC0",
"red" : "0xE5"
}
},
"idiom" : "universal"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0xDC",
"green" : "0x8D",
"red" : "0x3E"
"blue" : "0xC2",
"green" : "0x64",
"red" : "0x2B"
}
},
"idiom" : "universal"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
"scale" : "1x"
},
{
"filename" : "ic_acknowledge@2x.png",
"filename" : "dlt-c8y-icon-alarm-acknowledged_24x24@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "ic_acknowledge@3x.png",
"filename" : "dlt-c8y-icon-alarm-acknowledged_24x24@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
"scale" : "1x"
},
{
"filename" : "ic_acknowledge@2x.png",
"filename" : "dlt-c8y-icon-alarm-active_24x24@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "ic_acknowledge@3x.png",
"filename" : "dlt-c8y-icon-alarm-active_24x24@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
"scale" : "1x"
},
{
"filename" : "ic_clear@2x.png",
"filename" : "dlt-c8y-icon-alarm-cleared_24x24@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "ic_clear@3x.png",
"filename" : "dlt-c8y-icon-alarm-cleared_24x24@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
"scale" : "1x"
},
{
"filename" : "critical_24px@2x.png",
"filename" : "dlt-c8y-icon-critical_24x24_D22D3D@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "critical_24px@3x.png",
"filename" : "dlt-c8y-icon-critical_24x24_D22D3D@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
Expand Down
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
"scale" : "1x"
},
{
"filename" : "major@2x.png",
"filename" : "dlt-c8y-icon-major_24x24_E07800@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "major@3x.png",
"filename" : "dlt-c8y-icon-major_24x24_E07800@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
"scale" : "1x"
},
{
"filename" : "minor@2x.png",
"filename" : "dlt-c8y-icon-minor_24x24_ECBE23@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "minor@3x.png",
"filename" : "dlt-c8y-icon-minor_24x24_ECBE23@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
"scale" : "1x"
},
{
"filename" : "info_24px@2x.png",
"filename" : "dlt-c8y-icon-warning_24x24_0366C9@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "info_24px@3x.png",
"filename" : "dlt-c8y-icon-warning_24x24_0366C9@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Diff not rendered.
Diff not rendered.
360 changes: 248 additions & 112 deletions ios/AlarmApp/AlarmApp/Base.lproj/Main.storyboard

Large diffs are not rendered by default.

25 changes: 7 additions & 18 deletions ios/AlarmApp/AlarmApp/Controller/AlarmDetailsViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,10 @@ class AlarmDetailsViewController: UIViewController, AlarmUpdate {

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationItem.title = %"alarm_details_title"
M3Theme.applyTheme(view: self.segmentedControl)
self.segmentedControl.setTitle(%"alarm_details_details", forSegmentAt: 0)
self.segmentedControl.setTitle(%"alarm_details_comments", forSegmentAt: 1)
self.newCommentButton.layer.shadowOpacity = 0.4
self.newCommentButton.layer.shadowRadius = 2
self.newCommentButton.layer.shadowOffset = CGSize(width: 2.0, height: 2.0)
Expand All @@ -52,24 +55,6 @@ class AlarmDetailsViewController: UIViewController, AlarmUpdate {

// MARK: - Actions

/*
@IBAction func onCommentTyped(_ sender: UITextField) {
if let a = self.alarm, let id = a.id {
var alarm = C8yAlarm()
var newComment = C8yComment()
newComment.text = sender.text
newComment.user = CumulocityApi.shared().userId
var comments = a[C8yComment.identifier] as? [C8yComment] ?? []
comments.append(newComment)
alarm.customFragments = [C8yComment.identifier: comments]
self.updateAlarm(alarm, id)
sender.text = nil
}
}
*/

@IBAction func onContentsChanged(_ sender: UISegmentedControl) {
if let child = summaryController {
child.willMove(toParent: nil)
Expand Down Expand Up @@ -102,6 +87,10 @@ class AlarmDetailsViewController: UIViewController, AlarmUpdate {
destination?.alarm = self.alarm
destination?.delegate = self
self.summaryController = destination
} else if segue.identifier == UIStoryboardSegue.toNewComment {
let destination = segue.destination as? NewCommentViewController
destination?.alarm = self.alarm
destination?.delegate = self
}
}
}
Expand Down
11 changes: 10 additions & 1 deletion ios/AlarmApp/AlarmApp/Controller/AlarmFilterViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,17 @@ class AlarmFilterViewController: UIViewController {
self.deviceNameTextfield.text = self.filter.deviceName
self.alarmTypeTextfield.text = self.filter.alarmType
M3Theme.applyTheme(view: self.severityFilter)
M3Theme.applyTheme(view: self.statusFilter)
self.severityFilter.setTitle(%"alarm_severity_critical", forSegmentAt: 0)
self.severityFilter.setTitle(%"alarm_severity_major", forSegmentAt: 1)
self.severityFilter.setTitle(%"alarm_severity_minor", forSegmentAt: 2)
self.severityFilter.setTitle(%"alarm_severity_warning", forSegmentAt: 3)
self.severityFilter.setTitle(%"alarm_severity_all", forSegmentAt: 4)
self.severityFilter.bind(with: self.filter.severity)
M3Theme.applyTheme(view: self.statusFilter)
self.statusFilter.setTitle(%"alarm_status_active", forSegmentAt: 0)
self.statusFilter.setTitle(%"alarm_status_acknowledged", forSegmentAt: 1)
self.statusFilter.setTitle(%"alarm_status_cleared", forSegmentAt: 2)
self.statusFilter.setTitle(%"alarm_status_all", forSegmentAt: 3)
self.statusFilter.bind(with: self.filter.status)
}

Expand Down
31 changes: 25 additions & 6 deletions ios/AlarmApp/AlarmApp/Controller/AlarmListViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@ class AlarmListViewController: UITableViewController, AlarmListReloadDelegate, E

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationItem.title = %"alarms_title"
UITableViewController.prepareForAlarms(with: self.tableView, delegate: self)
self.tableView.tableHeaderView = UIView()
AlarmFilterTableHeader.register(for: self.tableView)

// Refresh control
self.tableView.refreshControl = UIRefreshControl()
Expand All @@ -41,12 +42,21 @@ class AlarmListViewController: UITableViewController, AlarmListReloadDelegate, E
}

func fetchAlarms() {
// we want the table view header to resize correctly
self.tableView.reloadData()
if let deviceName = filter.deviceName {
let managedObjectsApi = Cumulocity.Core.shared.inventory.managedObjectsApi
managedObjectsApi.getManagedObjects(query: "$filter=(name eq '\(deviceName)')")
let query = CumulocityHelper.queryBy(deviceName: deviceName)
managedObjectsApi.getManagedObjects(query: query)
.receive(on: DispatchQueue.main)
.sink(
receiveCompletion: { _ in
receiveCompletion: { completion in
let error = try? completion.error()
if error != nil {
self.data = C8yAlarmCollection()
self.tableView.reloadData()
self.tableView.endRefreshing()
}
},
receiveValue: { collection in
if collection.managedObjects?.count ?? 0 > 0 {
Expand Down Expand Up @@ -102,11 +112,11 @@ class AlarmListViewController: UITableViewController, AlarmListReloadDelegate, E
publisher?.receive(on: DispatchQueue.main)
.sink(
receiveCompletion: { _ in
self.tableView.reloadData()
self.tableView.endRefreshing()
},
receiveValue: { collection in
self.data = collection
self.tableView.reloadData()
self.tableView.endRefreshing()
}
)
.store(in: &self.cancellableSet)
Expand Down Expand Up @@ -138,7 +148,7 @@ class AlarmListViewController: UITableViewController, AlarmListReloadDelegate, E
for status in allAlarmStatus where status != alarm?.status {
let action = UIContextualAction(
style: .destructive,
title: status.name()
title: status.verb()
) { [weak self] _, _, completionHandler in
self?.changeAlarmStatus(for: alarm, toStatus: status)
completionHandler(true)
Expand Down Expand Up @@ -192,6 +202,15 @@ class AlarmListViewController: UITableViewController, AlarmListReloadDelegate, E
performSegue(withIdentifier: UIStoryboardSegue.toAlarmDetails, sender: self)
}

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
guard let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: AlarmFilterTableHeader.identifier) as? AlarmFilterTableHeader else {
fatalError("Could not create AlarmFilterTableHeader")
}
headerView.alarmFilter = filter
headerView.setBackgroundConfiguration(with: .background)
return headerView
}

// MARK: - Navigation

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import UIKit
class AlarmSummaryViewController: UIViewController {
@IBOutlet var systemIdItem: DetailsItem!
@IBOutlet var lastOccurrenceItem: DetailsItem!
@IBOutlet var triggeredAtItem: DetailsItem!
@IBOutlet var createdAtItem: DetailsItem!
@IBOutlet var typeItem: DetailsItem!
@IBOutlet weak var changelogButtonView: UIView!
@IBOutlet weak var modifySeverityButton: UIButton!
Expand Down Expand Up @@ -56,8 +56,8 @@ class AlarmSummaryViewController: UIViewController {
if let lastOccurred = a.lastUpdated {
self.lastOccurrenceItem.valueLabel.text = CumulocityHelper.toReadableDate(lastOccurred)
}
if let triggeredAt = a.creationTime {
self.triggeredAtItem.valueLabel.text = CumulocityHelper.toReadableDate(triggeredAt)
if let triggeredAt = a.time {
self.createdAtItem.valueLabel.text = CumulocityHelper.toReadableDate(triggeredAt)
}
self.typeItem.valueLabel.text = a.type

Expand All @@ -83,7 +83,7 @@ class AlarmSummaryViewController: UIViewController {

private func buildAction(for severity: C8yAlarm.C8ySeverity, current: C8yAlarm.C8ySeverity) -> UIAction {
UIAction(
title: severity.rawValue.capitalized,
title: severity.localised(),
image: severity.icon(),
state: current == severity ? .on : .off
) { _ in
Expand All @@ -94,7 +94,7 @@ class AlarmSummaryViewController: UIViewController {

private func buildAction(for status: C8yAlarm.C8yStatus, current: C8yAlarm.C8yStatus) -> UIAction {
UIAction(
title: status.rawValue.capitalized,
title: status.localised(),
image: status.icon(),
state: current == status ? .on : .off
) { _ in
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class CommentListViewController: UITableViewController {

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
UITableViewController.prepareForAudits(with: self.tableView)
UITableViewController.prepareForComments(with: self.tableView)
// Empty state
let emptyItem = EmptyCommentsItem()
tableView.backgroundView = emptyItem
Expand All @@ -39,9 +39,9 @@ class CommentListViewController: UITableViewController {

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(
withIdentifier: AuditRecordItem.identifier,
withIdentifier: CommentItem.identifier,
for: indexPath
) as? AuditRecordItem {
) as? CommentItem {
cell.bind(with: data[indexPath.item])
return cell
}
Expand Down
Loading

0 comments on commit 46cc9ed

Please sign in to comment.