Skip to content

Commit bacfb44

Browse files
authored
Merge pull request #347 from aapis/feature/1.20/ui-customization
New feature: UI customization
2 parents 51f6b8d + 13132ca commit bacfb44

File tree

63 files changed

+1792
-623
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+1792
-623
lines changed

KWCore/Sources/Query/CoreDataJob.swift

+6-11
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,8 @@ public class CoreDataJob: ObservableObject {
208208

209209
return jobs.sorted {$0.project!.pid > $1.project!.pid}
210210
}
211-
211+
212+
// @TODO: this is wrong
212213
public func getDefault() -> Job? {
213214
if let job = byId(11.0) {
214215
return job
@@ -532,7 +533,7 @@ public class CoreDataJob: ObservableObject {
532533
/// - Parameter start: Optional(Date)
533534
/// - Parameter end: Optional(Date)
534535
/// - Returns: Array<Activity>
535-
public func getLinksFromJobs(start: Date?, end: Date?) async -> [Activity] {
536+
public func links(start: Date?, end: Date?) async -> [Activity] {
536537
let jobs = self.inRange(
537538
start: start,
538539
end: end
@@ -545,7 +546,7 @@ public class CoreDataJob: ObservableObject {
545546
activities.append(
546547
Activity(
547548
name: uri.absoluteString,
548-
page: .dashboard, //self.state.parent ??
549+
page: .jobs,
549550
type: .activity,
550551
job: job,
551552
url: uri.absoluteURL
@@ -650,42 +651,36 @@ public class CoreDataJob: ObservableObject {
650651
}
651652

652653
private func query(_ predicate: NSPredicate, sort: [NSSortDescriptor] = [NSSortDescriptor(keyPath: \Job.created?, ascending: true)]) -> [Job] {
653-
lock.lock()
654-
655654
var results: [Job] = []
656655
let fetch: NSFetchRequest<Job> = Job.fetchRequest()
657656
fetch.sortDescriptors = sort
658657
fetch.predicate = predicate
659658
fetch.returnsDistinctResults = true
659+
fetch.returnsObjectsAsFaults = false
660660

661661
do {
662662
results = try moc!.fetch(fetch)
663663
} catch {
664664
print("[error] CoreDataJob.query Unable to find records for predicate \(predicate.predicateFormat)")
665665
}
666666

667-
lock.unlock()
668-
669667
return results
670668
}
671669

672670
private func count(_ predicate: NSPredicate) -> Int {
673-
lock.lock()
674-
675671
var count = 0
676672
let fetch: NSFetchRequest<Job> = Job.fetchRequest()
677673
fetch.sortDescriptors = [NSSortDescriptor(keyPath: \Job.created?, ascending: true)]
678674
fetch.predicate = predicate
679675
fetch.returnsDistinctResults = true
676+
fetch.returnsObjectsAsFaults = false
680677

681678
do {
682679
count = try moc!.fetch(fetch).count
683680
} catch {
684681
print("[error] CoreDataJob.query Unable to find records for predicate \(predicate.predicateFormat)")
685682
}
686683

687-
lock.unlock()
688-
689684
return count
690685
}
691686
}

KWCore/Sources/Query/CoreDataNotes.swift

+8-11
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ public class CoreDataNotes {
264264
}
265265

266266
let predicate = NSPredicate(
267-
format: "((postedDate > %@ && postedDate <= %@) || (lastUpdate > %@ && lastUpdate <= %@))",
267+
format: "mJob != nil && ((postedDate > %@ && postedDate <= %@) || (lastUpdate > %@ && lastUpdate <= %@))",
268268
start! as CVarArg,
269269
end! as CVarArg,
270270
start! as CVarArg,
@@ -286,7 +286,7 @@ public class CoreDataNotes {
286286
)
287287
} else {
288288
predicate = NSPredicate(
289-
format: "alive == true && ANY mJob == %@",
289+
format: "alive == true && mJob == %@",
290290
job
291291
)
292292
}
@@ -337,9 +337,8 @@ public class CoreDataNotes {
337337
/// - Parameter start: Optional(Date)
338338
/// - Parameter end: Optional(Date)
339339
/// - Returns: Array<Activity>
340-
public func getLinksFromNotes(start: Date?, end: Date?) async -> [Activity] {
340+
public func links(start: Date?, end: Date?) async -> [Activity] {
341341
var activities: [Activity] = []
342-
343342
if start != nil && end != nil {
344343
let notes = CoreDataNotes(moc: self.moc!).inRange(
345344
start: start,
@@ -367,7 +366,7 @@ public class CoreDataNotes {
367366
Activity(
368367
name: label,
369368
help: sMatch,
370-
page: .dashboard, //self.state.parent ??
369+
page: .notes,
371370
type: .activity,
372371
job: note.mJob,
373372
source: version,
@@ -484,7 +483,7 @@ public class CoreDataNotes {
484483
/// - Parameter predicate: A predicate to modify the results
485484
/// - Returns: Array<Note>
486485
private func query(_ predicate: NSPredicate? = nil) -> [Note] {
487-
lock.lock()
486+
// lock.lock()
488487

489488
var results: [Note] = []
490489
let fetch: NSFetchRequest<Note> = Note.fetchRequest()
@@ -493,6 +492,7 @@ public class CoreDataNotes {
493492
if predicate != nil {
494493
fetch.predicate = predicate
495494
}
495+
fetch.returnsObjectsAsFaults = false
496496

497497
do {
498498
results = try moc!.fetch(fetch)
@@ -506,7 +506,7 @@ public class CoreDataNotes {
506506
print("[error] \(error)")
507507
}
508508

509-
lock.unlock()
509+
// lock.unlock()
510510

511511
return results
512512
}
@@ -515,22 +515,19 @@ public class CoreDataNotes {
515515
/// - Parameter predicate: A predicate to modify the results
516516
/// - Returns: Int
517517
private func count(_ predicate: NSPredicate) -> Int {
518-
lock.lock()
519-
520518
var count = 0
521519
let fetch: NSFetchRequest<Note> = Note.fetchRequest()
522520
fetch.sortDescriptors = [NSSortDescriptor(keyPath: \Note.postedDate?, ascending: true)]
523521
fetch.predicate = predicate
524522
fetch.returnsDistinctResults = true
523+
fetch.returnsObjectsAsFaults = false
525524

526525
do {
527526
count = try moc!.fetch(fetch).count
528527
} catch {
529528
print("[error] CoreDataNotes.query Unable to find records for predicate \(predicate.predicateFormat)")
530529
}
531530

532-
lock.unlock()
533-
534531
return count
535532
}
536533
}

KWCore/Sources/Query/CoreDataRecords.swift

+21-25
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,12 @@ public class CoreDataRecords: ObservableObject {
152152
/// - Parameter start: Optional(Date)
153153
/// - Parameter end: Optional(Date)
154154
/// - Returns: Array<Activity>
155-
public func getLinksFromRecords(start: Date?, end: Date?) async -> [Activity] {
155+
public func links(start: Date?, end: Date?) async -> [Activity] {
156156
var activities: [Activity] = []
157157
if let start = start {
158158
if let end = end {
159159
let linkLength = 40
160-
let records = CoreDataRecords(moc: self.moc!).inRange(
160+
let records = self.inRange(
161161
start: start,
162162
end: end
163163
)
@@ -174,17 +174,19 @@ public class CoreDataRecords: ObservableObject {
174174
label = label.prefix(linkLength) + "..."
175175
}
176176
if !activities.contains(where: {$0.name == label}) {
177-
activities.append(
178-
Activity(
179-
name: label,
180-
help: sMatch,
181-
page: .dashboard, //self.state.parent ??
182-
type: .activity,
183-
job: record.job,
184-
source: record,
185-
url: URL(string: sMatch) ?? nil
177+
if let job = record.job {
178+
activities.append(
179+
Activity(
180+
name: label,
181+
help: sMatch,
182+
page: .today,
183+
type: .activity,
184+
job: job,
185+
source: record,
186+
url: URL(string: sMatch) ?? nil
187+
)
186188
)
187-
)
189+
}
188190
}
189191
}
190192
}
@@ -640,7 +642,7 @@ public class CoreDataRecords: ObservableObject {
640642
/// - Returns: Array<LogRecord>
641643
public func inRange(start: Date, end: Date) -> [LogRecord] {
642644
let predicate = NSPredicate(
643-
format: "timestamp > %@ && timestamp <= %@ || lastUpdate > %@ && lastUpdate <= %@",
645+
format: "job != nil && (timestamp > %@ && timestamp <= %@ || lastUpdate > %@ && lastUpdate <= %@)",
644646
start as CVarArg,
645647
end as CVarArg,
646648
start as CVarArg,
@@ -766,44 +768,38 @@ public class CoreDataRecords: ObservableObject {
766768
}
767769

768770
private func query(_ predicate: NSPredicate, sort: [NSSortDescriptor] = [NSSortDescriptor(keyPath: \LogRecord.timestamp, ascending: false)]) -> [LogRecord] {
769-
lock.lock()
770-
771771
var results: [LogRecord] = []
772772
let fetch: NSFetchRequest<LogRecord> = LogRecord.fetchRequest()
773773
fetch.sortDescriptors = sort
774774
fetch.predicate = predicate
775775
fetch.returnsDistinctResults = true
776-
776+
fetch.returnsObjectsAsFaults = false
777+
777778
do {
778779
if let model = self.moc {
779780
results = try model.fetch(fetch)
780781
}
781782
} catch {
782783
print("[error] CoreDataRecords.query Unable to find records for predicate \(predicate.predicateFormat)")
783784
}
784-
785-
lock.unlock()
786-
785+
787786
return results
788787
}
789788

790789
private func count(_ predicate: NSPredicate) -> Int {
791-
lock.lock()
792-
793790
var count = 0
794791
let fetch: NSFetchRequest<LogRecord> = LogRecord.fetchRequest()
795792
fetch.sortDescriptors = [NSSortDescriptor(keyPath: \LogRecord.timestamp, ascending: false)]
796793
fetch.predicate = predicate
797794
fetch.returnsDistinctResults = true
798-
795+
fetch.returnsObjectsAsFaults = false
796+
799797
do {
800798
count = try moc!.fetch(fetch).count
801799
} catch {
802800
print("[error] CoreDataRecords.query Unable to find records for predicate \(predicate.predicateFormat)")
803801
}
804-
805-
lock.unlock()
806-
802+
807803
return count
808804
}
809805
}

0 commit comments

Comments
 (0)