Skip to content

Commit

Permalink
Move new contact creation form to first page
Browse files Browse the repository at this point in the history
Closes #22
  • Loading branch information
alxndrsn committed Oct 11, 2017
1 parent 3341c7b commit 8ccf29f
Show file tree
Hide file tree
Showing 4 changed files with 172 additions and 153 deletions.
19 changes: 19 additions & 0 deletions src/fn/convert-contact-forms.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,25 @@ module.exports = (projectDir, couchUrl, extras) => {
}
}

if(xml.includes('ref="/data/contact"')) {
const groupRegex = name => new RegExp(`(\\s*)<group(\\s.*)?\\sref="${name}"(\\s.*)?>[^]*?</group>`);
let matchedBlock;

xml = xml.replace(groupRegex('/data/contact'), match => {
matchedBlock = match;
return '';
});

if(matchedBlock) {
const stripTrailingGroup = s => s.replace(/[\r\n\s]*<\/group>$/, '');
xml = xml.replace(groupRegex('/data/init'), match => {
return stripTrailingGroup(match) +
stripTrailingGroup(matchedBlock).replace(/\n/g, '\n ') +
'\n </group>\n </group>';
});
}
}

return xml;
},
});
Expand Down
102 changes: 51 additions & 51 deletions test/data/generate-contact-forms/clinic-create.expected.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1281,57 +1281,57 @@
<value>clinic</value>
</item>
</select1>
</group>
<group appearance="field-list" ref="/data/contact">
<label ref="jr:itext('/data/contact:label')"/>
<input ref="/data/contact/name">
<label ref="jr:itext('/data/contact/name:label')"/>
</input>
<input ref="/data/contact/phone">
<label ref="jr:itext('/data/contact/phone:label')"/>
</input>
<input ref="/data/contact/phone_alternate">
<label ref="jr:itext('/data/contact/phone_alternate:label')"/>
</input>
<select1 ref="/data/contact/role">
<label ref="jr:itext('/data/contact/role:label')"/>
<item>
<label ref="jr:itext('/data/contact/role/chw:label')"/>
<value>chw</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/chw_supervisor:label')"/>
<value>chw_supervisor</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/nurse:label')"/>
<value>nurse</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/manager:label')"/>
<value>manager</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/patient:label')"/>
<value>patient</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/other:label')"/>
<value>other</value>
</item>
</select1>
<input ref="/data/contact/role_other">
<label ref="jr:itext('/data/contact/role_other:label')"/>
<hint ref="jr:itext('/data/contact/role_other:hint')"/>
</input>
<input ref="/data/contact/external_id">
<label ref="jr:itext('/data/contact/external_id:label')"/>
</input>
<input appearance="multiline" ref="/data/contact/notes">
<label ref="jr:itext('/data/contact/notes:label')"/>
</input>
<group appearance="hidden" ref="/data/contact/meta">
<label ref="jr:itext('/data/contact/meta:label')"/>
<group appearance="field-list" ref="/data/contact">
<label ref="jr:itext('/data/contact:label')"/>
<input ref="/data/contact/name">
<label ref="jr:itext('/data/contact/name:label')"/>
</input>
<input ref="/data/contact/phone">
<label ref="jr:itext('/data/contact/phone:label')"/>
</input>
<input ref="/data/contact/phone_alternate">
<label ref="jr:itext('/data/contact/phone_alternate:label')"/>
</input>
<select1 ref="/data/contact/role">
<label ref="jr:itext('/data/contact/role:label')"/>
<item>
<label ref="jr:itext('/data/contact/role/chw:label')"/>
<value>chw</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/chw_supervisor:label')"/>
<value>chw_supervisor</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/nurse:label')"/>
<value>nurse</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/manager:label')"/>
<value>manager</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/patient:label')"/>
<value>patient</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/other:label')"/>
<value>other</value>
</item>
</select1>
<input ref="/data/contact/role_other">
<label ref="jr:itext('/data/contact/role_other:label')"/>
<hint ref="jr:itext('/data/contact/role_other:hint')"/>
</input>
<input ref="/data/contact/external_id">
<label ref="jr:itext('/data/contact/external_id:label')"/>
</input>
<input appearance="multiline" ref="/data/contact/notes">
<label ref="jr:itext('/data/contact/notes:label')"/>
</input>
<group appearance="hidden" ref="/data/contact/meta">
<label ref="jr:itext('/data/contact/meta:label')"/>
</group>
</group>
</group>
<group appearance="field-list" ref="/data/clinic">
Expand Down
102 changes: 51 additions & 51 deletions test/data/generate-contact-forms/district_hospital-create.expected.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1281,57 +1281,57 @@
<value>clinic</value>
</item>
</select1>
</group>
<group appearance="field-list" ref="/data/contact">
<label ref="jr:itext('/data/contact:label')"/>
<input ref="/data/contact/name">
<label ref="jr:itext('/data/contact/name:label')"/>
</input>
<input ref="/data/contact/phone">
<label ref="jr:itext('/data/contact/phone:label')"/>
</input>
<input ref="/data/contact/phone_alternate">
<label ref="jr:itext('/data/contact/phone_alternate:label')"/>
</input>
<select1 ref="/data/contact/role">
<label ref="jr:itext('/data/contact/role:label')"/>
<item>
<label ref="jr:itext('/data/contact/role/chw:label')"/>
<value>chw</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/chw_supervisor:label')"/>
<value>chw_supervisor</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/nurse:label')"/>
<value>nurse</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/manager:label')"/>
<value>manager</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/patient:label')"/>
<value>patient</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/other:label')"/>
<value>other</value>
</item>
</select1>
<input ref="/data/contact/role_other">
<label ref="jr:itext('/data/contact/role_other:label')"/>
<hint ref="jr:itext('/data/contact/role_other:hint')"/>
</input>
<input ref="/data/contact/external_id">
<label ref="jr:itext('/data/contact/external_id:label')"/>
</input>
<input appearance="multiline" ref="/data/contact/notes">
<label ref="jr:itext('/data/contact/notes:label')"/>
</input>
<group appearance="hidden" ref="/data/contact/meta">
<label ref="jr:itext('/data/contact/meta:label')"/>
<group appearance="field-list" ref="/data/contact">
<label ref="jr:itext('/data/contact:label')"/>
<input ref="/data/contact/name">
<label ref="jr:itext('/data/contact/name:label')"/>
</input>
<input ref="/data/contact/phone">
<label ref="jr:itext('/data/contact/phone:label')"/>
</input>
<input ref="/data/contact/phone_alternate">
<label ref="jr:itext('/data/contact/phone_alternate:label')"/>
</input>
<select1 ref="/data/contact/role">
<label ref="jr:itext('/data/contact/role:label')"/>
<item>
<label ref="jr:itext('/data/contact/role/chw:label')"/>
<value>chw</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/chw_supervisor:label')"/>
<value>chw_supervisor</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/nurse:label')"/>
<value>nurse</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/manager:label')"/>
<value>manager</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/patient:label')"/>
<value>patient</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/other:label')"/>
<value>other</value>
</item>
</select1>
<input ref="/data/contact/role_other">
<label ref="jr:itext('/data/contact/role_other:label')"/>
<hint ref="jr:itext('/data/contact/role_other:hint')"/>
</input>
<input ref="/data/contact/external_id">
<label ref="jr:itext('/data/contact/external_id:label')"/>
</input>
<input appearance="multiline" ref="/data/contact/notes">
<label ref="jr:itext('/data/contact/notes:label')"/>
</input>
<group appearance="hidden" ref="/data/contact/meta">
<label ref="jr:itext('/data/contact/meta:label')"/>
</group>
</group>
</group>
<group appearance="field-list" ref="/data/district_hospital">
Expand Down
102 changes: 51 additions & 51 deletions test/data/generate-contact-forms/health_center-create.expected.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1281,57 +1281,57 @@
<value>clinic</value>
</item>
</select1>
</group>
<group appearance="field-list" ref="/data/contact">
<label ref="jr:itext('/data/contact:label')"/>
<input ref="/data/contact/name">
<label ref="jr:itext('/data/contact/name:label')"/>
</input>
<input ref="/data/contact/phone">
<label ref="jr:itext('/data/contact/phone:label')"/>
</input>
<input ref="/data/contact/phone_alternate">
<label ref="jr:itext('/data/contact/phone_alternate:label')"/>
</input>
<select1 ref="/data/contact/role">
<label ref="jr:itext('/data/contact/role:label')"/>
<item>
<label ref="jr:itext('/data/contact/role/chw:label')"/>
<value>chw</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/chw_supervisor:label')"/>
<value>chw_supervisor</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/nurse:label')"/>
<value>nurse</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/manager:label')"/>
<value>manager</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/patient:label')"/>
<value>patient</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/other:label')"/>
<value>other</value>
</item>
</select1>
<input ref="/data/contact/role_other">
<label ref="jr:itext('/data/contact/role_other:label')"/>
<hint ref="jr:itext('/data/contact/role_other:hint')"/>
</input>
<input ref="/data/contact/external_id">
<label ref="jr:itext('/data/contact/external_id:label')"/>
</input>
<input appearance="multiline" ref="/data/contact/notes">
<label ref="jr:itext('/data/contact/notes:label')"/>
</input>
<group appearance="hidden" ref="/data/contact/meta">
<label ref="jr:itext('/data/contact/meta:label')"/>
<group appearance="field-list" ref="/data/contact">
<label ref="jr:itext('/data/contact:label')"/>
<input ref="/data/contact/name">
<label ref="jr:itext('/data/contact/name:label')"/>
</input>
<input ref="/data/contact/phone">
<label ref="jr:itext('/data/contact/phone:label')"/>
</input>
<input ref="/data/contact/phone_alternate">
<label ref="jr:itext('/data/contact/phone_alternate:label')"/>
</input>
<select1 ref="/data/contact/role">
<label ref="jr:itext('/data/contact/role:label')"/>
<item>
<label ref="jr:itext('/data/contact/role/chw:label')"/>
<value>chw</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/chw_supervisor:label')"/>
<value>chw_supervisor</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/nurse:label')"/>
<value>nurse</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/manager:label')"/>
<value>manager</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/patient:label')"/>
<value>patient</value>
</item>
<item>
<label ref="jr:itext('/data/contact/role/other:label')"/>
<value>other</value>
</item>
</select1>
<input ref="/data/contact/role_other">
<label ref="jr:itext('/data/contact/role_other:label')"/>
<hint ref="jr:itext('/data/contact/role_other:hint')"/>
</input>
<input ref="/data/contact/external_id">
<label ref="jr:itext('/data/contact/external_id:label')"/>
</input>
<input appearance="multiline" ref="/data/contact/notes">
<label ref="jr:itext('/data/contact/notes:label')"/>
</input>
<group appearance="hidden" ref="/data/contact/meta">
<label ref="jr:itext('/data/contact/meta:label')"/>
</group>
</group>
</group>
<group appearance="field-list" ref="/data/health_center">
Expand Down

0 comments on commit 8ccf29f

Please sign in to comment.