跳到主要内容

Setting default values

Automatically populate form fields based on user authentication data to reduce manual input and speed up form completion in personal dashboards, internal portals, and surveys:

let doc = Api.GetDocument();

// Simulated user authentication data
let authenticatedUser = {
id: "emp_12345",
full_name: "Emily Johnson",
email: "emily.johnson@example.com",
phone: "+1-555-0198",
department: "Marketing",
position: "Senior Marketing Manager",
employee_id: "EMP-2024-0198",
start_date: "2022-03-15",
manager: "Sarah Wilson",
office_location: "New York",
work_schedule: "Full-time",
has_company_car: true,
emergency_contact: "Michael Johnson",
emergency_phone: "+1-555-0199",
preferred_language: "English",
newsletter_subscription: true,
training_completed: false
};

// Additional user preferences and settings
let userPreferences = {
notification_email: true,
sms_alerts: false,
work_from_home: true,
parking_space: "A-15",
dietary_restrictions: "Vegetarian",
t_shirt_size: "M"
};

// Create employee profile update form
function createEmployeeProfileForm() {
let paragraph = doc.GetElement(0);
paragraph.AddText("Employee Profile Update Form");
paragraph.SetFontSize(18 * 2);
paragraph.SetBold(true);
paragraph.SetJc("center");

// Add auto-fill notice
paragraph = Api.CreateParagraph();
paragraph.AddText("Pre-filled with your current information - modify as needed");
paragraph.SetFontSize(12 * 2);
paragraph.SetJc("center");
paragraph.SetColor(128, 128, 128);
doc.Push(paragraph);

// Add spacing
paragraph = Api.CreateParagraph();
paragraph.AddText("");
doc.Push(paragraph);

// Personal Information Section
paragraph = Api.CreateParagraph();
paragraph.AddText("Personal Information");
paragraph.SetFontSize(14 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

// Full Name
paragraph = Api.CreateParagraph();
paragraph.AddText("Full Name: ");
paragraph.SetFontSize(12 * 2);
let nameForm = Api.CreateTextForm({
key: "full_name",
required: true,
placeholder: "Enter your full name",
maxCharacters: 100,
multiLine: false,
autoFit: true,
});
paragraph.AddElement(nameForm);
doc.Push(paragraph);

// Email
paragraph = Api.CreateParagraph();
paragraph.AddText("Email: ");
paragraph.SetFontSize(12 * 2);
let emailForm = Api.CreateTextForm({
key: "email",
required: true,
placeholder: "Enter your email address",
maxCharacters: 80,
multiLine: false,
autoFit: true,
});
paragraph.AddElement(emailForm);
doc.Push(paragraph);

// Phone
paragraph = Api.CreateParagraph();
paragraph.AddText("Phone: ");
paragraph.SetFontSize(12 * 2);
let phoneForm = Api.CreateTextForm({
key: "phone",
required: false,
placeholder: "Enter your phone number",
maxCharacters: 20,
multiLine: false,
autoFit: true,
});
paragraph.AddElement(phoneForm);
doc.Push(paragraph);

// Work Information Section
paragraph = Api.CreateParagraph();
paragraph.AddText("Work Information");
paragraph.SetFontSize(14 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

// Department
paragraph = Api.CreateParagraph();
paragraph.AddText("Department: ");
paragraph.SetFontSize(12 * 2);
let deptForm = Api.CreateComboBoxForm({
key: "department",
required: true,
placeholder: "Select your department",
editable: false,
autoFit: true,
items: ["Marketing", "Sales", "Engineering", "HR", "Finance", "Operations", "Legal"]
});
paragraph.AddElement(deptForm);
doc.Push(paragraph);

// Position
paragraph = Api.CreateParagraph();
paragraph.AddText("Position: ");
paragraph.SetFontSize(12 * 2);
let positionForm = Api.CreateTextForm({
key: "position",
required: true,
placeholder: "Enter your job title",
maxCharacters: 80,
multiLine: false,
autoFit: true,
});
paragraph.AddElement(positionForm);
doc.Push(paragraph);

// Employee ID
paragraph = Api.CreateParagraph();
paragraph.AddText("Employee ID: ");
paragraph.SetFontSize(12 * 2);
let empIdForm = Api.CreateTextForm({
key: "employee_id",
required: false,
placeholder: "Employee ID",
maxCharacters: 20,
multiLine: false,
autoFit: true,
});
paragraph.AddElement(empIdForm);
doc.Push(paragraph);

// Manager
paragraph = Api.CreateParagraph();
paragraph.AddText("Direct Manager: ");
paragraph.SetFontSize(12 * 2);
let managerForm = Api.CreateTextForm({
key: "manager",
required: false,
placeholder: "Manager name",
maxCharacters: 100,
multiLine: false,
autoFit: true,
});
paragraph.AddElement(managerForm);
doc.Push(paragraph);

// Office Location
paragraph = Api.CreateParagraph();
paragraph.AddText("Office Location: ");
paragraph.SetFontSize(12 * 2);
let locationForm = Api.CreateComboBoxForm({
key: "office_location",
required: false,
placeholder: "Select office location",
editable: false,
autoFit: true,
items: ["New York", "Los Angeles", "Chicago", "Boston", "Austin", "Seattle", "Remote"]
});
paragraph.AddElement(locationForm);
doc.Push(paragraph);

// Work Schedule
paragraph = Api.CreateParagraph();
paragraph.AddText("Work Schedule: ");
paragraph.SetFontSize(12 * 2);
let scheduleForm = Api.CreateComboBoxForm({
key: "work_schedule",
required: false,
placeholder: "Select work schedule",
editable: false,
autoFit: true,
items: ["Full-time", "Part-time", "Contract", "Intern"]
});
paragraph.AddElement(scheduleForm);
doc.Push(paragraph);

// Preferences Section
paragraph = Api.CreateParagraph();
paragraph.AddText("Preferences & Settings");
paragraph.SetFontSize(14 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

// Company Car
paragraph = Api.CreateParagraph();
let carCheckbox = Api.CreateCheckBoxForm({
key: "has_company_car",
required: false,
tip: "Company car assigned",
checked: false
});
paragraph.AddElement(carCheckbox);
paragraph.AddText(" Company car assigned");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

// Work from Home
paragraph = Api.CreateParagraph();
let wfhCheckbox = Api.CreateCheckBoxForm({
key: "work_from_home",
required: false,
tip: "Work from home option",
checked: false
});
paragraph.AddElement(wfhCheckbox);
paragraph.AddText(" Work from home enabled");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

// Newsletter Subscription
paragraph = Api.CreateParagraph();
let newsletterCheckbox = Api.CreateCheckBoxForm({
key: "newsletter_subscription",
required: false,
tip: "Subscribe to company newsletter",
checked: false
});
paragraph.AddElement(newsletterCheckbox);
paragraph.AddText(" Subscribe to company newsletter");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

// Emergency Contact Section
paragraph = Api.CreateParagraph();
paragraph.AddText("Emergency Contact");
paragraph.SetFontSize(14 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

// Emergency Contact Name
paragraph = Api.CreateParagraph();
paragraph.AddText("Contact Name: ");
paragraph.SetFontSize(12 * 2);
let emergencyContactForm = Api.CreateTextForm({
key: "emergency_contact",
required: false,
placeholder: "Emergency contact name",
maxCharacters: 100,
multiLine: false,
autoFit: true,
});
paragraph.AddElement(emergencyContactForm);
doc.Push(paragraph);

// Emergency Phone
paragraph = Api.CreateParagraph();
paragraph.AddText("Contact Phone: ");
paragraph.SetFontSize(12 * 2);
let emergencyPhoneForm = Api.CreateTextForm({
key: "emergency_phone",
required: false,
placeholder: "Emergency contact phone",
maxCharacters: 20,
multiLine: false,
autoFit: true,
});
paragraph.AddElement(emergencyPhoneForm);
doc.Push(paragraph);

// Additional Preferences
paragraph = Api.CreateParagraph();
paragraph.AddText("Additional Information");
paragraph.SetFontSize(14 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

// T-Shirt Size
paragraph = Api.CreateParagraph();
paragraph.AddText("T-Shirt Size: ");
paragraph.SetFontSize(12 * 2);
let tshirtForm = Api.CreateComboBoxForm({
key: "t_shirt_size",
required: false,
placeholder: "Select size",
editable: false,
autoFit: true,
items: ["XS", "S", "M", "L", "XL", "XXL"]
});
paragraph.AddElement(tshirtForm);
doc.Push(paragraph);

// Dietary Restrictions
paragraph = Api.CreateParagraph();
paragraph.AddText("Dietary Restrictions: ");
paragraph.SetFontSize(12 * 2);
let dietForm = Api.CreateTextForm({
key: "dietary_restrictions",
required: false,
placeholder: "Any dietary restrictions",
maxCharacters: 100,
multiLine: false,
autoFit: true,
});
paragraph.AddElement(dietForm);
doc.Push(paragraph);
}

// Function to populate form with user default values
function populateFormWithDefaults(userData, preferences) {
let populatedCount = 0;
let allData = { ...userData, ...preferences };

for (let [key, value] of Object.entries(allData)) {
let forms = doc.GetFormsByKey(key);

if (forms.length > 0) {
let form = forms[0];
let formType = form.GetFormType();

if (formType === "textForm") {
if (value !== null && value !== undefined) {
form.SetText(String(value));
populatedCount++;
}
} else if (formType === "checkBoxForm") {
form.SetChecked(Boolean(value));
populatedCount++;
} else if (formType === "comboBoxForm") {
if (value !== null && value !== undefined) {
form.SetText(String(value));
populatedCount++;
}
}
}
}

return populatedCount;
}

// Function to get user data summary
function getUserDataSummary(userData) {
return {
totalFields: Object.keys(userData).length,
textFields: Object.values(userData).filter(v => typeof v === 'string').length,
booleanFields: Object.values(userData).filter(v => typeof v === 'boolean').length,
dateFields: Object.keys(userData).filter(k => k.includes('date')).length,
contactFields: Object.keys(userData).filter(k => k.includes('phone') || k.includes('email')).length
};
}

// Create the employee profile form
createEmployeeProfileForm();

// Add spacing
let paragraph = Api.CreateParagraph();
paragraph.AddText("");
doc.Push(paragraph);

// Add auto-population demonstration
paragraph = Api.CreateParagraph();
paragraph.AddText("Default Values Population Demo");
paragraph.SetFontSize(16 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

// Step 1: User Authentication Data
paragraph = Api.CreateParagraph();
paragraph.AddText("Step 1: User Authentication Data");
paragraph.SetFontSize(14 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

let userSummary = getUserDataSummary(authenticatedUser);

paragraph = Api.CreateParagraph();
paragraph.AddText(`✓ User: ${authenticatedUser.full_name} (${authenticatedUser.employee_id})`);
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText(`✓ Department: ${authenticatedUser.department}`);
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText(`✓ Available data fields: ${userSummary.totalFields}`);
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

// Step 2: Form Population
paragraph = Api.CreateParagraph();
paragraph.AddText("Step 2: Automatic Form Population");
paragraph.SetFontSize(14 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

let populatedCount = populateFormWithDefaults(authenticatedUser, userPreferences);

paragraph = Api.CreateParagraph();
paragraph.AddText(`✓ Populated ${populatedCount} form fields with default values`);
paragraph.SetFontSize(12 * 2);
paragraph.SetColor(0, 128, 0);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("✓ Text fields filled with user profile data");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("✓ Dropdown selections set to current values");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("✓ Checkboxes set according to user preferences");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

// Step 3: User Flexibility
paragraph = Api.CreateParagraph();
paragraph.AddText("Step 3: User Modification Flexibility");
paragraph.SetFontSize(14 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("✓ All fields remain editable for user modifications");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("✓ Pre-filled values serve as starting point");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("✓ Reduces manual input while maintaining flexibility");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

// Add sample data display
paragraph = Api.CreateParagraph();
paragraph.AddText("");
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("Sample Default Values Applied:");
paragraph.SetFontSize(14 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

let sampleFields = [
["full_name", authenticatedUser.full_name, "Text Field"],
["email", authenticatedUser.email, "Text Field"],
["department", authenticatedUser.department, "Dropdown"],
["has_company_car", authenticatedUser.has_company_car ? "Yes" : "No", "Checkbox"],
["work_from_home", userPreferences.work_from_home ? "Yes" : "No", "Checkbox"]
];

for (let [field, value, type] of sampleFields) {
paragraph = Api.CreateParagraph();
paragraph.AddText(`${field}: "${value}" (${type})`);
paragraph.SetFontSize(10 * 2);
doc.Push(paragraph);
}

// Add implementation guide
paragraph = Api.CreateParagraph();
paragraph.AddText("");
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("Implementation Guide:");
paragraph.SetFontSize(14 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("1. User Data Retrieval");
paragraph.SetFontSize(12 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Obtain user data from authentication system");
paragraph.SetFontSize(10 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Include profile information, preferences, and settings");
paragraph.SetFontSize(10 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Validate data completeness and accuracy");
paragraph.SetFontSize(10 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("2. Form Field Population");
paragraph.SetFontSize(12 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Use GetFormsByKey() to locate specific fields");
paragraph.SetFontSize(10 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Apply SetText() for text and dropdown fields");
paragraph.SetFontSize(10 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Use SetChecked() for checkbox fields");
paragraph.SetFontSize(10 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("3. Flexibility Maintenance");
paragraph.SetFontSize(12 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Keep all fields editable for user modifications");
paragraph.SetFontSize(10 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Provide clear indication of pre-filled data");
paragraph.SetFontSize(10 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Handle cases where default data may be outdated");
paragraph.SetFontSize(10 * 2);
doc.Push(paragraph);

// Add benefits section
paragraph = Api.CreateParagraph();
paragraph.AddText("");
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("Benefits:");
paragraph.SetFontSize(14 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Significantly reduces form completion time");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Improves user experience in personal dashboards");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Reduces data entry errors");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Increases form completion rates");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);

paragraph = Api.CreateParagraph();
paragraph.AddText("• Enhances user satisfaction with internal systems");
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);