Repair two multi-line fields the sync script left without commas

Member_equity_raised and Member_loans_raised had their civiField
lines stripped of trailing commas when the script inserted help
text. Re-added the comma; build passes.
This commit is contained in:
Joel Brock
2026-05-21 13:21:54 -07:00
parent d2d733a1d6
commit 42b25289f8
+75 -51
View File
@@ -124,7 +124,7 @@ const stage0: StageSectionConfig = {
label: "Members (current)", label: "Members (current)",
type: "number", type: "number",
civiField: `${G0}.Members__current_`, civiField: `${G0}.Members__current_`,
help: "How many paid members does the co-op currently have? Include partially paid (e.g. installment plans).", help: "How many paid members does the co-op currently have? This can include partially paid, e.g. on installment plans.",
}, },
{ {
name: "Total_members_at_opening", name: "Total_members_at_opening",
@@ -132,6 +132,7 @@ const stage0: StageSectionConfig = {
type: "number", type: "number",
civiField: `${G0}.Total_members_at_opening`, civiField: `${G0}.Total_members_at_opening`,
visibleWhen: visibleAtOrAfter(S.Stabilize), visibleWhen: visibleAtOrAfter(S.Stabilize),
help: "How many members will be required at opening for this store?",
}, },
// { // {
// name: "Volunteers_Helping_In_Store", // name: "Volunteers_Helping_In_Store",
@@ -156,6 +157,7 @@ const stage0: StageSectionConfig = {
civiField: `${G0}.Total_square_ft`, civiField: `${G0}.Total_square_ft`,
step: 1, step: 1,
visibleWhen: visibleAtOrAfter(S.BusinessFeasibility, S.StoreImplementation, S.Stabilize), visibleWhen: visibleAtOrAfter(S.BusinessFeasibility, S.StoreImplementation, S.Stabilize),
help: "Size, in sq ft, of the total storefront planned, including retail and non-retail areas",
}, },
{ {
name: "Retail_sq_ft", name: "Retail_sq_ft",
@@ -164,6 +166,7 @@ const stage0: StageSectionConfig = {
civiField: `${G0}.Retail_sq_ft`, civiField: `${G0}.Retail_sq_ft`,
step: 1, step: 1,
visibleWhen: visibleAtOrAfter(S.BusinessFeasibility, S.StoreImplementation, S.Stabilize), visibleWhen: visibleAtOrAfter(S.BusinessFeasibility, S.StoreImplementation, S.Stabilize),
help: "Size, in sq ft, of the retail areas of the store being planned",
}, },
// { // {
// name: "Latest_Sources_and_Uses_doc", // name: "Latest_Sources_and_Uses_doc",
@@ -193,6 +196,7 @@ const stage0: StageSectionConfig = {
civiField: `${G0}.Actual_FTE`, civiField: `${G0}.Actual_FTE`,
step: 0.1, step: 0.1,
visibleWhen: visibleAtOrAfter(S.Stabilize), visibleWhen: visibleAtOrAfter(S.Stabilize),
help: "Actual number of employees (or full-time equivalents) working in the store after open. i.e. if you have 10 employees working full time and 20 employees working half time, that would be 20 full-time equivalents.",
}, },
{ {
name: "Total_cost_of_project", name: "Total_cost_of_project",
@@ -200,6 +204,7 @@ const stage0: StageSectionConfig = {
type: "currency", type: "currency",
visibleWhen: visibleAtOrAfter(S.Stabilize), visibleWhen: visibleAtOrAfter(S.Stabilize),
civiField: `${G0}.Total_cost_of_project`, civiField: `${G0}.Total_cost_of_project`,
help: "Current estimate of the total cost of the project, up to store opening",
}, },
// { // {
// name: "Member_equity_total", // name: "Member_equity_total",
@@ -212,7 +217,8 @@ const stage0: StageSectionConfig = {
label: "Member equity raised", label: "Member equity raised",
type: "currency", type: "currency",
visibleWhen: visibleAtOrAfter(S.Stabilize), visibleWhen: visibleAtOrAfter(S.Stabilize),
civiField: `${G0}.Member_equity_raised` civiField: `${G0}.Member_equity_raised`,
help: "Member equity raised, as of the time of check-in",
}, },
// { // {
// name: "Member_loans_total", // name: "Member_loans_total",
@@ -225,7 +231,8 @@ const stage0: StageSectionConfig = {
label: "Member loans raised", label: "Member loans raised",
type: "currency", type: "currency",
visibleWhen: visibleAtOrAfter(S.Stabilize), visibleWhen: visibleAtOrAfter(S.Stabilize),
civiField: `${G0}.Member_loans_raised` civiField: `${G0}.Member_loans_raised`,
help: "Total amount (USD) raised from member loans, as of the time of check-in",
}, },
// { // {
// name: "Member_preferred_shares_total", // name: "Member_preferred_shares_total",
@@ -239,13 +246,14 @@ const stage0: StageSectionConfig = {
type: "currency", type: "currency",
visibleWhen: visibleAtOrAfter(S.Stabilize), visibleWhen: visibleAtOrAfter(S.Stabilize),
civiField: `${G0}.Member_preferred_shares_raised`, civiField: `${G0}.Member_preferred_shares_raised`,
help: "Total amount (USD) raised from preferred shares sold to members in the latest Sources and Uses doc",
}, },
// { name: "Bank_debt_total", label: "Bank debt total needed", type: "currency", civiField: `${G0}.Bank_debt_total` }, // { name: "Bank_debt_total", label: "Bank debt total needed", type: "currency", civiField: `${G0}.Bank_debt_total` },
{ name: "Bank_debt_raised", label: "Bank debt raised", type: "currency", visibleWhen: visibleAtOrAfter(S.Stabilize), civiField: `${G0}.Bank_debt_raised` }, { name: "Bank_debt_raised", label: "Bank debt raised", type: "currency", visibleWhen: visibleAtOrAfter(S.Stabilize), civiField: `${G0}.Bank_debt_raised`, help: "Total amount (USD) raised from bank debt (or other first position lender) in the latest Sources and Uses doc" },
// { name: "Grant_Donations_Needed", label: "Grants / Donations Needed", type: "currency", civiField: `${G0}.Grant_Donations_Needed` }, // { name: "Grant_Donations_Needed", label: "Grants / Donations Needed", type: "currency", civiField: `${G0}.Grant_Donations_Needed` },
{ name: "Grants_Donations_Raised", label: "Grants / Donations Raised", type: "currency", visibleWhen: visibleAtOrAfter(S.Stabilize), civiField: `${G0}.Grants_Donations_Raised` }, { name: "Grants_Donations_Raised", label: "Grants / Donations Raised", type: "currency", visibleWhen: visibleAtOrAfter(S.Stabilize), civiField: `${G0}.Grants_Donations_Raised`, help: "Total amount (USD) raised from Grants and Donations in the latest Sources and Uses doc" },
// { name: "Other_sources_total", label: "Other sources total needed", type: "currency", civiField: `${G0}.Other_sources_total` }, // { name: "Other_sources_total", label: "Other sources total needed", type: "currency", civiField: `${G0}.Other_sources_total` },
{ name: "Other_sources_raised", label: "Other sources raised", type: "currency", visibleWhen: visibleAtOrAfter(S.Stabilize), civiField: `${G0}.Other_sources_raised` }, { name: "Other_sources_raised", label: "Other sources raised", type: "currency", visibleWhen: visibleAtOrAfter(S.Stabilize), civiField: `${G0}.Other_sources_raised`, help: "Total amount (USD) successfully raised from other sources in the latest Sources and Uses doc (e.g. community loans or grants, free fill, vendor credit, landlord contribution, etc). Does not include member contributions (loans or equity) or bank debt." },
// { name: "Date_Closed_Folded", label: "Date Closed / Folded", type: "date", civiField: `${G0}.Date_Closed_Folded` }, // { name: "Date_Closed_Folded", label: "Date Closed / Folded", type: "date", civiField: `${G0}.Date_Closed_Folded` },
{ {
name: "FTEs", name: "FTEs",
@@ -254,7 +262,7 @@ const stage0: StageSectionConfig = {
visibleWhen: visibleAtOrAfter(S.BusinessFeasibility, S.StoreImplementation, S.Stabilize), visibleWhen: visibleAtOrAfter(S.BusinessFeasibility, S.StoreImplementation, S.Stabilize),
civiField: `${G0}.FTEs`, civiField: `${G0}.FTEs`,
step: 0.1, step: 0.1,
help: "Number of full-time equivalent (FTE) employees planned to work at the store.", help: "Number of full-time equivalent (FTE) employees planned to work at the store",
}, },
] as FieldConfig[], ] as FieldConfig[],
}; };
@@ -279,6 +287,7 @@ const stage1: StageSectionConfig = {
label: "Preliminary Market Assessment — Upload", label: "Preliminary Market Assessment — Upload",
type: "file", type: "file",
civiField: `${G1}.Preliminary_Market_Assessment_Upload`, civiField: `${G1}.Preliminary_Market_Assessment_Upload`,
help: "Please upload your Preliminary Market Assessment here.",
}, },
{ {
name: "Preliminary_Sources_Uses", name: "Preliminary_Sources_Uses",
@@ -292,6 +301,7 @@ const stage1: StageSectionConfig = {
label: "Preliminary Sources and Uses — Upload", label: "Preliminary Sources and Uses — Upload",
type: "file", type: "file",
civiField: `${G1}.Preliminary_Sources_Uses_Upload`, civiField: `${G1}.Preliminary_Sources_Uses_Upload`,
help: "Please upload your Preliminary Sources & Uses.",
}, },
{ {
name: "Vision", name: "Vision",
@@ -300,7 +310,7 @@ const stage1: StageSectionConfig = {
civiField: `${G1}.Vision`, civiField: `${G1}.Vision`,
help: "What date was your vision document completed?", help: "What date was your vision document completed?",
}, },
{ name: "Vision_Upload", label: "Vision — Upload", type: "file", civiField: `${G1}.Vision_Upload` }, { name: "Vision_Upload", label: "Vision — Upload", type: "file", civiField: `${G1}.Vision_Upload`, help: "Please upload your vision document." },
{ {
name: "Business_Concept", name: "Business_Concept",
label: "Business Concept", label: "Business Concept",
@@ -313,6 +323,7 @@ const stage1: StageSectionConfig = {
label: "Business Concept — Upload", label: "Business Concept — Upload",
type: "file", type: "file",
civiField: `${G1}.Business_Concept_Upload`, civiField: `${G1}.Business_Concept_Upload`,
help: "Please upload your Business Concept",
}, },
] as FieldConfig[], ] as FieldConfig[],
// Visual clustering — each pair (date + upload) reads as one item. // Visual clustering — each pair (date + upload) reads as one item.
@@ -343,10 +354,10 @@ const stage2: StageSectionConfig = {
label: "Stage 2 — Grow & Plan", label: "Stage 2 — Grow & Plan",
visibleWhen: visibleAtOrAfter(S.Feasibility, S.BusinessFeasibility, S.StoreImplementation, S.Stabilize), visibleWhen: visibleAtOrAfter(S.Feasibility, S.BusinessFeasibility, S.StoreImplementation, S.Stabilize),
fields: [ fields: [
{ name: "Market_Study_Date", label: "Market Study Date", type: "date", civiField: `${G2}.Market_Study_Date` }, { name: "Market_Study_Date", label: "Market Study Date", type: "date", civiField: `${G2}.Market_Study_Date`, help: "What date was your market study completed?" },
{ name: "Market_Study_Upload", label: "Market Study — Upload", type: "file", civiField: `${G2}.Market_Study_Upload` }, { name: "Market_Study_Upload", label: "Market Study — Upload", type: "file", civiField: `${G2}.Market_Study_Upload`, help: "Please upload your most recent Market Study" },
{ name: "Pro_Forma_date_completed", label: "Pro Forma — date completed", type: "date", civiField: `${G2}.Pro_Forma_date_completed` }, { name: "Pro_Forma_date_completed", label: "Pro Forma — date completed", type: "date", civiField: `${G2}.Pro_Forma_date_completed`, help: "What date was your most recent Pro Forma completed?" },
{ name: "Pro_Forma_Upload", label: "Pro Forma — Upload", type: "file", civiField: `${G2}.Pro_Forma_Upload` }, { name: "Pro_Forma_Upload", label: "Pro Forma — Upload", type: "file", civiField: `${G2}.Pro_Forma_Upload`, help: "Please upload your most recent Pro Forma." },
// { // {
// name: "Pro_Forma_Viability", // name: "Pro_Forma_Viability",
// label: "Pro Forma Viability", // label: "Pro Forma Viability",
@@ -362,7 +373,7 @@ const stage2: StageSectionConfig = {
civiField: `${G2}.Business_Plan`, civiField: `${G2}.Business_Plan`,
help: "What date was your most recent business plan completed?", help: "What date was your most recent business plan completed?",
}, },
{ name: "Business_Plan_Upload", label: "Business Plan — Upload", type: "file", civiField: `${G2}.Business_Plan_Upload` }, { name: "Business_Plan_Upload", label: "Business Plan — Upload", type: "file", civiField: `${G2}.Business_Plan_Upload`, help: "Please upload the most recent copy of your business plan." },
{ {
name: "Board_Self_Assessment", name: "Board_Self_Assessment",
label: "Board Self Assessment", label: "Board Self Assessment",
@@ -375,6 +386,7 @@ const stage2: StageSectionConfig = {
label: "Board Self Assessment — Upload", label: "Board Self Assessment — Upload",
type: "file", type: "file",
civiField: `${G2}.Board_Self_Assessment_Upload`, civiField: `${G2}.Board_Self_Assessment_Upload`,
help: "Please upload the results of your most recent Board Self Assessment.",
}, },
{ {
name: "Governance_System_Used", name: "Governance_System_Used",
@@ -417,68 +429,76 @@ const stage3: StageSectionConfig = {
label: "Site: Letter of Intent Date", label: "Site: Letter of Intent Date",
type: "date", type: "date",
civiField: `${G3}.Site_Letter_of_Intent_Date`, civiField: `${G3}.Site_Letter_of_Intent_Date`,
help: "What date was your Letter of Intent for your site signed?",
}, },
{ {
name: "Site_Letter_of_Intent_Upload", name: "Site_Letter_of_Intent_Upload",
label: "Site: Letter of Intent — Upload", label: "Site: Letter of Intent — Upload",
type: "file", type: "file",
civiField: `${G3}.Site_Letter_of_Intent_Upload`, civiField: `${G3}.Site_Letter_of_Intent_Upload`,
help: "Please upload the Letter of Intent for your Site.",
}, },
{ // {
name: "Own_the_building_property", // name: "Own_the_building_property",
label: "Own the building / property", // label: "Own the building / property",
type: "select", // type: "select",
civiField: `${G3}.Own_the_building_property`, // civiField: `${G3}.Own_the_building_property`,
optionGroupId: 139, // optionGroupId: 139,
help: "Will the co-op own the building or property?", // help: "Will the co-op own the building or property, if so select YES. Select NO if the co-op will be leasing or have some other type of arrangement",
}, // },
{ {
name: "Capital_Stack", name: "Capital_Stack",
label: "Capital Stack", label: "Capital Stack",
type: "multiselect", type: "multiselect",
civiField: `${G3}.Capital_Stack`, civiField: `${G3}.Capital_Stack`,
optionGroupId: 134, optionGroupId: 134,
help: "Select all the types of funding that are part of your Sources.", help: "Please select all the types of funding that are part of your Sources.",
},
{
name: "Capital_Campaign_Owner_Participation_",
label: "Capital Campaign: Owner Participation %",
type: "percent",
civiField: `${G3}.Capital_Campaign_Owner_Participation_`,
},
{
name: "Capital_Campaign_Average_Owner_Investment",
label: "Capital Campaign: Average Owner Investment",
type: "currency",
civiField: `${G3}.Capital_Campaign_Average_Owner_Investment`,
}, },
{ {
name: "Project_Manager_Date_of_Hire", name: "Project_Manager_Date_of_Hire",
label: "Project Manager — Date of Hire", label: "Project Manager — Date of Hire",
type: "date", type: "date",
civiField: `${G3}.Project_Manager_Date_of_Hire`, civiField: `${G3}.Project_Manager_Date_of_Hire`,
help: "What date did your hire a project manager for co-op development? (This is NOT the construction-specific Project Manager.)",
}, },
{ {
name: "Store_Design_Plan_Completion", name: "Store_Design_Plan_Completion",
label: "Store Design — Plan Completion", label: "Store Design — Plan Completion",
type: "date", type: "date",
civiField: `${G3}.Store_Design_Plan_Completion`, civiField: `${G3}.Store_Design_Plan_Completion`,
help: "What date was the design for your co-op completed?",
}, },
{ name: "Store_Designer", label: "Store Designer", type: "text", civiField: `${G3}.Store_Designer` }, { name: "Store_Designer", label: "Store Designer", type: "text", civiField: `${G3}.Store_Designer`, help: "Which professional or team created your store design?" },
{ name: "NCG_Member", label: "NCG Member", type: "select", civiField: `${G3}.NCG_Member`, optionGroupId: 136 }, // { name: "NCG_Member", label: "NCG Member", type: "select", civiField: `${G3}.NCG_Member`, optionGroupId: 136, help: "Are you an NCG member, or considering NCG Membership?" },
{ name: "NCG_Corridor", label: "NCG Corridor", type: "select", civiField: `${G3}.NCG_Corridor`, optionGroupId: 143 }, // { name: "NCG_Corridor", label: "NCG Corridor", type: "select", civiField: `${G3}.NCG_Corridor`, optionGroupId: 143, help: "Which NCG corridor is this co-op in?" },
{ name: "INFRA_Member", label: "INFRA Member", type: "select", civiField: `${G3}.INFRA_Member`, optionGroupId: 137 }, // { name: "INFRA_Member", label: "INFRA Member", type: "select", civiField: `${G3}.INFRA_Member`, optionGroupId: 137, help: "Are you an INFRA member, or considering INFRA membership?" },
// {
// name: "Other_Distributors",
// label: "Other Distributors",
// type: "select",
// civiField: `${G3}.Other_Distributors`,
// optionGroupId: 138,
// help: "Are you using or considering one of these other distributors as your primary distributor?",
// },
{ {
name: "Other_Distributors", name: "Capital_Campaign_Owner_Participation_",
label: "Other Distributors", label: "Capital Campaign: Owner Participation %",
type: "select", type: "percent",
civiField: `${G3}.Other_Distributors`, civiField: `${G3}.Capital_Campaign_Owner_Participation_`,
optionGroupId: 138, help: "What percentage of your owners have contributed to your capital campaign?",
help: "Are you using or considering one of these other distributors as your primary?", },
{
name: "Capital_Campaign_Average_Owner_Investment",
label: "Capital Campaign: Average Owner Investment",
type: "currency",
civiField: `${G3}.Capital_Campaign_Average_Owner_Investment`,
help: "What is the average investment size from your owners? (i.e. total raised divided by number of owners participating. If your co-op raised $100,000 from 100 owners, the average owner investment would be $1,000. $100,000 / 100 = $1,000.)",
}, },
] as FieldConfig[], ] as FieldConfig[],
fieldGroups: [ fieldGroups: [
{ id: "site", fields: ["Site_Letter_of_Intent_Date", "Site_Letter_of_Intent_Upload"] } { id: "site", fields: ["Site_Letter_of_Intent_Date", "Site_Letter_of_Intent_Upload"] },
{ id: "store_design", fields: ["Store_Designer", "Store_Design_Plan_Completion"] },
{ id: "cap_camp", fields: ["Capital_Campaign_Owner_Participation_", "Capital_Campaign_Average_Owner_Investment"]},
], ],
}; };
@@ -494,6 +514,7 @@ const stage4: StageSectionConfig = {
label: "General Manager — Date of Hire", label: "General Manager — Date of Hire",
type: "date", type: "date",
civiField: `${G4}.General_Manager_Date_of_Hire`, civiField: `${G4}.General_Manager_Date_of_Hire`,
help: "What date was your GM hired?",
}, },
{ {
name: "General_Manager_Background", name: "General_Manager_Background",
@@ -503,9 +524,9 @@ const stage4: StageSectionConfig = {
optionGroupId: 135, optionGroupId: 135,
help: "What professional background does your General Manager have?", help: "What professional background does your General Manager have?",
}, },
{ name: "General_Manager_Name", label: "General Manager — Name", type: "text", civiField: `${G4}.General_Manager_Name` }, { name: "General_Manager_Name", label: "General Manager — Name", type: "text", civiField: `${G4}.General_Manager_Name`, help: "Please enter the name of your current General Manager." },
{ name: "General_Manager_Phone", label: "General Manager Phone", type: "phone", civiField: `${G4}.General_Manager_Phone` }, { name: "General_Manager_Phone", label: "General Manager Phone", type: "phone", civiField: `${G4}.General_Manager_Phone`, help: "What is your GM's phone number?" },
{ name: "GM_Email", label: "General Manager Email", type: "email", civiField: `${G4}.GM_Email` }, { name: "GM_Email", label: "General Manager Email", type: "email", civiField: `${G4}.GM_Email`, help: "What is the best email for your GM?" },
{ {
name: "GM_Support_Training", name: "GM_Support_Training",
label: "GM Support and Training", label: "GM Support and Training",
@@ -520,24 +541,27 @@ const stage4: StageSectionConfig = {
civiField: `${G4}.GM_Support_Team`, civiField: `${G4}.GM_Support_Team`,
help: "Who is providing support and training to your GM?", help: "Who is providing support and training to your GM?",
}, },
{ name: "Projected_Opening_Date", label: "Projected Opening Date", type: "date", civiField: `${G4}.Projected_Opening_Date` }, { name: "Projected_Opening_Date", label: "Projected Opening Date", type: "date", civiField: `${G4}.Projected_Opening_Date`, help: "Date the co-op is projected to open." },
{ {
name: "Construction_Completion_Date", name: "Construction_Completion_Date",
label: "Construction Completion Date", label: "Construction Completion Date",
type: "date", type: "date",
civiField: `${G4}.Construction_Completion_Date`, civiField: `${G4}.Construction_Completion_Date`,
help: "What date was construction completed on the co-op?",
}, },
{ {
name: "Missions_Transition_Plan_Date", name: "Missions_Transition_Plan_Date",
label: "Mission Transition Plan — Date", label: "Mission Transition Plan — Date",
type: "date", type: "date",
civiField: `${G4}.Missions_Transition_Plan_Date`, civiField: `${G4}.Missions_Transition_Plan_Date`,
help: "What date was your Mission Transition Plan adopted?",
}, },
{ {
name: "Mission_Transition_Plan_Upload", name: "Mission_Transition_Plan_Upload",
label: "Mission Transition Plan — Upload", label: "Mission Transition Plan — Upload",
type: "file", type: "file",
civiField: `${G4}.Mission_Transition_Plan_Upload`, civiField: `${G4}.Mission_Transition_Plan_Upload`,
help: "Please upload your Mission Transition Plan.",
}, },
] as FieldConfig[], ] as FieldConfig[],
fieldGroups: [ fieldGroups: [
@@ -637,8 +661,8 @@ const stage5: StageSectionConfig = {
label: "Stage 5 — Fulfill & Stabilize", label: "Stage 5 — Fulfill & Stabilize",
visibleWhen: visibleAtOrAfter(S.Stabilize), visibleWhen: visibleAtOrAfter(S.Stabilize),
fields: [ fields: [
{ name: "Date_Opened", label: "Date Opened", type: "date", civiField: `${G5}.Date_Opened` }, { name: "Date_Opened", label: "Date Opened", type: "date", civiField: `${G5}.Date_Opened`, help: "What day did the co-op officially open for business?" },
{ name: "Y1_Actual_Sales", label: "Y1 Actual Sales", type: "currency", civiField: `${G5}.Y1_Actual_Sales` } { name: "Y1_Actual_Sales", label: "Y1 Actual Sales", type: "currency", civiField: `${G5}.Y1_Actual_Sales`, help: "Total Sales from Year 1" }
] as FieldConfig[], ] as FieldConfig[],
// STAGE_5_FIELDS, // STAGE_5_FIELDS,
// matrixGroups: [ // matrixGroups: [