HSAnet / glimpse_client

GLIMPSE is an end host-based network measurement tool.
http://www.measure-it.net
Other
6 stars 6 forks source link

Survey Framework on client #98

Open MKV21 opened 10 years ago

MKV21 commented 10 years ago

API to define surveys for the user which will be displayed in the app. Features required:

maoswald commented 10 years ago

What do you mean by slider for single choice? oO

MKV21 commented 10 years ago

I guess a slider is always single choice, you are right, as there is an own bullet point for sliders this is no extra feature ;)

Single choice would be radio buttons, multiple choice checkboxes. Free text and slider are special.

maoswald commented 10 years ago

Added survey pages and another range question with min and max values. Protocol should be finished if there are no other features required?! Protocol for survey

MKV21 commented 9 years ago

From maoswald in the wiki

Survey

Every survey could have multiple pages with multiple questions. There are 5 different types of questions:

This is the protocol structure.

structure

server protocol

This is the protocol sent to the client.

{
    "survey_id": 42,
    "survey_title": "Dinner",
    "survey_description": "What would you like to eat?",
    "survey_pages": [
        {
            "survey_page_id": 1,
            "survey_page_title": "common question about food",
            "survey_page_description": "todays dinner",
            "survey_page_questions": [
                {
                    "survey_question_id": 1
                    "survey_question_title": "Food",
                    "survey_question_question": "What do you choose to eat?",
                    "survey_question_type": 1, //single choice
                    "survey_question_answers": [
                        {
                            "answer_id": 1,
                            "answer_title": "Zwiebelrostbraten",
                            "answer_description": "yummy meat"
                        },
                        {
                            ...
                        }
                    ],
                    "survey_question_skipable": true
                },
                {
                    "survey_question_id": 2
                    "survey_question_title": "Drinks",
                    "survey_question_question": "What would you like to drink?",
                    "survey_question_type": 2, //multiple choice
                    "survey_question_answers": [
                        {
                            "answer_id": 1,
                            "answer_title": "Beer",
                            "answer_description": "Gustel"
                        },
                        {
                            ...
                        }
                    ],
                    "survey_question_skipable": true
                },
                {
                    "survey_question_id": 3
                    "survey_question_title": "Extras",
                    "survey_question_question": "Other orders?",
                    "survey_question_type": 3, //free text
                    "survey_question_skipable": true
                },
                {
                    "survey_question_id": 4
                    "survey_question_title": "Meet",
                    "survey_question_question": "How would like your meet served?",
                    "survey_question_type": 4, //range
                    "survey_question_answer_range_points": [
                        {
                            "answer_range_point_id": 1,
                            "answer_range_point_title": "rare",
                            "answer_range_point_description": "short grilled"
                        },
                        {
                            ...
                        }
                    ],
                    "survey_question_skipable": true
                },
                {
                    "survey_question_id": 5,
                    "survey_question_title": "Meet weight",
                    "survey_question_question": "How heavy should your meet be?",
                    "survey_question_type": 5, //range of numbers
                    "survey_question_range_min": 50,
                    "survey_question_range_max": 5000,
                    "survey_question_range_step": 25,
                    "survey_question_range_entity": "gram", // optional information
                    "survey_question_skipable": true
                },
                {
                    ...
                }

            ]
        },
        {
            ...
        }

    ],
    "survey_greetings": "Thanks for your participation" 
}

result protocol

This is the protocol sent by the client back to the server.

{
    "survey_id": 42,
    "survey_result": [
        {
            "survey_question_id": 1,
            "survey_question_answer": 1
        },
        {
            "survey_question_id": 2,
            "survey_question_answer": [
                {
                    "answer_id": 1
                },
                {
                    ...
                }           
            ]
        },
        {
            "survey_question_id": 3,
            "survey_question_answer": "One schnitzel please!"
        },
        {
            "survey_question_id": 4,
            "survey_question_answer_range_value": 35    //percent
        },
        {
            "survey_question_id": 5,
            "survey_question_answer_range_number_of_steps": 135 //result = range_min + range_step * range_number_of_steps
        }
    ],
    "survey_feedback": "tasted really fine"
}