<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
    <!-- QUESTIONS -->
    <record model="ir.ui.view" id="survey_question_form">
        <field name="name">Form view for survey question</field>
        <field name="model">survey.question</field>
        <field name="arch" type="xml">
            <form string="Survey Question" create="false" class="o_survey_question_view_form">
                <field name="is_placed_before_trigger" invisible="1"/>
                <div class="alert alert-warning text-center" role="alert" invisible="not is_placed_before_trigger">
                    ⚠️ This question is positioned before some or all of its triggers and could be skipped.
                </div>
                <field name="is_page" invisible="1"/>
                <field name="page_id" invisible="1" required="False"/>
                <field name="sequence" invisible="1"/>
                <field name="scoring_type" invisible="1"/>
                <field name="has_image_only_suggested_answer" invisible="1"/>
                <sheet>
                    <field name="survey_id" invisible="not context.get('show_survey_field')" readonly="1"/>
                    <div class="float-end d-flex flex-column text-center" invisible="not is_page">
                        <label for="background_image"/>
                        <field name="background_image" widget="image" class="oe_avatar"/>
                    </div>
                    <div invisible="is_page" class="mb-0">
                        <field name="question_type" nolabel="1" widget="selection_badge_icons" required="not is_page"
                            options="{'icon_mapping': {
                                'simple_choice': 'fa-dot-circle-o',
                                'multiple_choice': 'fa-check-square-o',
                                'text_box': 'fa-bars',
                                'char_box': 'fa-minus',
                                'numerical_box': 'fa-hashtag',
                                'scale': 'fa-smile-o',
                                'date': 'fa-calendar-o',
                                'datetime': 'fa-calendar',
                                'time': 'fa-clock-o',
                                'matrix': 'fa-th',    
                            }}"/>
                    </div>
                    <div class="oe_title">
                        <label for="title" string="Section" invisible="not is_page"/>
                        <label for="title" string="Question" invisible="is_page"/>
                        <h1>
                            <field name="title" 
                                   placeholder="Ask something..." 
                                   nolabel="1" 
                                   options="{'line_breaks': False}" 
                                   widget="text"/>
                        </h1>
                    </div>

                    <div class="w-100 mw-100">
                        <field name="questions_selection" invisible="1"/>
                        <field name="description"
                            options="{'embedded_components': false}"
                            placeholder="Optional: provide extra guidelines, instructions, pictures... here, to help attendees answer"
                            nolabel="1"
                            class="o_survey_description_editor"/>
                    </div>
                    <group class="o_label_nowrap" invisible="not is_page or questions_selection == 'all'">
                        <field name="random_questions_count"/>
                    </group>
                    <notebook>
                        <page string="Answers" name="answers" invisible="is_page or question_type == 'text_box' or scoring_type == 'no_scoring' and question_type in ['numerical_box', 'date', 'datetime']">
                            <group>
                                <group invisible="question_type != 'scale'">
                                    <label for="scale_min" string="Scale Range"/>
                                    <div class="o_row">
                                        <field name="scale_min" nolabel="1" placeholder="Scale Minimum Value (0 to 10)"/>
                                        <span class="mx-2 o_form_label">to</span>
                                        <field name="scale_max" nolabel="1" placeholder="Scale Maximim Value (0 to 10)"/>
                                    </div>
                                    
                                    <label for="scale_min_label" string="Labels"/>
                                    <field name="scale_min_label_placeholder" invisible="1"/>
                                    <field name="scale_max_label_placeholder" invisible="1"/>
                                    <div class="o_row">
                                        <field name="scale_min_label" nolabel="1" 
                                            options="{'placeholder_field': 'scale_min_label_placeholder'}"/>
                                        <span class="mx-2 o_form_label">to</span>
                                        <field name="scale_max_label" nolabel="1" 
                                            options="{'placeholder_field': 'scale_max_label_placeholder'}"/>
                                    </div>
                                </group>
                                <group invisible="question_type not in ['numerical_box', 'date', 'datetime']">
                                    <field name="answer_numerical_box" string="Correct Answer" class="oe_inline"
                                        invisible="question_type != 'numerical_box'"
                                        required="is_scored_question and question_type == 'numerical_box'" />
                                    <field name="answer_date" string="Correct Answer"  class="oe_inline"
                                        invisible="question_type != 'date'"
                                        required="is_scored_question and question_type == 'date'"/>
                                    <field name="answer_datetime" string="Correct Answer" class="oe_inline"
                                        invisible="question_type != 'datetime'"
                                        required="is_scored_question and question_type == 'datetime'"/>
                                </group>

                                <group invisible="question_type !='char_box'">
                                    <group invisible="question_type != 'char_box'">
                                        <field name="validation_email"/>
                                    </group>
                                    <group invisible="not validation_email or question_type != 'char_box'">
                                        <field name="save_as_email"/>
                                    </group>
                                    <group invisible="question_type != 'char_box'">
                                        <field name="save_as_nickname"/>
                                    </group>
                                </group>

                                <group invisible="scoring_type == 'no_scoring' or question_type not in ['numerical_box', 'date', 'datetime']">
                                    <label for="is_scored_question"/>
                                    <div name="survey_scored_question">
                                        <field name="is_scored_question" nolabel="1"/>
                                        <field name="answer_score" class="w-50 mx-2" invisible="not is_scored_question" nolabel="1"/>
                                        <span invisible="not is_scored_question">Points</span>
                                    </div>
                                </group>
                            </group>
                            <field name="suggested_answer_ids" context="{'default_question_id': id}" invisible="question_type not in ['simple_choice', 'multiple_choice', 'matrix']">
                                <list editable="bottom">
                                    <field name="sequence" widget="handle"/>
                                    <field name="value" string="Choices" required="not value_image" placeholder="Option Name"/>
                                    <field name="is_correct"
                                        column_invisible="parent.scoring_type == 'no_scoring' or parent.question_type == 'matrix'"/>
                                    <field name="answer_score"
                                        column_invisible="parent.scoring_type == 'no_scoring' or parent.question_type == 'matrix'"/>
                                    <field name="value_image_filename" column_invisible="not parent.has_image_only_suggested_answer"/>
                                    <field name="value_image" width="200px" filename="value_image_filename" options="{'accepted_file_extensions': 'image/*'}"
                                           column_invisible="parent.question_type in ['matrix', 'scale']" required="not value"/>
                                </list>
                            </field>

                            <field name="matrix_row_ids" context="{'default_matrix_question_id': id}"
                                invisible="question_type != 'matrix'">
                                <list editable="bottom">
                                    <field name="sequence" widget="handle"/>
                                    <field name="value" string="Rows"/>
                                </list>
                            </field>
                        </page>
                        <page string="Options" name="options" invisible="is_page">
                            <group>
                                <group string="Answers" invisible="question_type == 'scale'">
                                    <!-- Global validation setting -->
                                    <field name="validation_required"
                                           invisible="question_type not in ['char_box', 'numerical_box', 'date', 'datetime']"/>
                                    <div class="o_wrap_label o_form_label" invisible="not validation_required">Min/Max Limits</div>
                                    <div class="o_survey_question_validation_parameters" invisible="not validation_required">
                                        <!-- Minima -->
                                        <field name="validation_length_min" class="o_survey_question_validation_inline" nolabel="1" placeholder="Minimum"
                                               invisible="question_type != 'char_box'"
                                               required="validation_required and question_type == 'char_box'"/>
                                        <field name="validation_min_float_value" class="o_survey_question_validation_inline" nolabel="1" placeholder="Minimum"
                                               invisible="question_type != 'numerical_box'"
                                               required="validation_required and question_type == 'numerical_box'"/>
                                        <field name="validation_min_date" nolabel="1" placeholder="Minimum"
                                               invisible="question_type != 'date'"
                                               required="validation_required and question_type == 'date' and not validation_max_date"/>
                                        <field name="validation_min_datetime" nolabel="1" placeholder="Minimum"
                                               invisible="question_type != 'datetime'"
                                               required="validation_required and question_type == 'datetime' and not validation_max_datetime"/>

                                        <i class="fa fa-long-arrow-right mx-2" aria-label="Arrow icon" title="Arrow"/>
                                        <!-- Maxima -->
                                        <field name="validation_length_max" class="o_survey_question_validation_inline" nolabel="1" placeholder="Maximum"
                                               invisible="question_type != 'char_box'"
                                               required="validation_required and question_type == 'char_box'"/>
                                        <field name="validation_max_float_value" class="o_survey_question_validation_inline" nolabel="1" placeholder="Maximum"
                                               invisible="question_type != 'numerical_box'"
                                               required="validation_required and question_type == 'numerical_box'"/>
                                        <field name="validation_max_date" nolabel="1" placeholder="Maximum"
                                               invisible="question_type != 'date'"
                                               required="validation_required and question_type == 'date' and not validation_min_date"/>
                                        <field name="validation_max_datetime" nolabel="1" placeholder="Maximum"
                                               invisible="question_type != 'datetime'"
                                               required="validation_required and question_type == 'datetime' and not validation_min_datetime"/>
                                    </div>
                                    <field name="validation_error_msg" invisible="not validation_required"
                                        placeholder="Displayed when the answer entered is not valid."/>

                                    <field name="matrix_subtype" invisible="question_type != 'matrix'" required="question_type == 'matrix'"/>
                                    <field name="question_placeholder"
                                           invisible="question_type not in ['text_box', 'char_box', 'date', 'datetime', 'numerical_box']"
                                           placeholder="Help Participants know what to write"/>
                                    <field name="comments_allowed" invisible="question_type not in ['simple_choice', 'multiple_choice', 'matrix']"/>
                                    <field name="comments_message"
                                           invisible="question_type not in ['simple_choice', 'multiple_choice', 'matrix'] or not comments_allowed"
                                           placeholder="If other, please specify:"/>
                                    <field name='comment_count_as_answer'
                                        invisible="question_type not in ['simple_choice', 'multiple_choice', 'matrix'] or not comments_allowed"/>
                                </group>
                                <group string="Conditional display">
                                    <p class="text-muted" colspan="2" invisible="questions_selection == 'all'">
                                        Conditional display is not available when questions are randomly picked.
                                    </p>
                                    <field name="allowed_triggering_question_ids" invisible="1"/>
                                    <field name="triggering_answer_ids" widget="many2many_tags" options="{'no_open': True, 'no_create': True}"
                                           domain="[('question_id', 'in', allowed_triggering_question_ids)]"
                                           invisible="questions_selection == 'random'"
                                           placeholder="Optional previous answers required"
                                    />
                                </group>
                            </group>
                            <group>
                                <group string="Constraints">
                                    <field name="constr_mandatory" string="Mandatory Answer"/>
                                    <field name="constr_error_msg"
                                        invisible="not constr_mandatory"
                                        placeholder="This question requires an answer."/>
                                </group>
                                <group string="Live Sessions" invisible="not session_available">
                                    <field name="is_time_customized" invisible="True"/>
                                    <field name="session_available" invisible="True"/>
                                    <label for="is_time_limited" string="Time Limit (seconds)"/>
                                    <div>
                                        <field name="is_time_limited" nolabel="1" class="oe_inline"
                                            widget="boolean_update_flag"
                                            options="{'flagFieldName': 'is_time_customized'}"
                                            context="{'referenceValue': survey_session_speed_rating}"/>
                                        <field name="time_limit" nolabel="1" class="oe_inline"
                                            widget="integer_update_flag"
                                            options="{'flagFieldName': 'is_time_customized'}"
                                            context="{'referenceValue': survey_session_speed_rating_time_limit}"
                                            invisible="not is_time_limited" />
                                    </div>
                                </group>
                            </group>
                        </page>
                    </notebook>
                </sheet>
            </form>
        </field>
    </record>
    <record model="ir.ui.view" id="survey_question_tree">
        <field name="name">List view for survey question</field>
        <field name="model">survey.question</field>
        <field name="arch" type="xml">
            <list string="Survey Question" create="false">
                <field name="title"/>
                <field name="survey_id"/>
                <field name="question_type"/>
                <field name="constr_mandatory" optional="1" widget="boolean_toggle"/>
            </list>
        </field>
    </record>
    <record model="ir.ui.view" id="survey_question_search">
        <field name="name">Search view for survey question</field>
        <field name="model">survey.question</field>
        <field name="arch" type="xml">
            <search string="Search Question">
                <field name="title"/>
                <field name="survey_id" string="Survey"/>
                <field name="question_type" string="Type"/>
                <group>
                    <filter name="group_by_type" string="Type" domain="[]" context="{'group_by':'question_type'}"/>
                    <filter name="group_by_survey" string="Survey" domain="[]" context="{'group_by':'survey_id'}"/>
                </group>
            </search>
        </field>
    </record>

    <record model="ir.actions.act_window" id="action_survey_question_form">
        <field name="name">Questions</field>
        <field name="res_model">survey.question</field>
        <field name="view_mode">list,form</field>
        <field name="search_view_id" ref="survey_question_search"/>
        <field name="context">{'search_default_group_by_page': True, 'show_survey_field': True}</field>
        <field name="domain">[('is_page', '=', False)]</field>
        <field name="help" type="html">
          <p class="o_view_nocontent_empty_folder">
            No Questions yet!
          </p><p>
            Come back once you have added questions to your Surveys.
          </p>
        </field>
    </record>

    <!-- LABELS -->
    <record id="survey_question_answer_view_tree" model="ir.ui.view">
        <field name="name">survey.question.answer.view.list</field>
        <field name="model">survey.question.answer</field>
        <field name="arch" type="xml">
            <list string="Survey Label" create="false" default_order="question_id">
                <field name="sequence" widget="handle"/>
                <field name="question_id"/>
                <field name="value" string="Answer"/>
                <field name="answer_score" groups="base.group_no_one"/>
            </list>
        </field>
    </record>

    <record id="survey_question_answer_view_form" model="ir.ui.view">
        <field name="name">survey.question.answer.view.form</field>
        <field name="model">survey.question.answer</field>
        <field name="arch" type="xml">
            <form string="Question Answer Form" create="False">
                <sheet>
                    <field name="question_type" invisible="1"/>
                    <group>
                        <group>
                            <field name="scoring_type" invisible="1"/>
                            <field name="question_id"/>
                            <field name="is_correct" invisible="scoring_type == 'no_scoring'"/>
                            <field name="answer_score" invisible="scoring_type == 'no_scoring' or question_type == 'matrix'"/>
                            <field name="value_image"/>
                        </group>
                        <group>
                            <field name="value"/>
                            <field name="matrix_question_id" invisible="question_type != 'matrix'"/>
                            <field name="sequence"/>
                        </group>
                    </group>
                </sheet>
            </form>
        </field>
    </record>

    <record id="survey_question_answer_view_search" model="ir.ui.view">
        <field name="name">survey.question.answer.view.search</field>
        <field name="model">survey.question.answer</field>
        <field name="arch" type="xml">
            <search string="Search Label">
                <field name="question_id"/>
                <group>
                    <filter name="group_by_question" string="Question" domain="[]" context="{'group_by':'question_id'}"/>
                </group>
            </search>
        </field>
    </record>

    <record id="survey_question_answer_action" model="ir.actions.act_window">
        <field name="name">Suggested Values</field>
        <field name="res_model">survey.question.answer</field>
        <field name="view_mode">list,form</field>
        <field name="search_view_id" ref="survey_question_answer_view_search"/>
        <field name="context">{'search_default_group_by_question': True}</field>
        <field name="help" type="html">
          <p class="o_view_nocontent_empty_folder">
            No survey labels found
          </p>
        </field>
    </record>

    <menuitem name="Questions"
        id="menu_survey_question_form1"
        action="action_survey_question_form"
        parent="survey_menu_questions"
        sequence="2"/>
    <menuitem name="Suggested Values"
        id="menu_survey_label_form1"
        action="survey_question_answer_action"
        parent="survey_menu_questions"
        sequence="3"/>
    <menuitem name="Detailed Answers"
        id="menu_survey_response_line_form"
        action="survey_user_input_line_action"
        parent="survey_menu_questions"
        sequence="4"/>
</data>
</odoo>
