Skip to content
GitLab
Explore
Projects
Groups
Snippets
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Memri
iOS application
Commits
798e55a4
Commit
798e55a4
authored
4 years ago
by
Toby Brennan
Browse files
Options
Download
Email Patches
Plain Diff
Swift 5.2 support
parent
c7ee2c27
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
memri/cvu/defaults/type/Note.cvu
+1
-1
memri/cvu/defaults/type/Note.cvu
memri/gui/common/UIElementView.swift
+3
-3
memri/gui/common/UIElementView.swift
memri/gui/renderers/CalendarRenderer/CalendarRenderer.swift
+5
-5
memri/gui/renderers/CalendarRenderer/CalendarRenderer.swift
memri/gui/renderers/MapRenderer/MapRendererView.swift
+4
-4
memri/gui/renderers/MapRenderer/MapRendererView.swift
memri/gui/renderers/MessageRenderer.swift
+3
-3
memri/gui/renderers/MessageRenderer.swift
memri/gui/renderers/TimelineRenderer/TimelineRenderer.swift
+12
-10
memri/gui/renderers/TimelineRenderer/TimelineRenderer.swift
with
28 additions
and
26 deletions
+28
-26
memri/cvu/defaults/type/Note.cvu
+
1
-
1
View file @
798e55a4
...
...
@@ -197,7 +197,7 @@ Note[] {
}
}
[renderer = calendar] {
[renderer = calendar
.timeline
] {
dateTime: {{.dateModified}}
TimelineItem {
...
...
This diff is collapsed.
Click to expand it.
memri/gui/common/UIElementView.swift
+
3
-
3
View file @
798e55a4
...
...
@@ -267,9 +267,9 @@ public struct UIElementView: SwiftUI.View {
}
else
if
from
.
type
==
.
Map
{
MapView
(
useMapBox
:
context
.
settings
.
get
(
"/user/general/gui/useMapBox"
,
type
:
Bool
.
self
)
??
false
,
config
:
.
init
(
dataItems
:
[
self
.
item
],
locationResolver
:
{
_
in
get
(
"location"
)
},
addressResolver
:
{
_
in
get
(
"address"
,
type
:
Address
.
self
)
??
get
(
"address"
,
type
:
Results
<
Item
>.
self
)
},
labelResolver
:
{
_
in
get
(
"label"
)
})
locationResolver
:
{
_
in
self
.
get
(
"location"
)
},
addressResolver
:
{
_
in
(
self
.
get
(
"address"
,
type
:
Address
.
self
)
as
Any
?)
??
(
self
.
get
(
"address"
,
type
:
Results
<
Item
>.
self
)
as
Any
?)
},
labelResolver
:
{
_
in
self
.
get
(
"label"
)
})
)
.
background
(
Color
(
.
secondarySystemBackground
))
.
setProperties
(
from
.
properties
,
self
.
item
,
context
,
self
.
viewArguments
)
...
...
This diff is collapsed.
Click to expand it.
memri/gui/renderers/CalendarRenderer/CalendarRenderer.swift
+
5
-
5
View file @
798e55a4
...
...
@@ -94,9 +94,9 @@ struct CalendarView: View {
day
.
map
{
day
in
VStack
(
spacing
:
0
)
{
Spacer
()
Text
(
calendarHelper
.
dayString
(
for
:
day
))
.
foregroundColor
(
calendarHelper
.
isToday
(
day
)
?
.
red
:
Color
(
.
label
))
Circle
()
.
fill
(
hasItemOnDay
(
day
)
?
Color
.
red
:
Color
.
clear
)
Text
(
self
.
calendarHelper
.
dayString
(
for
:
day
))
.
foregroundColor
(
self
.
calendarHelper
.
isToday
(
day
)
?
.
red
:
Color
(
.
label
))
Circle
()
.
fill
(
self
.
hasItemOnDay
(
day
)
?
Color
.
red
:
Color
.
clear
)
.
frame
(
width
:
10
,
height
:
10
)
.
padding
(
4
)
Spacer
()
...
...
@@ -117,12 +117,12 @@ struct CalendarView: View {
formatter
.
dateStyle
=
.
long
formatter
.
timeStyle
=
.
none
// handle press on day
let
items
=
itemsOnDay
(
day
)
let
items
=
self
.
itemsOnDay
(
day
)
let
uids
=
items
.
compactMap
{
$0
.
uid
}
guard
let
itemType
=
items
.
first
?
.
genericType
,
!
uids
.
isEmpty
else
{
return
}
try
?
ActionOpenViewWithUIDs
(
context
)
.
exec
([
"itemType"
:
itemType
,
"uids"
:
uids
])
try
?
ActionOpenViewWithUIDs
(
self
.
context
)
.
exec
([
"itemType"
:
itemType
,
"uids"
:
uids
])
}
}
...
...
This diff is collapsed.
Click to expand it.
memri/gui/renderers/MapRenderer/MapRendererView.swift
+
4
-
4
View file @
798e55a4
...
...
@@ -58,14 +58,14 @@ struct MapRendererView: View {
var
body
:
some
View
{
let
config
=
MapViewConfig
(
dataItems
:
context
.
items
,
locationResolver
:
{
self
.
resolveExpression
(
renderConfig
.
location
,
forItem
:
$0
)
self
.
resolveExpression
(
self
.
renderConfig
.
location
,
forItem
:
$0
)
},
addressResolver
:
{
self
.
resolveExpression
(
renderConfig
.
address
,
toType
:
Results
<
Item
>.
self
,
forItem
:
$0
)
??
self
.
resolveExpression
(
renderConfig
.
address
,
toType
:
Address
.
self
,
forItem
:
$0
)
self
.
resolveExpression
(
self
.
renderConfig
.
address
,
toType
:
Results
<
Item
>.
self
,
forItem
:
$0
)
??
self
.
resolveExpression
(
self
.
renderConfig
.
address
,
toType
:
Address
.
self
,
forItem
:
$0
)
},
labelResolver
:
{
self
.
resolveExpression
(
renderConfig
.
label
,
forItem
:
$0
)
self
.
resolveExpression
(
self
.
renderConfig
.
label
,
forItem
:
$0
)
},
mapStyle
:
renderConfig
.
mapStyle
,
onPress
:
self
.
onPress
)
...
...
This diff is collapsed.
Click to expand it.
memri/gui/renderers/MessageRenderer.swift
+
3
-
3
View file @
798e55a4
...
...
@@ -60,14 +60,14 @@ struct MessageRenderer: View {
var
section
:
ASSection
<
Int
>
{
ASSection
<
Int
>
(
id
:
0
,
data
:
context
.
items
,
selectedItems
:
selectedItems
)
{
item
,
cellContext
in
renderConfig
.
render
(
item
:
item
)
self
.
renderConfig
.
render
(
item
:
item
)
.
environmentObject
(
self
.
context
)
}
.
onSelectSingle
{
(
index
)
in
guard
let
selectedItem
=
context
.
items
[
safe
:
index
],
guard
let
selectedItem
=
self
.
context
.
items
[
safe
:
index
],
let
press
=
self
.
renderConfig
.
press
else
{
return
}
context
.
executeAction
(
press
,
with
:
selectedItem
)
self
.
context
.
executeAction
(
press
,
with
:
selectedItem
)
}
}
...
...
This diff is collapsed.
Click to expand it.
memri/gui/renderers/TimelineRenderer/TimelineRenderer.swift
+
12
-
10
View file @
798e55a4
...
...
@@ -44,17 +44,17 @@ struct TimelineRenderer: View {
return
model
.
data
.
map
{
group
in
let
matchesNow
=
model
.
calendarHelper
.
isSameAsNow
(
group
.
date
,
byComponents
:
model
.
detailLevel
.
relevantComponents
)
return
ASSection
<
Date
>
(
id
:
group
.
date
,
data
:
group
.
items
)
{
element
,
cellContext
in
renderElement
(
element
)
self
.
renderElement
(
element
)
.
if
(
group
.
items
.
count
<
2
)
{
$0
.
frame
(
minHeight
:
35
)
}
}
.
onSelectSingle
({
(
index
)
in
guard
let
element
=
group
.
items
[
safe
:
index
]
else
{
return
}
if
element
.
isGroup
{
let
uids
=
element
.
items
.
compactMap
{
$0
.
uid
}
try
?
ActionOpenViewWithUIDs
(
context
)
.
exec
([
"itemType"
:
element
.
itemType
,
"uids"
:
uids
])
try
?
ActionOpenViewWithUIDs
(
self
.
context
)
.
exec
([
"itemType"
:
element
.
itemType
,
"uids"
:
uids
])
}
else
{
if
let
press
=
self
.
renderConfig
.
press
,
let
item
=
element
.
items
.
first
{
context
.
executeAction
(
press
,
with
:
item
)
self
.
context
.
executeAction
(
press
,
with
:
item
)
}
}
})
...
...
@@ -99,10 +99,12 @@ struct TimelineRenderer: View {
backgroundColor
:
ItemFamily
(
rawValue
:
element
.
itemType
)?
.
backgroundColor
??
.
gray
)
.
frame
(
maxWidth
:
.
infinity
,
alignment
:
.
leading
)
#warning("@Ruben: I couldn't figure out a way using current CVU options to provide a way to render for a `group` of items")
}
else
if
let
item
=
element
.
items
.
first
{
self
.
renderConfig
.
render
(
item
:
item
)
.
frame
(
maxWidth
:
.
infinity
,
alignment
:
.
leading
)
.
environmentObject
(
context
)
}
else
{
element
.
items
.
first
.
map
{
self
.
renderConfig
.
render
(
item
:
$0
)
.
frame
(
maxWidth
:
.
infinity
,
alignment
:
.
leading
)
.
environmentObject
(
context
)
}
}
}
...
...
@@ -119,7 +121,7 @@ struct TimelineRenderer: View {
var
layout
:
ASCollectionLayout
<
Date
>
{
ASCollectionLayout
(
scrollDirection
:
.
vertical
,
interSectionSpacing
:
0
)
{
()
->
ASCollectionLayoutSection
in
ASCollectionLayoutSection
{
layoutEnvironment
->
NSCollectionLayoutSection
in
let
hasFullWidthHeader
:
Bool
=
renderConfig
.
detailLevel
==
.
year
let
hasFullWidthHeader
:
Bool
=
self
.
renderConfig
.
detailLevel
==
.
year
let
itemLayoutSize
=
NSCollectionLayoutSize
(
widthDimension
:
.
fractionalWidth
(
1.0
),
heightDimension
:
.
estimated
(
20
))
...
...
@@ -130,7 +132,7 @@ struct TimelineRenderer: View {
let
section
=
NSCollectionLayoutSection
(
group
:
group
)
section
.
contentInsets
=
.
init
(
top
:
15
,
leading
:
hasFullWidthHeader
?
10
:
leadingInset
+
5
,
bottom
:
15
,
trailing
:
10
)
section
.
contentInsets
=
.
init
(
top
:
15
,
leading
:
hasFullWidthHeader
?
10
:
self
.
leadingInset
+
5
,
bottom
:
15
,
trailing
:
10
)
section
.
interGroupSpacing
=
10
section
.
visibleItemsInvalidationHandler
=
{
visibleItems
,
contentOffset
,
layoutEnvironment
in
// If this isn't defined, there is a bug in UICVCompositional Layout that will fail to update sizes of cells
...
...
@@ -146,7 +148,7 @@ struct TimelineRenderer: View {
headerSupplementary
.
extendsBoundary
=
true
headerSupplementary
.
pinToVisibleBounds
=
false
}
else
{
let
supplementarySize
=
NSCollectionLayoutSize
(
widthDimension
:
.
absolute
(
leadingInset
),
heightDimension
:
.
absolute
(
64
))
let
supplementarySize
=
NSCollectionLayoutSize
(
widthDimension
:
.
absolute
(
self
.
leadingInset
),
heightDimension
:
.
absolute
(
64
))
headerSupplementary
=
NSCollectionLayoutBoundarySupplementaryItem
(
layoutSize
:
supplementarySize
,
elementKind
:
UICollectionView
.
elementKindSectionHeader
,
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Snippets