Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions formulus/scripts/syncNativeVersion.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,13 +93,13 @@ function syncNativeVersions() {
console.log('✓ Native version sync complete');
} catch (error) {
console.error('✗ Failed to sync native versions:', error);
// eslint-disable-next-line no-undef

process.exit(1);
}
}

// Run if executed directly
// eslint-disable-next-line no-undef

if (import.meta.url === `file://${process.argv[1]}`) {
syncNativeVersions();
}
Expand Down
8 changes: 2 additions & 6 deletions formulus/src/database/repositories/WatermelonDBRepo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -206,13 +206,9 @@ export class WatermelonDBRepo implements LocalRepoInterface {
return [];
}

// First, let's check all observations in the database for debugging
const allObservations = await this.observationsCollection.query().fetch();
console.log(`Total observations in database: ${allObservations.length}`);

// Query for observations with form_type matching the requested form type
// Query for observations with form_type matching and exclude soft-deleted
const observations = await this.observationsCollection
.query(Q.where('form_type', formId))
.query(Q.where('form_type', formId), Q.where('deleted', false))
.fetch();

return observations.map(observation =>
Expand Down
2 changes: 1 addition & 1 deletion formulus/src/hooks/useObservations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export const useObservations = (): UseObservationsResult => {
}, [loadObservations]);

const filteredAndSorted = useMemo(() => {
let filtered = [...observations];
let filtered = observations.filter(obs => !obs.deleted);

if (searchQuery.trim()) {
const query = searchQuery.toLowerCase();
Expand Down
4 changes: 4 additions & 0 deletions formulus/src/services/FormService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,10 @@ export class FormService {
options.formType,
);

if (!options.includeDeleted) {
observations = observations.filter(o => !o.deleted);
}

if (options.whereClause && options.whereClause.trim()) {
observations = this.filterObservationsByWhereClause(
observations,
Expand Down
6 changes: 3 additions & 3 deletions formulus/src/webview/FormulusInterfaceDefinition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -289,8 +289,8 @@ export interface FormulusInterface {
/**
* Get observations for a specific form
* @param {string} formType - The identifier of the formtype
* @param {boolean} [isDraft=false] - Whether to include draft observations
* @param {boolean} [includeDeleted=false] - Whether to include deleted observations
* @param {boolean} [isDraft=false] - Deprecated: drafts are handled only in formplayer; ignored in Formulus
* @param {boolean} [includeDeleted=false] - Whether to include deleted observations (default false = exclude)
* @returns {Promise<FormObservation[]>} Array of form observations
*/
getObservations(
Expand All @@ -305,7 +305,7 @@ export interface FormulusInterface {
* Age filtering via age_from_dob(data.dob) is handled client-side in formplayer.
* @param options - Query options
* @param options.formType - Form type to query
* @param options.isDraft - Include drafts (default false)
* @param options.isDraft - Deprecated: drafts handled in formplayer; ignored
* @param options.includeDeleted - Include deleted (default false)
* @param options.whereClause - SQL-like WHERE clause for filtering (e.g. "data.sex = 'male'")
* @returns {Promise<FormObservation[]>} Array of filtered observations
Expand Down
7 changes: 5 additions & 2 deletions formulus/src/webview/FormulusMessageHandlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1056,8 +1056,11 @@ export function createFormulusMessageHandlers(): FormulusMessageHandlers {
}

const service = await FormService.getInstance();
//TODO: Handle deleted etc.
return await service.getObservationsByFormType(formTypeString);
// Use getObservationsByQuery so includeDeleted is respected (default false = exclude deleted)
return await service.getObservationsByQuery({
formType: formTypeString,
includeDeleted: includeDeleted ?? false,
});
},
onGetObservationsByQuery: async (payload: {
options?: {
Expand Down
Loading