import { BusinessProfileProperty, Guid, GuidValue, Identity, Layout, MediaPickerImage, MultilingualString, SpacingSettings } from "@omnia/fx/models"; import { FormTemplateSettings } from "./FormTemplate"; import { FormQueryScopes, FormRollupViewComponentSettings } from "./components"; export interface FormActionHandlerSettings extends FormBuilderSettings { selectedTypeId: number; scopeType: FormScopeTypes; scopeId: GuidValue; } export interface FormBuilderSettings { isEditing?: boolean; } export declare const ScopeCurrentId: Guid; export declare enum FormScopeTypes { BusinessProfile = 1, AppInstance = 2 } declare const FormBuilderSteps: readonly ["templateSettings", "formQuestions", "formSettings"]; export type FormSteps = typeof FormBuilderSteps[number]; export interface FormBase { definition: FormDefinition; layout?: Layout; formTypeId?: number; formTemplateId?: number; enterpriseProperties?: { [internalName: string]: any; }; } export interface CreateFormRequest extends Form { generateLayoutIfEmpty?: boolean; } export interface Form extends FormBase { id?: number; profileId?: GuidValue; appInstanceId?: GuidValue; createdAt: string; createdBy: Identity; modifiedAt: string; modifiedBy: Identity; } export interface Submission { id: number; form: Form; totalPoints: number; createdAt: string; createdBy: Identity; modifiedAt: string; modifiedBy: Identity; submittedAt: string; } export declare enum FormTypes { Poll = 1, Survey = 2, Checkup = 3 } export declare enum FormStatus { Open = 1, Closed = 2 } export interface FormDefinition extends FormTemplateSettings { type: FormTypes; title: MultilingualString; questions: Question[]; start?: string; end?: string; image?: MediaPickerImage; } export interface FormListing { id: number; title: MultilingualString; start?: string; end?: string; profileId: GuidValue; appInstanceId?: GuidValue; numberOfSubmissions: number; numberOfSubmittedUsers: number; averagePointsBySubmission: number; averagePointsBySubmittedOption: number; createdAt?: string; createdBy?: Identity; modifiedAt?: string; modifiedBy?: Identity; } export declare enum QuestionTypes { Text = 1, Choice = 2, MultipleChoice = 3 } export interface Question { readonly id: GuidValue; readonly blockId: GuidValue; title: MultilingualString; type: QuestionTypes; answer?: Answer; } export interface TextQuestion extends Question { type: QuestionTypes.Text; answer: TextAnswer; } export interface ChoiceQuestion extends Question { type: QuestionTypes.Choice; options: Option[]; answer: ChoiceAnswer; } export interface MultipleChoiceQuestion extends Question { type: QuestionTypes.MultipleChoice; options: Option[]; answer: MultipleChoiceAnswer; } export interface Answer { type: QuestionTypes; } export interface TextAnswer extends Answer { type: QuestionTypes.Text; value: string; } export interface ChoiceAnswer extends Answer { type: QuestionTypes.Choice; optionId: GuidValue; } export interface MultipleChoiceAnswer extends Answer { type: QuestionTypes.MultipleChoice; optionIds: GuidValue[]; } export declare enum OptionTypes { FormDefined = 1, UserDefined = 2 } export interface Option { id: GuidValue; type: OptionTypes; title: MultilingualString; point: number; isCorrect?: boolean; } export interface FormDefinedOption extends Option { type: OptionTypes.FormDefined; } export interface UserDefinedOption extends Option { type: OptionTypes.UserDefined; value: string; } export interface QueryFormRequest { type?: FormTypes; filterOpenForRespondent?: boolean; } export declare enum LegendAlignment { Start = "start", Center = "center", End = "end" } export declare enum LegendPosition { Top = "top", Bottom = "bottom", Left = "left", Right = "right" } export interface QuestionBlockSettings { padding: { inherit: boolean; spacing?: SpacingSettings; }; } export interface FormViewDisplaySettings { useDialog: boolean; showFormTitle: boolean; showFormImage: boolean; legendAlignment: LegendAlignment; legendPosition: LegendPosition; customShowFormButton: MultilingualString; spacing?: SpacingSettings; } export interface FormRendererBlockSettings extends FormViewDisplaySettings { formId: number; blockTitle: MultilingualString; scopeType?: FormQueryScopes; scopeId?: GuidValue; } export type FormViewComponentSettings = FormViewDisplaySettings & FormRollupViewComponentSettings; export declare class FormGenericSetting extends BusinessProfileProperty { chartColor: ChartColor[]; constructor(); } export declare class ChartColor { color: string; textColor: string; } export declare enum FormDisplayStatus { NotOpen = 0, Opening = 1, Closed = 2 } export {};