I cant get either a custom of basic color to not timeout Xcode
.listRowBackground( Capsule().fill(Color(white: 1, opacity(0.8))) .padding(.vertical, 2) .padding(.horizontal, 10) )
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
The edited code still has the problem of not lining up with the health app
private func fetchSleepData(for date: Date) {
let sleepType = HKObjectType.categoryType(forIdentifier: .sleepAnalysis)!
let endOfPeriod = date
let startOfPeriod = Calendar.current.date(byAdding: .day, value: -1, to: endOfPeriod)!
let predicate = HKQuery.predicateForSamples(withStart: startOfPeriod, end: endOfPeriod, options: [.strictStartDate, .strictEndDate])
let query = HKSampleQuery(sampleType: sleepType, predicate: predicate, limit: HKObjectQueryNoLimit, sortDescriptors: nil) { query, samples, error in
guard let samples = samples as? [HKCategorySample], !samples.isEmpty else {
DispatchQueue.main.async {
self.inBedTime = 0
self.coreTime = 0
self.deepTime = 0
self.remTime = 0
self.isSleepDataAvailable = false
}
print("No sleep data available for date: \(date)")
return
}
print("Fetched \(samples.count) sleep samples for date: \(date)")
var inBedTime = 0.0
var asleepTime = 0.0
var deepTime = 0.0
var remTime = 0.0
for sample in samples {
print("Sample value: \(sample.value)")
let duration = sample.endDate.timeIntervalSince(sample.startDate) / 60 // convert to minutes
switch sample.value {
case HKCategoryValueSleepAnalysis.inBed.rawValue:
inBedTime += duration
case HKCategoryValueSleepAnalysis.asleepCore.rawValue:
coreTime += duration
case HKCategoryValueSleepAnalysis.asleepDeep.rawValue:
deepTime += duration
case HKCategoryValueSleepAnalysis.asleepREM.rawValue:
remTime += duration
default:
break
}
}
DispatchQueue.main.async {
self.inBedTime = inBedTime
self.coreTime = coreTime
self.deepTime = deepTime
self.remTime = remTime
self.isSleepDataAvailable = true
}
}
healthStore?.execute(query)
}
the file does not show a black fill but the app shows a black circle.
since it's to long https://gist.github.com/YutaTheTraveler/0b8c11faf997f2118d19bbd009d490ba.js
I'm at my Witts end trying to figure out why charts is incorrectly labeling the days!
struct SunlightSupportBox: View {
@ObservedObject var viewModel = SunlightViewModel()
@EnvironmentObject var themeSettings: ThemeSettings
var sortedSunlightData: [SunlightData] {
viewModel.sunlightData.sorted(by: { $0.date < $1.date })
}
var body: some View {
VStack {
if !sortedSunlightData.isEmpty {
Chart {
ForEach(sortedSunlightData) { data in
BarMark(
x: .value("Day", formattedDate(date: data.date)),
y: .value("Triggers/Reflections", Double((data.triggersCount * 10 + data.reflectionsCount * 10))) // Each trigger/reflection represents 5 minutes
)
.foregroundStyle(Color.green.opacity(0.5))
BarMark(
x: .value("Day", formattedDate(date: data.date)),
yStart: .value("Sunlight Start", 0),
yEnd: .value("Minutes of Sunlight", data.duration * 60) // Convert hours to minutes
)
.foregroundStyle(Color.orange.opacity(0.5))
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.padding(10)
.clipShape(RoundedRectangle(cornerRadius: 25))
.padding()
.background(themeSettings.currentColor)
.cornerRadius(25)
} else {
Text("No sunlight data")
.foregroundColor(.black)
.background(Color.white)
.cornerRadius(10)
.padding()
}
}
.frame(width: 350, height: 200)
.background(themeSettings.currentColor)
.cornerRadius(30)
}
private func formattedDate(date: Date) -> String {
let formatter = DateFormatter()
formatter.dateFormat = "E"
return formatter.string(from: date)
}
}
This view correctly shows todays day with the correct data
struct SleepSupportBox: View {
@ObservedObject var viewModel = SleepViewModel()
@EnvironmentObject var themeSettings: ThemeSettings
var body: some View {
VStack {
if !viewModel.sleepData.isEmpty {
Chart(viewModel.sleepData) { data in
BarMark(
x: .value("Day", formattedDate(date: data.date)),
y: .value("Triggers/Reflections", Double(data.triggersCount + data.reflectionsCount))
)
.foregroundStyle(Color.green.opacity(0.5))
BarMark(
x: .value("Day", formattedDate(date: data.date)),
y: .value("Hours of Sleep", data.hours)
)
.foregroundStyle(Color.asblue)
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.padding(10)
.clipShape(RoundedRectangle(cornerRadius: 25))
.padding()
.background(themeSettings.currentColor)
.cornerRadius(25)
} else {
Text("No sleep data")
.foregroundColor(.black)
.background(Color.white)
.cornerRadius(10)
.padding()
}
}
.frame(width: 350, height: 200)
.background(themeSettings.currentColor)
.cornerRadius(30)
}
private func formattedDate(date: Date) -> String {
let formatter = DateFormatter()
formatter.dateFormat = "E"
return formatter.string(from: date)
}
}
Has anyone who’s installed the beta happened to test if you need to have the MacOS beta installed to have virtual desktop? Also I know the hype is about the widescreen but was there clips or notes I missed suggesting that we‘ll get a vertical display this time round As well.
Topic:
Spatial Computing
SubTopic:
General
what am I not understanding here.
in short the view loads text from the jsons descriptions and then should filter out the words. and return and display a list of most used words, debugging shows words being identified by the code but does not filter them out
private func loadWordCounts() {
DispatchQueue.global(qos: .background).async {
let fileManager = FileManager.default
guard let documentsDirectory = try? fileManager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) else { return }
let descriptions = loadDescriptions(fileManager: fileManager, documentsDirectory: documentsDirectory)
var counts = countWords(in: descriptions)
let tagsToRemove: Set<NLTag> = [
.verb,
.pronoun,
.determiner,
.particle,
.preposition,
.conjunction,
.interjection,
.classifier
]
for (word, _) in counts {
let tagger = NLTagger(tagSchemes: [.lexicalClass])
tagger.string = word
let (tag, _) = tagger.tag(at: word.startIndex, unit: .word, scheme: .lexicalClass)
if let unwrappedTag = tag, tagsToRemove.contains(unwrappedTag) {
counts[word] = 0
}
}
DispatchQueue.main.async {
self.wordCounts = counts
}
}
}