diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..5c7cfe5c --- /dev/null +++ b/404.html @@ -0,0 +1,20 @@ +404 Page not found +

404

Sorry, we couldn't find that page.

\ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..e36a26b6 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +docs.mysurvey.solutions diff --git a/NewServerRequest b/NewServerRequest new file mode 100644 index 00000000..892cb738 --- /dev/null +++ b/NewServerRequest @@ -0,0 +1,16 @@ + + +
+
+
+ +

Thank you for your interest to Survey Solutions. If you are seeing this page, you've followed an outdated link to the service that is no longer provided.

+ +

Our team no longer provides cloud-based servers for data collection (since April 09, 2020).

+ +

The corresponding announcement of the change and some possible alternatives have been posted online.

+ +

If you wish to set up your own server for data collection with Survey Solutions, please follow to this instructions page. Please, contact your local technical support or network administrator for any required assistance.

+ + + \ No newline at end of file diff --git a/about/images/misha.jpg b/about/images/misha.jpg new file mode 100644 index 00000000..245d2609 Binary files /dev/null and b/about/images/misha.jpg differ diff --git a/about/images/misha_hu11287975981426872732.jpg b/about/images/misha_hu11287975981426872732.jpg new file mode 100644 index 00000000..efe4b298 Binary files /dev/null and b/about/images/misha_hu11287975981426872732.jpg differ diff --git a/about/index.html b/about/index.html new file mode 100644 index 00000000..a7689fb5 --- /dev/null +++ b/about/index.html @@ -0,0 +1,20 @@ +Powered by Michael Lokshin +

Survey Solutions software is produced by a large team of dedicated programmers, data scientists, statisticians, economists and other specialists. Yet our vision is coming from the idea set forth by Michael (Misha) Lokshin in 2011 that survey data collection must be accessible, reliable, prompt, and yet yield high quality data. Misha has realized that to make a difference it is not enough to deliver advice and recommendation, but to create a working tool that can extend the accumulated experience to the wider audience of survey practitioners.

At first, it was hard to see in the initial clumsy version of our software, humbly blinking the cursor on a single tablet in our office, anything that would be attractive or promising. Yet the idea brought its fruit: today, the software is used around the World in more than 150 countries and not only successfully competes with long established market products, but takes the lead bringing to our users the power of the tools and methods not accessible before.

Misha believed that the only way to convince the sceptics is a delivery of the working product, and demonstration of the solution. While setting an ambitious goal of rapid and agile software development Misha has challenged all of us to still maintain the high quality of work that would benefit our users.

Misha was building our team, leading by own example of caring of every user and getting into every problem report, often responding to user requests in the middle of the night or while on vacation with his family.

Over the years we’ve seen our ups and downs, yet the confidence was always with us that we are making steps in the right direction.

As Misha is moving forward to a new phase in his career, we are grateful for his leadership and commit to continue the development and support of the Survey Solutions platform in the principles that he has established.

\ No newline at end of file diff --git a/admin/index.html b/admin/index.html new file mode 100644 index 00000000..4844a35a --- /dev/null +++ b/admin/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/ + \ No newline at end of file diff --git a/contributing/adding-new-question-type/index.html b/contributing/adding-new-question-type/index.html new file mode 100644 index 00000000..f8b901f6 --- /dev/null +++ b/contributing/adding-new-question-type/index.html @@ -0,0 +1,33 @@ +Adding new question type +

Adding new question type

July 1, 2021

Adding new question type

Adding a new question type requires changes in all existing applications in survey solutions.

When implementing it think about an answers to the following questions:

  • What CLR type can be used to represent an answer to your question type. Consider existing types
  • How do you see this question to be represented in export +– Is answer should be presented differently during preloading of assignments
  • How will it be represented on UI for interviewer, headquarters (answered read-only state)

Designer

Entry point is enum QuestionType. To add new entry here or not depends on how much your new question type is different from any of the existing types. +In order to be able to use answer to a question in questionnaire expressions implement a type conversion in QuestionTypeToCSharpTypeMapper. You should always choose a type that can have a null value in it.

Extend QuestionnaireInfoFactory. This class is responsible to generate classes provided to a javascript view from QuestionnaireDocument object.

Implement needed UI to edit question details on designer. To do it introduce changes in src\UI\WB.UI.Designer\questionnaire folder. Start at views/question.html, controllers/question.js this is code that is generic to all question types. There you’ll be able to find how customizations per type can be implemented. Client javascript application sends commands to CommandController so check if you need to introduce changes there.

If you need to store custom properties for your question type create new command that is going to be used in update operations. Find implementation of UpdateTextQuestion class as an example

Implement needed new verifications to be used during questionnaire compilation. QuestionnaireVerifier class is an entry point for all checks that are executed, check QuestionVerifications class for examples. Verifications are separated into 3 levels (VerificationMessageLevel enum) - Critical, Error and Warning.

  • Critical errors are first to be checked by verifier. If any critical error found in questionnaire its likely to break the entire questionnaire structure and will lead to more and more errors. So if any critical error is found further lower level checks are not executed.
  • Error is regular error
  • Warning is shows in separate list and not prevents user from importing questionnaire to headquarters application

Once question can be saved on designer and verified implement its representation for PDF Export. PdfFactory class is responsible for preparing data to render document, views to render UI can be found in src\UI\WB.UI.Designer\Areas\Pdf folder. PDF file is generated from html with wkhtmltopdf tool.

In order to prevent older Headquarters applications from importing questionnaires that are using new question type extend DesignerEngineVersionService class with check for existence of a new type. Assign current ApiVersion.MaxQuestionnaireVersion to existing last check, increment later constant by 1 and use it to assign content version in your new check.

Do not forget to write unit test for all introduced changes.

Headquarters

Headquarters application should be able to display added question type during interview review and give an ability to give answers when web mode is used.

At this point you’ll need to implement an ability for interview to receive answers for that new question type. +Interview represents itself as a tree inside (InterviewTree). Each question has own type that stores answer and state if its disabled, valid, etc. You need to create a representation of your question type, create a new class, take a InterviewTreeGpsQuestion as an example. While adding question type for a tree you’ll also create a type to store answer to your question type. +Now you should be able to add a new command, example can found at AnswerGeographyQuestionCommand.cs. After new class for command is created add a new method that will accept answer in Interview.cs file, take AnswerAreaQuestion(AnswerGeographyQuestionCommand command) as an example. +When that done you should be able to implement answering command. You’ll need to extend ApplyUpdateAnswerEvents method in the Interview class to raise new event type for your question.

When interview is accepting answer and is raising proper event, implement UI for web mode. Extend class that converts interview entities into UI dtos - WebInterviewInterviewEntityFactory. Specifically GetEntityDetails method. Create needed dto classes for it. +Open src/UI/WB.UI.Frontend in visual studio code, create a new vue component in src\webinterview\components\questions folder. Existing convention maps component to a type declared in WB.Enumerator.Native.WebInterview.Models.InterviewEntityType enumeration. So extend it with new type and add appropriate .vue component (Integer.vue can be an example).

Preloading

Implement preloading for new question type. Its done in 2 phases:

  1. parsing and validating raw csv file for validity
  2. verifying interview specific rules, question types and questions existence

Code is located in AssignmentsImportService.VerifySimpleAndSaveIfNoErrors method. It checks file and stores it in rows to database for background process to pickup and create assignments. +When file is uploaded and stored AssignmentsVerificationJob validates it for interview specific rules, if needed extend it. +After validation assignment is created in AssignmentsImportJob. To parse string value into a proper answer value extend AssignmentsImportService.ToInterviewAnswer method.

Web tester

If implemented properly should be working already since its using same code as web interview does.

Interviewer/Supervisor

Start implementation from extending of InterviewViewModelFactory. Method GetEntityModelType converts questionnaire question type to question type that is mapped to a specific viewmodel (GetEntityModelType). Extend InterviewEntityType enum, EntityTypeToViewModelMap method and create new viewmodel type for new question. +Each question has generic functionalities like title, instructions, validations, warnings, comments etc. They are added by composition in parent viewmodel. Look for TextQuestionViewModel as an example of implementation. +Viewmodel should implement multiple interfaces to be fully supported by interviewer application:

  • IInterviewEntityViewModel - makes it possible for section viewmodel to track individual entities
  • IViewModelEventHandler<TextQuestionAnswered> - viewmodel should update own ui when Interview accepted answer and pushed event about it back to interview
  • IViewModelEventHandler<AnswersRemoved> - same as answered
  • ICompositeQuestion - in order to achieve smooth scrolling each question is spitted into small rows. This interface allows for parent viewmodel to get a plain list of entities that question is composed of
  • IDisposable - called when user leaves section to clear all managed resources, unsubscribe from evets.

Export

Export development is done in separate solution - src/Services/WB.Services.sln. Extend QuestionType enum and add a type that will represent new question type in questionnaire document (same was as it was implemented in designer). +Extend QuestionnaireSchemaGenerator.GetSqlTypeForQuestion method that maps question type to PostgreSQL column type. If your question spans across multiple export columns (as multi option does for example) extend implementation of QuestionnaireExportStructureFactory.FillHeaderWithQuestionsInsideGroup method.

\ No newline at end of file diff --git a/contributing/component-communication/images/SurveySolutionsCommunication.png b/contributing/component-communication/images/SurveySolutionsCommunication.png new file mode 100644 index 00000000..d9cfc8dd Binary files /dev/null and b/contributing/component-communication/images/SurveySolutionsCommunication.png differ diff --git a/contributing/component-communication/index.html b/contributing/component-communication/index.html new file mode 100644 index 00000000..e367536b --- /dev/null +++ b/contributing/component-communication/index.html @@ -0,0 +1,26 @@ +Communication between system components +

Communication between system components

March 28, 2023

Survey Solutions has several components that communicate with each other at different stages of the survey lifecycle.

See glossary for interpretation of some of the terms, which may have different meaning in other systems.

Survey Solutions Components:

  • Interviewer (Android application)
  • Supervisor (Android application)
  • Tester (Android application)
  • Headquarters (HQ) (Web application)
  • WebTester (Web application)
  • Designer (Web application)

These components may communicate with other components of the system.

Survey Solutions Components communication diagram

In the regular data collection flow these are common steps:

  1. A new Questionnaire is created on Designer.
  2. The questionnaire is tested using Android Tester and Web-Tester. Both apps communicate with the Designer. +3.The Headquarters application connects to Designer and downloads a questionnaire.
  3. New assignments are created at Headquarters.
  4. The Interviewer and Supervisor apps synchronize with Headquarters, send and receive data (multiple occurrences).
  5. The Interviewer App synchronizes with the Supervisor App.

Note that not all surveys rely on supervisors using Supervisor App on a mobile +device, correspondingly it is common for the interviewers to synchronize directly +with the server.

Synchronization

I. Interviewer and Headquarters (HQ)

A. Initial step after clean installation

After installation user inputs synchronization endpoint (server URL), login name and password.

  1. The Interviewer App sends request to Headquarters with login and password provided by user.
    • In case if user was not found in the system, password didn’t match the user, or the user was locked the Headquarters returns Unauthorized response.
    • If user’s credentials were successfully validated the server generates a new Token and returns it to the Interviewer App.
    • This Token is used for further authorization with Headquarters.
  2. The Interviewer App requests the list of Workspaces from HQ and selects the first one in the received list.
  3. The Interviewer App requests Headquarters to check if current user has a registered device.
    • If device is not linked (registered) to user the Interviewer App registers the current one.
  4. The Interviewer App checks compatibility with Headquarters, providing device ID and communication protocol version of the application.
    • The Interviewer App also supplies application version in header as agent identifier.
    • The Headquarters validates all parameters and replies to the Interviewer whether synchronization is permitted.
    • Reasons that don’t allow to continue include:
      • user has a different device, linked to profile;
      • application should be updated to the latest version;
      • the Interviewer application has a later version than the server and cannot be synchronized.
    • If compatibility check is successful the Interviewer App saves the list of workspaces.
    • The Interviewer App requests details about the interviewer and Headquarters tenant Id and saves details.

B. Routine synchronization

After login to the Interviewer App, the dashboard is displayed for the selected workspace. On pressing the Sync button the synchronization starts, which includes the following steps:

  1. The Interviewer App checks the login information sending request to the server
    • User details are requested and updated;
    • Application sends request to the server to verify that sync is permitted;
    • Current supervisor is requested from server and updated;
    • Application sends statistics to Headquarters.
  2. The Interviewer App requests public encryption key if doesn’t not exist in the storage
  3. The Interviewer App requests mobile device settings from the server and updates values for:
    • partial synchronization,
    • web interview URL template,
    • parameters for automatic location capture (period and accuracy).
  4. If partial synchronization is enabled, the Interviewer App updates interviews with changes from Headquarters.
  5. The Interviewer App uploads calendar events created or updated locally (on this mobile device).
  6. The Interviewer App starts to uploads interviews to the Headquarters: those that are in the status Completed, those switched by the interviewer to CAWI mode, those unsynced yet if partial synchronization is enabled. +For each interview the following items are sent in this order:
    • image files;
    • audio files;
    • audio audit files;
    • interview data.
  7. The Interviewer App synchronizes assignments:
    • The list of assignments is requested from the Headquarters. For each of the assignments to be downloaded the application checks if a local copy of the questionnaire is present and downloads it if necessary.
    • The Interviewer App downloads assignments, updates and created new assignments if needed.
  8. Downloading Interviews:
    • The Interviewer App gets the list of interviews from the HQ. Then checks the local list of interviews, removes and creates interviews one by one as necessary.
    • For every interview the questionnaire is downloaded if it doesn’t exist and then the interview data.
  9. Questionnaires synchronization. The list of questionnaires is retrieved from the server. Local questionnaires (stored on the mobile device) are updated according to the list received from the Headquarters. This may involve local data deletion and updates as required.
  10. The Interviewer App downloads calendar events.
  11. The company logo is updated (if it was changed).
  12. The audit log is sent to the Headquarters.
  13. Application sends statistics to Headquarters.

II. Interviewer and Supervisor

Routine synchronization

III. Interviewer and Supervisor

IV. Headquarters and Designer

The Headquarters provides UI to enter login and password to connect to Designer and validates them by calling the Designer API. If validation succeeded, it then calls the Designer API to get the list of the questionnaires that this user has access to. Once a particular questionnaire is selected to be imported and import is requested, the following actions are performed:

  1. The user’s credentials to access the Designer are validated.
  2. The Headquarters prepares to import questionnaire in exclusive mode (note that the same questionnaire cannot be imported simultaneously).
  3. The Headquarters requests the Designer API to get questionnaire providing information about what version of the questionnaire it supports. If the questionnaire in the Designer is erroneous (has errors) or the version of questionnaire on Designer is higher that Hadquarters supports error will be returned. The following results could be returned:
  • Unauthorized (401) - User is not authorized to perform this action any more. Might be locked by admin during the import.
  • Forbidden (403) - User has no access rights to this questionnaire. Shared status was revoked by owner.
  • Upgrade required (426) - The Designer doesn’t support old version of Headquarters.
  • ExpectationFailed (417) - Questionnaire contains new features not supported by the Headquarters.
  • PreconditionFailed (412) - Questionnaire contains errors.
  • NotFound (404) - Questionnaire not found. Might be deleted from the server.
  • ServiceUnavailable (503) - Server error occurred.
  • RequestTimeout (408) - Response was not received within defined timeframe.
  1. If the previous step succeeded Headquarters requests backup archive and questionnaire preview files for the questionnaire (in every translation).
  2. Headquarters starts assignments migration if the corresponding option for assignments migration was requested during the questionnaire import.

V. WebTester and Designer

VI. Tester and Designer

\ No newline at end of file diff --git a/contributing/environment/index.html b/contributing/environment/index.html new file mode 100644 index 00000000..a3e01f8b --- /dev/null +++ b/contributing/environment/index.html @@ -0,0 +1,32 @@ +Development environment +

Development environment

July 1, 2021

Development environment

In order to be able to buld Survey Solutions locally, you will need to install several prerequesties fist:

  • Install PostgreSQL.
  • Install LTS version of node JS (we currently use version 12).
  • Install yarn package manager.
  • Install latest version of asp.net core SDK.
  • Install Xamarin build tools for your platform.

Running locally

First you need to build javascript UI. It Can be done by running either .build.ps1, build.all.deps.bat or build_deps.sh scripts. This will build frontend components for Designer, Headquarters and Web Tester applications.

By default web applications use a locally installed PostgreSQL database. Review connection strings in appsettings.ini files to be able to run applications properly. +Each web application supports configuration override for development purposes. Add appsettings.DEV_DEFAULTS.ini with required configuration.

To run Designer application execute:

dotnet run --project src/UI/WB.UI.Designer/WB.UI.Designer.csproj
+

To run Web tester execute:

dotnet run --project src/UI/WB.UI.Designer/WB.UI.Designer.csproj
+

To run Headquarters application execute:

dotnet run --project src/UI/WB.UI.Headquarters.Core/WB.UI.Headquarters.csproj
+

to run Export service execute:

dotnet run --project src/Services/Export/WB.Services.Export.Host/WB.Services.Export.Host.csproj
+

In order to build android applications you can use following command:

# interviewer
+msbuild src/UI/Interviewer/WB.UI.Interviewer/WB.UI.Interviewer.csproj /restore /p:XamarinBuildDownloadAllowUnsecure=true /t:SignAndroidPackage
+# supervisor
+msbuild src/UI/Supervisor/WB.UI.Supervisor/WB.UI.Supervisor.csproj /restore /p:XamarinBuildDownloadAllowUnsecure=true /t:SignAndroidPackage
+# tester
+msbuild src/UI/Tester/WB.UI.Tester/WB.UI.Tester.csproj /restore /p:XamarinBuildDownloadAllowUnsecure=true /t:SignAndroidPackage
+

in the log there will be the location of compiled apks. However, in order to go to production you may need to create your own signature to sign apks.

\ No newline at end of file diff --git a/contributing/headquarters-overview/index.html b/contributing/headquarters-overview/index.html new file mode 100644 index 00000000..93ec7ded --- /dev/null +++ b/contributing/headquarters-overview/index.html @@ -0,0 +1,25 @@ +Headquarters application overview +

Headquarters application overview

July 1, 2021

Headquarters application for developers

Headquarters web application uses CQRS with event sourcing based architecture.

At a high level a change to the state of the system is done in the following sequence:

  1. Client creates a command that describes what kind of change is needed
  2. Infrastructure restores aggregate root from its event stream
  3. Aggregate root checks if command execution is allowed and executes it
  4. Events produced by aggregate root are published to denormalizers to build reports, lists and any other representations for end user

Sections below describe major aspects of Headquarters application that developers need to know about.

Web request lifecycle

Each request in system passes a set of steps that developer should know about:

Determine target workspace

WorkspaceMiddleware check web request URL and list of created workspaces. If rules match it wraps web request into an inner Autofac scope where IWorkspaceContextAccessor can be resolved and client code knows workspace details that its working inside. +When workspace middleware sets asp.net HttpContext.Request.Path and HttpContext.Request.PathBase. This allows for all other infrastructure like routing and link builders not to think about prefix for workspace name in the URL. +In order to make all database queries to be executed in proper workspace set of NHibernate ISessionFactory objects is stored in HqSessionFactoryFactory class. Each has its connection string SearchPath property configured to match workspace. +To have access to workspace information in all views global action filter (WorkspaceInfoFilter) sets it into ViewData dictionary.

Request transaction

UnitOfWorkActionFilter class begins transaction and commits it if no exception occurred during request execution. This transaction wraps calls that are made to data that is stored in IPlainStorage and IPlainKeyValueStorage.

Command execution

Command that is sent into CommandService to be handled by aggregate root. Each command is handled inside its own scope so that events and denormalized data is stored in one transaction and either committed fully or rolled back.

Command is executed by CommandExecutor class and can be of two types - regular and stateless. Difference between the two is that stateless command does not restore aggregate root state from events. Example of stateless command is interview deletion that occurs when questionnaire is deleted. In such case reading each interview events and restore state would be a waste of resources.

AggregateRoot state is restored from events by calling Apply methods one by one in sequence recorded in eventsequence column. Method mapped as a command handler (see usages of CommandRegistry class to see the mapping) is called on AggregateRoot.

Events produced by aggregate are published to denormalizers (good example of such is InterviewSummaryDenormalizer). If non of raised an exception during event handling command transaction is committed (UnitOfWorkInScopeExecutor is responsible for wrapping command in transaction).

Public API

Public api is the one that is intended to be used by any other software that should be integrated with survey solutions. This means that developer should not introduce breaking changes without necessity. Code that relates to public api located in WB.UI.Headquarters/Api/PublicApi folder. It consists of 2 parts, regular api controllers that are documented with swagger and graphql.

\ No newline at end of file diff --git a/contributing/index.html b/contributing/index.html new file mode 100644 index 00000000..b6862038 --- /dev/null +++ b/contributing/index.html @@ -0,0 +1,22 @@ +Contributing +

Contributing

Communication between system components

Survey Solutions has several components that communicate with each other at different stages of the survey lifecycle.

See glossary for interpretation of some of the terms, which may have different meaning in other systems.

Survey Solutions Components:

  • Interviewer (Android application)
  • Supervisor (Android application)
  • Tester (Android application)
  • Headquarters (HQ) (Web application)
  • WebTester (Web application)
  • Designer (Web application)

These components may communicate with other components of the system.

March 28, 2023

Project overview

Survey solutions currently has 2 solution files - one for build UI projects (src/WB.sln) and one for services (src/Services/WB.Services.sln).

Project dependency diagram for WB.sln:

From top to bottom:

WB.Core.SharedKernels.DataCollection.Portable

Project contains code that is common to the entire survey solutions. This is an assembly that is referenced from compiled assembly that contains enabling conditions and validation expressions. So for example if you need to add a reusable function to extend existing set this an assembly to extend.

July 1, 2021

Headquarters application overview

Headquarters application for developers

Headquarters web application uses CQRS with event sourcing based architecture.

At a high level a change to the state of the system is done in the following sequence:

  1. Client creates a command that describes what kind of change is needed
  2. Infrastructure restores aggregate root from its event stream
  3. Aggregate root checks if command execution is allowed and executes it
  4. Events produced by aggregate root are published to denormalizers to build reports, lists and any other representations for end user

Sections below describe major aspects of Headquarters application that developers need to know about.

July 1, 2021

Development environment

Development environment

In order to be able to buld Survey Solutions locally, you will need to install several prerequesties fist:

  • Install PostgreSQL.
  • Install LTS version of node JS (we currently use version 12).
  • Install yarn package manager.
  • Install latest version of asp.net core SDK.
  • Install Xamarin build tools for your platform.

Running locally

First you need to build javascript UI. It Can be done by running either .build.ps1, build.all.deps.bat or build_deps.sh scripts. This will build frontend components for Designer, Headquarters and Web Tester applications.

July 1, 2021

Adding new question type

Adding new question type

Adding a new question type requires changes in all existing applications in survey solutions.

When implementing it think about an answers to the following questions:

  • What CLR type can be used to represent an answer to your question type. Consider existing types
  • How do you see this question to be represented in export +– Is answer should be presented differently during preloading of assignments
  • How will it be represented on UI for interviewer, headquarters (answered read-only state)

Designer

Entry point is enum QuestionType. To add new entry here or not depends on how much your new question type is different from any of the existing types. +In order to be able to use answer to a question in questionnaire expressions implement a type conversion in QuestionTypeToCSharpTypeMapper. You should always choose a type that can have a null value in it.

July 1, 2021
\ No newline at end of file diff --git a/contributing/page/1/index.html b/contributing/page/1/index.html new file mode 100644 index 00000000..776a49ad --- /dev/null +++ b/contributing/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/contributing/ + \ No newline at end of file diff --git a/contributing/project-overview/images/diagram.png b/contributing/project-overview/images/diagram.png new file mode 100644 index 00000000..9a653eba Binary files /dev/null and b/contributing/project-overview/images/diagram.png differ diff --git a/contributing/project-overview/images/diagram_hu2714195589660663731.png b/contributing/project-overview/images/diagram_hu2714195589660663731.png new file mode 100644 index 00000000..6957155a Binary files /dev/null and b/contributing/project-overview/images/diagram_hu2714195589660663731.png differ diff --git a/contributing/project-overview/index.html b/contributing/project-overview/index.html new file mode 100644 index 00000000..2223f5ca --- /dev/null +++ b/contributing/project-overview/index.html @@ -0,0 +1,22 @@ +Project overview +

Project overview

July 1, 2021

Survey solutions currently has 2 solution files - one for build UI projects (src/WB.sln) and one for services (src/Services/WB.Services.sln).

Project dependency diagram for WB.sln:

From top to bottom:

WB.Core.SharedKernels.DataCollection.Portable

Project contains code that is common to the entire survey solutions. This is an assembly that is referenced from compiled assembly that contains enabling conditions and validation expressions. So for example if you need to add a reusable function to extend existing set this an assembly to extend.

WB.Core.SharedKernels.Questionnaire

Since questionnaire structure is reused throughout all of the applications in the system this is also a core component that is referenced from all other applications. Bare questionnaire is stored in it. QuestionnaireDocument class is the one that specifies JSON structure of questionnaire.

WB.Core.Infrastructure

Survey solutions uses CQRS based architecture. This project has helper classes to support this in all other applications.

WB.Core.SharedKernels.DataCollection

Module contains common code that relates to actual data collection process that is the same for web and tablet. Interview and StatefulInterview entities are located in this project that implement the interview logic. Historically Interview was restored from event stream for each answer, but once stream sizes got bigger StatefulInterview took its place. Its kept in memory between requests and can quickly return current interview state.

WB.Infrastructure.Native

Infrastructure code that is dedicated to handling asp.net web site related tasks. For example generic classes for monitoring implementation that is common for Designer and Headquarters applications is located here.

WB.Core.BoundedContexts.Designer

All not related to UI logic of designer application is here. Templates that are implementing classes for validation conditions and enabling conditions, questionnaire validation logic (QuestionnaireVerifier) located in this assembly.

WB.Core.BoundedContexts.Headquarters

Assembly to store all survey management related logic. Workspace management, user access, questionnaire import from designer etc.

WB.Core.SharedKernels.Enumerator

Shared code for Interviewer and Supervisor android applications. Mostly contains view models for interview handling. Also contains DTOs for synchronization between applications using Google Nearby Communications

WB.UI.Interviewer, WB.UI.Supervisor, WB.UI.Tester

Xamarin.Android applications that are built using MvvmCross library.

\ No newline at end of file diff --git a/css/all.css b/css/all.css new file mode 100644 index 00000000..741a8869 --- /dev/null +++ b/css/all.css @@ -0,0 +1,822 @@ +/* Sticky footer styles +-------------------------------------------------- */ +html { + height: 100%; +} +body { + /* Margin bottom by footer height */ + padding-bottom: 70px; + font: 14px/16px "Roboto"; + min-height: 100%; + position: relative; + min-width: 380px; +} +.footer { + height: 70px; + background-color: #f1f2f3; + position: absolute; + bottom: 0; + left: 0; + width: 100%; +} +.container{ + max-width: 1160px; +} +.btn-search span, +.tutorials, +.img-container:before{ + -webkit-transition: all 0.2s linear; + -moz-transition: all 0.2s linear; + -ms-transition: all 0.2s linear; + -o-transition: all 0.2s linear; + transition: all 0.2s linear; +} +header{ + background: url("../img/small-header.jpg"), #B0C4DE no-repeat 100% 420px; + background: url("../img/small-header.jpg") no-repeat 0 0, -webkit-linear-gradient(left, #B0C4DE, #B0C4DE) no-repeat; + background: url("../img/small-header.jpg") no-repeat 0 0, -moz-linear-gradient(left, #B0C4DE, #B0C4DE) no-repeat; + background: url("../img/small-header.jpg") no-repeat 0 0, -ms-linear-gradient(left, #B0C4DE, #B0C4DE) no-repeat; + background: url("../img/small-header.jpg") no-repeat 0 0, -o-linear-gradient(left, #B0C4DE, #B0C4DE) no-repeat; + background: url("../img/small-header.jpg") no-repeat 0 0, linear-gradient(to right, #B0C4DE, #B0C4DE) no-repeat; + background-repeat: no-repeat; + background-position: top center; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; +} +h3, .h3{ + font-weight: 400; +} +.index-page header{ + background: url("../img/header.jpg"), #B0C4DE no-repeat 100% 420px; + background: url("../img/header.jpg") no-repeat 0 0, -webkit-linear-gradient(left, #B0C4DE, #B0C4DE) no-repeat; + background: url("../img/header.jpg") no-repeat 0 0, -moz-linear-gradient(left, #B0C4DE, #B0C4DE) no-repeat; + background: url("../img/header.jpg") no-repeat 0 0, -ms-linear-gradient(left, #B0C4DE, #B0C4DE) no-repeat; + background: url("../img/header.jpg") no-repeat 0 0, -o-linear-gradient(left, #B0C4DE, #B0C4DE) no-repeat; + background: url("../img/header.jpg") no-repeat 0 0, linear-gradient(to right, #B0C4DE, #B0C4DE) no-repeat; + background-size: 100% 100%; + padding: 120px 0 0; + margin-bottom: 40px; + background-position: center center; + background-size: cover; +} +.index-page .navbar-brand{ + font-size: 27px; + line-height: 29px; +} +.index-page .navbar-text { + font: 24px/26px "Roboto"; + font-weight: 300; + max-width: 260px; + border-left: 1px solid #fff; +} +.navbar-brand{ + font: 22px/24px "Roboto"; + font-weight: 700; + letter-spacing: 1px; +} +.navbar-text { + font: 20px/22px "Roboto"; + font-weight: 300; + max-width: 200px; + border-left: 1px solid #fff; +} +.navbar-text:hover, .navbar-text:focus{ + text-decoration: none; +} +.index-page .form-inline .search{ + width: 100%; +} +.form-inline .search{ + width: 100%; + background: -moz-linear-gradient(to right, rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 1) 100%); + background: -webkit-linear-gradient(to right, rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 1) 100%); + background: linear-gradient(to right, rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 1) 100%); + border-radius: 7px; +} +.search input{ + border: none; + border-radius: 7px; + background: transparent; + font: 16px/18px "Roboto"; + font-weight: 500; + padding: 5px 50px 5px 20px; + letter-spacing: 1.2px; + box-shadow: none; + height: 60px; + display: inline-block; + color: #003550; +} +.search input::-webkit-search-cancel-button { + display: none; +} +.search input::-ms-clear { + display: none; +} +.search:before{ + position: absolute; + right: 15px; + top: 18px; + display: block; + content: ""; + background-image: url("../img/Search_button.png") !important; + background-repeat: no-repeat; + background-position: 100% 0; + opacity: 0.3; + width: 26px; + height: 26px; + z-index: 5; +} +.search:hover::before, .search:focus::before, .search:active::before{ + opacity: 0.8; +} +.search input::placeholder{ + color: #003550; + letter-spacing: 1.2px; +} +/* .btn-search{ + background-color: transparent; + border-color: transparent; + border-top-right-radius: 7px; + border-bottom-right-radius: 7px; + padding: 0 15px; +} +.btn-search span{ + vertical-align: middle; + display: inline-block; + background-image: url("../img/Search_button.png") !important; + background-repeat: no-repeat; + opacity: 0.3; + width: 26px; + height: 26px; + +} +.btn-search:hover span, .btn-search:focus span, .btn-search:active span{ + opacity: 1; +} */ +.algolia-autocomplete{ + /* flex: 1 1 auto !important; + display: flex !important; */ + width: 100%; +} +.algolia-autocomplete .aa-hint { + color: #999; +} +.algolia-autocomplete .aa-dropdown-menu{ + background-color: #fff; + border-radius: 0.25rem; + margin-top: 7px; + padding: 0; + border: 1px solid #81ACD9; +} +.algolia-autocomplete .aa-dropdown-menu strong{ + background-color: rgba(255, 255, 224, 0.6); +} +.algolia-autocomplete .aa-dropdown-menu .aa-suggestion { + cursor: pointer; +} +.search-result-block:active, +.search-result-block:hover, +.search-result-block:focus{ + background-color: rgb(231, 231, 231); +} +.algolia-autocomplete .aa-dropdown-menu .aa-suggestion.aa-cursor { + background-color: rgb(231, 231, 231);; +} +.section-name.interviewer{ + background-color: #17a2b8; +} + +.section-name.headquarters{ + background-color: #28a745; +} + +.section-name.supervisor{ + background-color: #ffc107; +} + +.section-name.questionnaire-designer{ + background-color: #81ACD9; +} + +.section-name{ + font-size: 10px; + line-height: 12px; + background-color: #6c757d; +} +.short-summary{ + overflow: hidden; + text-overflow: ellipsis; + max-height: 32px; +} +.aa-dropdown-menu em{ + background-color: #B0C4DE; +} +.branding { + font-size: 0.8em; + margin: 0.4em 0.2em; +} +.branding img { + height: 0.8em; + margin-bottom: - 0.3em; +} + + +/* end search */ + +.information-block { + position: absolute; + top: 30px; + right: 0; + min-width: 400px; + + font: 16px/18px "Roboto"; +} +h3 a, +.section-title h3{ + display: inline-block; + color: #0e66d2; +} +.section h3 a, +.section .section-title h3{ + margin-bottom: 10px; + min-height: 65px; +} +h3 a:hover, +h3 a:focus, +h3 a:active, +.section .section-title:focus h3, +.section .section-title:hover h3, +.section .section-title:active h3{ + text-decoration: none; + color: #199400; +} +.section ul li{ + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +ul li{ + margin-bottom: 10px; + max-width: 100%; +} +ul li:last-child{ + margin-bottom: 0; +} +.section .counter, +.tutorial-link{ + font-size: 16px; + line-height: 18px; + color: #0e66d2; +} +.section .badge{ + background: none; + +} +.tutorials{ + position: relative; + width: 32px; + height: 25px; + border-radius: 50% / 10%; + background-color: #81ACD9; + margin-right: 10px; +} +.tutorials:before { + content: ''; + display: block; + position: absolute; + top: 10%; + bottom: 10%; + right: -5%; + left: -5%; + background-color: inherit; + border-radius: 5% / 50%; +} +.tutorials:after{ + content: ''; + display: block; + position: absolute; + top: 7px; + left: 11px; + width: 0; + height: 0; + border-top: 5px solid transparent; + border-left: 10px solid #fff; + border-bottom: 5px solid transparent; +} +.tutorial-link:hover .tutorials, .tutorial-link:focus .tutorials, .tutorial-link:active .tutorials { + background-color: #2472cb; +} +.img-container{ + overflow: hidden; + position: relative; +} +.img-container:before, .img-container:after { + display: block; + content: ""; + position: absolute; +} +.section:last-of-type .img-container:before, +.section:last-of-type .img-container:after{ + display: none; +} +.img-container:before { + width: calc(100% - 140px); + height: 2px; + top: 55%; + right: 10px; + background: -webkit-linear-gradient(left, #3f4040, #3f4040) no-repeat 100% 0, +-webkit-linear-gradient(left, #2f77d6, #2f77d6) no-repeat 100% 0; + background: -moz-linear-gradient(left, #3f4040, #3f4040) no-repeat 100% 0, +-moz-linear-gradient(left, #2f77d6, #2f77d6) no-repeat 100% 0; + background: -ms-linear-gradient(left, #3f4040, #3f4040) no-repeat 100% 0, +-ms-linear-gradient(left, #2f77d6, #2f77d6) no-repeat 100% 0; + background: -o-linear-gradient(left, #3f4040, #3f4040) no-repeat 100% 0, +-o-linear-gradient(left, #2f77d6, #2f77d6) no-repeat 100% 0; + background: linear-gradient(to right, #3f4040, #3f4040) no-repeat 100% 0, +linear-gradient(to right, #2f77d6, #2f77d6) no-repeat 100% 0; + background-size: 100% 2px; +} +.img-container:after { + color: #000; + width: 12px; + height: 12px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + border-right: 2px solid; + border-top: 2px solid; + top: 50%; + right: 3px; + -webkit-transition: all 0.05s linear 0.2s; + -moz-transition: all 0.05s linear 0.2s; + -ms-transition: all 0.05s linear 0.2s; + -o-transition: all 0.05s linear 0.2s; + transition: all 0.05s linear 0.2s; +} +.section-title:hover .img-container:before{ + background-size: 0 2px,100% 2px; +} +.section-title:hover .img-container:after{ + border-color: #2f77d6; +} +.img-container span { + height: 118px; +} +.designer-icon { + background: url("../img/designer.png") no-repeat; + width: 98px; +} +.hq-icon { + background: url("../img/hq.png") no-repeat; + width: 98px; +} +.supervisor-icon { + background: url("../img/Supervisor.png") no-repeat; + width: 118px; +} +.interviewer-icon { + background: url("../img/Interviewer.png") no-repeat; + width: 98px; +} +.footer ul li a{ + font-size: 16px; + line-height: 18px; + color: #0e66d2; +} +.contact-information{ + border-radius: 7px; + position: relative; +} +.footer .contact-information .contact-icon { + position: absolute; + display: block; + width: 97px; + height: 96px; + top: calc(50% - 48px); + right: 20px; + background: url("../img/contact.png") no-repeat; +} +#facebook, #youtube { + width: 35px; + height: 35px; + float: left; + margin-right: 15px; + border-radius: 100%; + font-family: 'Roboto', sans-serif; + text-align: center; + font-weight: bold; + border: 2px solid #457def; + line-height: 35px; + font-size: 25px; +} +#facebook:hover, #facebook:focus { + background-color: #457def; + color: #fff; + text-decoration: none; +} +#youtube:before { + display: block; + content: ""; + position: absolute; + background-color: #457def; + width: 23px; + height: 18px; + top: 7px; + left: 14%; + border-radius: 4px; +} +#youtube:after { + display: block; + content: ""; + position: absolute; + top: 11px; + left: 45%; + border-top: 5px solid transparent; + border-left: 7px solid #fff; + border-bottom: 5px solid transparent; +} +#youtube:hover, #youtube:focus { + border-color: #f60b31; +} +#youtube:hover::before, #youtube:focus::before { + background-color: #f60b31; +} +#youtube:after { + display: block; + content: ""; + position: absolute; + top: 11px; + left: 45%; + border-top: 5px solid transparent; + border-left: 7px solid #fff; + border-bottom: 5px solid transparent; +} +/* list */ +.page-title{ + border-bottom: 1px solid #DDD; +} +.page-title h2{ + font: 24px/26px "Roboto"; +} +.list_of_articles{ + max-width: 860px; +} +.article-short-view{ + margin-bottom: 20px; + +} +.article-short-view:last-of-type{ + margin-bottom: 30px; +} +.article-short-view:before{ + display: block; + position: absolute; + top: 5px; + left: 10px; + content: ""; + width: 30px; + height: 30px; + background: url("../img/DR-2017-folders-icons.png") no-repeat; + background-position: 0 -65px; +} +.article-short-view p{ + /* white-space: nowrap; */ + overflow: hidden; + text-overflow: ellipsis; + margin-bottom: 0.5rem; +} +.data{ + font: 11px/13px "Roboto"; + font-weight: 500; + text-transform: uppercase; + width: 150px; +} +.copyright{ + font-size: 12px; + line-height: 14px; +} +hr{ + margin: 10px 0; +} + +/* article content */ + +.article-content{ + font: 14px/18px "Roboto"; +} +.article-content ul li{ + margin-bottom: 5px; +} +.article-content img{ + max-width: 100%; + height: auto; + margin: 10px 0; +} +/* email us */ + +.new_email{ + max-width: 560px; +} + +code{ + display: inline-block; + background-color: #f1f1f1; + padding: 2px 4px; +} +pre { + background-color: #f1f1f1; + padding: 15px; +} + +/* responsive css */ + +@media (max-width: 1199.98px) { + + .information-block{ + right: 15px; + text-align: right; + } +} +@media (max-width: 991.98px) { + .index-page .navbar-text { + font-size: 24px; + line-height: 26px; + } + .search input::placeholder{ + font-size: 14px; + letter-spacing: 1px; + } + .section > h3 a{ + min-height: auto; + } + .footer .h3{ + font-size: 1.5rem; + } +} +@media (max-width: 767.98px) { + .index-page header{ + padding-top: 100px; + } + .index-page .navbar-brand { + margin-right: 0; + } + .index-page .navbar-text { + font-size: 20px; + line-height: 22px; + + } +} +@media (min-width: 576px){ + img.md-img{ + max-width: 550px; + } + img.sm-img{ + max-width: 400px; + } + img.lg-img{ + max-width: 800px; + } +} +@media (max-width: 576px) { + .index-page .navbar-text{ + max-width: 180px; + } + .information-block{ + font-size: 14px; + line-height: 16px; + } + .navbar-text { + font-size: 16px; + line-height: 18px; + } + .search input::placeholder{ + font-size: 12px; + } + .section .section-title h3{ + min-height: auto; + } + .footer .h3{ + font-size: 1rem; + } + .footer ul li a{ + font-size: 12px; + line-height: 14px; + } + .footer ul li{ + margin-bottom: 5px; + } +} + +.error_404{ + color: #1C77C6; +} + +/* Collapse */ +.card{ + border: transparent; +} +.card-header{ + background-color: transparent; +} +.card h3{ + font-size: 1.5rem; + line-height: 1.625rem; + margin-bottom: 0.375rem; +} +.card h3 + p{ + margin-bottom: 0.25rem; +} +.card .article-short-view p{ + white-space: nowrap; +} +.accordion .card:last-of-type .card-header{ + border-bottom: transparent; +} +.accordion .accordion{ + margin: 1.25rem 0 1.25rem 1.75rem; +} +.card .article-short-view{ + margin: 1.25rem 2.25rem 1.25rem 0.5rem; +} +.card-header .btn{ + font-size: 1.25rem; + line-height: 1.375rem; +} +.card-header .btn:hover, +.card-header .btn:focus, +.card-header .btn:active +{ + background-color: #f1f2f3; + text-decoration: none; +} +.card-header .btn:not(.collapsed){ + background-color: rgba(41, 193, 236, 0.4); + border-color: rgba(41, 193, 236, 0.4); + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +.card-header .btn:not(.collapsed):hover, +.card-header .btn:not(.collapsed):focus{ + background-color: rgba(6, 110, 203, 0.4); +} +.opened-list{ + border: 1px solid transparent; +} +.opened-list.show{ + border-color: rgba(41, 193, 236, 0.4); + border-top-color: transparent; +} +.article-view .card-header .btn:not(.collapsed){ + background-color: rgba(227,229,231,0.7); + border-color: rgba(227,229,231,0.7); +} +.article-view .opened-list.show{ + border-color: rgba(227,229,231,0.7);; +} +.circle { + height: 32px; + width: 32px; +} + +.circle .background { + fill: transparent; + stroke-dasharray: 300; + stroke-dashoffset: 300; + stroke: #fff; + transform-origin: 50% 50%; + transform: rotate(-270deg); + transition: all 800ms ease; +} +.circle .foreground { + fill: transparent; + stroke-dasharray: 300; + stroke-dashoffset: 300; + stroke: rgb(6, 110, 203); + transform-origin: 50% 50%; + transform: rotate(-270deg); + transition: all 800ms ease; +} +.circle .line { + stroke-width: 2; + stroke: rgb(6, 110, 203); + transform-origin: 50% 50%; + transition: all 500ms ease; +} +.circle .line2 { + transform: rotate(-90deg); +} +.card-header .btn.collapsed:hover .circle .background, +.card-header .btn.collapsed:focus .circle .background, +.card-header .btn.collapsed:active .circle .background +{ + stroke: transparent; +} +.card-header .btn.collapsed:hover .circle .foreground, +.card-header .btn.collapsed:focus .circle .foreground, +.card-header .btn.collapsed:active .circle .foreground +{ + stroke-dashoffset: 0; + transform: rotate(-90deg); +} +.card-header .btn:not(.collapsed) .foreground, +.card-header .btn:not(.collapsed):hover .foreground, +.card-header .btn:not(.collapsed):focus .foreground, +.card-header .btn:not(.collapsed):active .foreground{ + stroke: transparent; +} +.card-header .btn:not(.collapsed) .background, +.card-header .btn:not(.collapsed):hover .background, +.card-header .btn:not(.collapsed):focus .background, +.card-header .btn:not(.collapsed):active .background{ + stroke: #fff; + stroke-dashoffset: 0; + transform: rotate(-90deg); +} +.card-header .btn:not(.collapsed) .line { + stroke: #fff; +} +.card-header .btn:not(.collapsed) .line { + transform: rotate(180deg); +} +.card-header .btn:not(.collapsed) .line2 { + transform: rotate(0); +} +.title-sub-section{ + line-height: 2rem; + text-overflow: ellipsis; + width: calc(100% - 42px); + overflow: hidden; + /* white-space: nowrap; */ +} +.title-sub-section *{ + margin-bottom: 0; +} +.title-sub-section .small{ + font-size: 12px; + line-height: 14px; +} +.release-notes-short-view ul{ + list-style: none; +} +.release-notes-short-view ul li{ + position: relative; +} +.release-notes-short-view ul li:before{ + position: absolute; + display: block; + content: "\2713"; + color: #007bff; + top: 0; + left: -20px; +} + +.note, +.warning { + + border-left-width: 4px; + border-left-style: solid; + position: relative; + border-color: #0594cb; + + display: block; +} +.note #exclamation-icon, +.warning #exclamation-icon { + + fill: #0594cb; + position: absolute; + top: 35%; + left: -12px; +} + +.admonition-content{ + display:block; + margin:0; + padding:.125em 1em; + margin-top:2em; + margin-bottom:2em; + overflow-x:auto; + background-color:rgba(0,0,0,.05) +} + +.table-hover tbody tr:hover { + background-color: rgba(150, 213, 238, .75) !important; +} + +blockquote { + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: left; + box-sizing: border-box; + background: #f9f9f9; + border-left: 10px solid #ccc; + margin: 1.5em 10px; + padding: 1em 10px .1em 10px; + quotes: "\201C""\201D""\2018""\2019"; +} \ No newline at end of file diff --git a/css/markup-specific.css b/css/markup-specific.css new file mode 100644 index 00000000..db526394 --- /dev/null +++ b/css/markup-specific.css @@ -0,0 +1,1437 @@ +/* Colors */ +/* Changed default value */ +/* Indent for filters */ +.signed-name span, .selection-box .btn, .selection-box a, .export-types .data .table-data .not-generated, .export-types .data .table-data .no-data-available { + font: 12px/14px "TrebuchetMSBold"; + text-transform: uppercase; + letter-spacing: 0.13em; } + +.export-types .data .table-data-header { + color: #a6a8a9; + font: 11px/13px "TrebuchetMSBold"; + letter-spacing: 1px; + text-transform: uppercase; } + +.export-types .data .table-data.not-generated-data .cell-data .download, .export-types .data .table-data.not-generated-data .cell-data.last-generated, .export-types .data .table-data.not-generated-data .cell-data.size, .export-types .data .table-data.not-generated-data .cell-data.min-view, .export-types .data .table-data.not-generated-data .cell-data.progress-block, .export-types .data .table-data.generated-data .cell-data.progress-block, .export-types .data .table-data.generated-data .cell-data .not-generated, .export-types .data .table-data.generation-in-progress .cell-data.download-block, .export-types .data .table-data.generation-in-progress .cell-data.last-generated, .export-types .data .table-data.generation-in-progress .cell-data.size, .export-types .data .table-data.generation-in-progress .cell-data.min-view, .export-types .data .table-data.generation-in-progress .cell-data .not-generated { + opacity: 0; + display: none; } + +.panel-table { + border-radius: 0; + margin-bottom: 0; } + +.panel-table { + position: fixed; + bottom: 0; + left: 0; + right: 0; + background-color: #cad1d7; + z-index: 5; + padding: 0 30px; } + .panel-table label { + font-size: 16px; + line-height: 18px; + color: #fff; + padding-right: 45px; + margin-bottom: 10px !important; } + .panel-table label .tick { + margin-right: 20px; } + .panel-table .panel-body { + padding: 10px; } + .panel-table .panel-body .btn { + margin-right: 10px; } + .panel-table .panel-body .btn.btn-link { + padding: 0; } + +@media (max-width: 880px) { + .panel-table { + padding: 0 10px; } + .panel-table label { + font-size: 12px; + line-height: 14px; + padding-right: 10px; } + .panel-table label .tick { + margin-right: 10px; } + .panel-table .panel-body .btn { + margin-bottom: 10px; + padding: 5px; + font-size: 10px; } + .panel-table .panel-body .btn.reject { + padding-top: 3px; + padding-bottom: 3px; } + .panel-table .panel-body .btn:last-of-type { + margin-bottom: 0; } } +.questionnaire-statistics { + margin-bottom: 30px; } + .questionnaire-statistics ul { + font: 14px/16px "Trebuchet MS", Helvetica, sans-serif; + list-style: none; + padding: 0; + overflow: hidden; } + .questionnaire-statistics ul li { + margin-bottom: 6px; } + .questionnaire-statistics ul li a { + font-style: italic; + text-decoration: underline; } + .questionnaire-statistics ul li a:hover, .questionnaire-statistics ul li a:focus { + text-decoration: none; } + +.import-questionnaire-form .form-group { + margin-bottom: 0; } +.import-questionnaire-form .questionnaire-versioning { + margin-bottom: 50px; + margin-top: 15px; } + +.flex-block { + height: 100%; + display: flex; + flex-direction: column; } + .flex-block .block { + display: flex; + flex-grow: 1; + flex-direction: column; } + +.signed-name { + width: 35%; + font-size: 13px; + line-height: 15px; + margin: 30px 15px 0 0; + float: right; + text-align: right; } + .signed-name span { + color: #2a81cb; } + .signed-name a { + color: #a6a8a9; + text-decoration: underline; } + .signed-name a:hover, .signed-name a:focus { + text-decoration: none; } + +.import-interview tr td, .import-interview tr th { + width: 10%; } +.import-interview tr .size { + width: 6%; } +.import-interview thead tr { + border-bottom: 2px solid #ddd; } + .import-interview thead tr th { + padding: 8px 10px; } + .import-interview thead tr th .search { + top: -5px; } + .import-interview thead tr th:after, .import-interview thead tr th.sorting::after { + top: 10px; } +.import-interview thead th.column-questionnaire-title { + width: 44%; } +.import-interview tbody { + border-bottom: 2px solid #ddd; + font: 13px/15px Georgia, Times, "Times New Roman", serif; + font-style: italic; } + .import-interview tbody tr { + border-bottom: 1px solid #ddd; + border-bottom: 1px solid #ddd; } + .import-interview tbody tr:hover td:first-child a, .import-interview tbody tr:focus td:first-child a { + color: #000; } + .import-interview tbody tr:hover td.shared-with, .import-interview tbody tr:focus td.shared-with { + color: #3f3f3f; } + .import-interview tbody tr:hover td span, .import-interview tbody tr:focus td span { + color: #3f3f3f; } + .import-interview tbody tr:hover .parameters span, .import-interview tbody tr:focus .parameters span { + color: #a6a8a9; } + .import-interview tbody tr td { + padding: 8px 10px; } + .import-interview tbody tr td.shared-with { + color: #dbdfe2; } + .import-interview tbody tr td.shared-with > span { + color: #3f3f3f; } + .import-interview tbody tr td.shared-with > span span { + color: #a6a8a9; } + .import-interview tbody tr td:first-child { + width: 44%; + font: 18px/20px "RobotoRegular"; } + .import-interview tbody .current-user, .import-interview tbody .changed-recently { + color: #22c015; } + .import-interview tbody .parameters { + font-style: normal; } + +.import-wrapper .dataTables_wrapper .dataTables_paginate > .paginate_button { + color: #3ca21a; } + .import-wrapper .dataTables_wrapper .dataTables_paginate > .paginate_button.disabled, .import-wrapper .dataTables_wrapper .dataTables_paginate > .paginate_button.disabled:hover, .import-wrapper .dataTables_wrapper .dataTables_paginate > .paginate_button.disabled:active { + color: #a6a8a9; + text-decoration: none; + cursor: not-allowed; } +.import-wrapper .dataTables_wrapper .dataTables_paginate { + padding-left: 10px; } + .import-wrapper .dataTables_wrapper .dataTables_paginate > span { + left: 8px; } +.import-wrapper .dataTables_wrapper { + position: relative; } + .import-wrapper .dataTables_wrapper .dataTables_filter { + position: absolute; + top: -10px; + right: auto; + left: 0; } + .import-wrapper .dataTables_wrapper .dataTables_filter label:after { + position: absolute; + top: 15px; + right: auto; + left: 10px; } + .import-wrapper .dataTables_wrapper .dataTables_filter label input { + margin-right: 0; + margin-left: 40px; } + +@media only screen and (max-width: 1450px) { + .import-wrapper .dataTables_wrapper .dataTables_filter { + top: -15px; } + .import-wrapper .search { + top: -10px; } + .import-wrapper .active-search .search { + top: -12px; } + .import-wrapper .active-search .search .btn-search { + top: -3px; } } +@media (max-width: 1210px) { + .import-interview tr { + -webkit-transition: all 0.1s linear 0s; + -moz-transition: all 0.1s linear 0s; + -ms-transition: all 0.1s linear 0s; + -o-transition: all 0.1s linear 0s; + transition: all 0.1s linear 0s; + height: 35px; } + .import-interview tr td, .import-interview tr th { + width: 13%; } } +@media (max-width: 880px) { + .import-wrapper .dataTables_wrapper .dataTables_filter { + text-align: left; + left: 0; + position: relative; + top: -5px; } + .import-wrapper .dataTables_wrapper .dataTables_filter label.active input { + margin-right: 0; } + + .signed-name { + width: 100%; + float: none; + margin: 0; + padding: 0 3%; } + + .signed-name { + margin-bottom: 20px; } + + .import-interview tbody tr td:first-child { + font-size: 12px; + line-height: 14px; + width: 70%; } + + .import-wrapper .table tr td, .import-wrapper .table tr th { + width: 30%; } + + .import-questionnaire-form .questionnaire-versioning, .import-questionnaire-form .flex-row { + margin-bottom: 0; } } +main .flex-row { + margin-bottom: 30px; } + +.selection-box { + background-color: #ececec; + border-radius: 5px; + padding: 30px; + margin-right: 20px; + margin-left: -30px; } + .selection-box p { + font: 13px/15px "RobotoRegular"; + margin-bottom: 0; } + .selection-box .block { + margin-bottom: 25px; } + +@media (max-width: 1210px) { + .selection-box { + margin-left: 0; + margin-right: -15px; } } +@media (max-width: 880px) { + .selection-box { + margin-right: 0; + margin-bottom: 15px; } } +.text-page { + font: 14px/16px "RobotoRegular"; } + +.prefilled-data-info > a { + display: block; + margin-bottom: 30px; } + .prefilled-data-info > a.btn-link { + display: inline-block; + padding-left: 0; + margin-bottom: 0; } +.prefilled-data-info ul { + margin-bottom: 20px; + font-family: "RobotoBold"; } + .prefilled-data-info ul li { + margin: 5px 0; } +.prefilled-data-info dl { + margin-bottom: 0; + margin-left: 30px; } + .prefilled-data-info dl dd { + margin: 5px 0; } + .prefilled-data-info dl dd:last-of-type { + margin: 0; } + +.selection-box a { + display: block; + margin-bottom: 25px; + cursor: pointer; } + +.btn-file input { + display: none; } + +.action-buttons { + margin-top: 40px; + width: 100%; + overflow: hidden; } + .action-buttons .btn { + padding: 8px 12px; + margin: 0; + margin-right: 5px; } + .action-buttons .btn.cancel-uploading { + float: left; } + .action-buttons .btn + .back-link { + margin-left: 25px; } + +.import-progress { + margin-bottom: 40px; + margin-top: 0; } + .import-progress p { + margin: 0; } + +.error-block:last-of-type { + margin-bottom: 30px; } +.error-block h5 { + margin: 20px 0 5px; } +.error-block p { + margin: 3px 0; } + +.action-block.preloading-done-with-errors h4, .action-block.preloading-done-with-errors .import-progress { + margin-bottom: 10px; } +.action-block.preloading-done-with-errors > a { + font: 14px/16px "TrebuchetMSBold"; + display: inline-block; + width: 38%; } + +.uploading-verifying, .verification-failed, +.verification-complete, .verification-complete-choose-supervisor, +.processing-interview, .preloading-done, .preloading-done-with-errors { + display: none; } + .uploading-verifying.active-preloading, .verification-failed.active-preloading, + .verification-complete.active-preloading, .verification-complete-choose-supervisor.active-preloading, + .processing-interview.active-preloading, .preloading-done.active-preloading, .preloading-done-with-errors.active-preloading { + display: block; } + +.verification-complete-choose-supervisor .input-group .typeahead { + width: 100%; + border-color: #dbdfe2; } + +.progress-wrapper-block { + font: 14px/16px "RobotoRegular"; + border: 2px solid #dbdfe2; + border-radius: 10px; + margin-left: -15px; + padding: 15px; } + .progress-wrapper-block .progress { + margin-bottom: 10px; + background-color: #ececec; } + .progress-wrapper-block .progress .progress-bar-info { + background-color: #c8cbce; } + +@media (max-width: 880px) { + .prefilled-data-info { + margin-bottom: 0; } } +@media (max-width: 481px) { + .action-block .btn-input { + display: inline-block; } + .action-block .back-link { + margin: 30px 0 0; } + .action-block .btn-input .dropdown-toggle { + width: 250px; } + .action-block.preloading-done-with-errors > a { + width: 60%; } + .action-block .btn + .back-link { + margin-left: 10px; } } +@media only screen and (max-width: 400px) { + .action-block .action-buttons .btn:last-of-type { + margin-right: 5px; } } +.export-types { + padding: 0 0 0 30px; + position: relative; + margin-left: 219px; + max-width: 900px; + -webkit-transition: margin 0.3s linear 0s; + -moz-transition: margin 0.3s linear 0s; + -ms-transition: margin 0.3s linear 0s; + -o-transition: margin 0.3s linear 0s; + transition: margin 0.3s linear 0s; + background-color: #fff; } + .export-types .table-data { + position: relative; } + .export-types .format-data { + position: static; } + .export-types .format-data:before { + background-position: 10px -200px; + left: 20px; } + .export-types .format-data.separated-data:before { + background-position: 10px -120px; } + .export-types .format-data.xlsx:before { + background-position: 10px -78px; } + .export-types .format-data.stata:before { + background-position: 10px 4px; } + .export-types .format-data.spss:before { + background-position: 0px -38px; } + .export-types .format-data.zip:before { + background-position: 5px -165px; } + .export-types .data { + width: 100%; + margin-bottom: 30px; } + .export-types .data h3 { + margin-left: 15px; } + .export-types .data p { + font-size: 14px; + line-height: 16px; + font-family: inherit; + margin-bottom: 0; + margin-left: 15px; } + .export-types .data p span { + display: block; } + .export-types .data p a { + color: #3f3f3f; + text-decoration: underline; } + .export-types .data p a:hover, .export-types .data p a:focus { + text-decoration: none; } + .export-types .data.metadata .table-data-header { + height: 32px; } + .export-types .data .table-data-header { + min-height: 32px; + padding-left: 18px; + overflow: hidden; + width: 100%; + display: table; } + .export-types .data .table-data-header div { + float: right; + padding: 5px 10px 13px; } + .export-types .data .table-data { + padding-left: 18px; + display: table; + width: 100%; + height: 60px; } + .export-types .data .table-data .cell-data { + display: table-cell; + vertical-align: middle; + padding: 0 20px; } + .export-types .data .table-data .cell-data .not-generated { + display: inline-block; } + .export-types .data .table-data .cell-data.download-block { + padding: 0 5px; } + .export-types .data .table-data .min-view { + display: none; } + .export-types .data .table-data:nth-of-type(2n) { + background-color: #ececec; } + .export-types .data .table-data .format-data { + width: 34%; + padding-left: 80px; } + .export-types .data .table-data .format-data span { + color: #2a81cb; } + .export-types .data .table-data .btn { + margin: 5px; } + .export-types .data .table-data .not-generated, .export-types .data .table-data .no-data-available { + color: #a6a8a9; } + .export-types .data .table-data .not-generated { + padding: 0 20px; } + .export-types .data .table-data .no-data-available { + display: none; + padding: 0 10px; } + .export-types .data .size, .export-types .data .last-generated, .export-types .data .min-view { + color: #a6a8a9; + font: 12px/14px "TrebuchetMSBold"; } + .export-types .data .size { + width: 16%; } + .export-types .data .last-generated { + width: 19%; + border-left: 1px solid #f2f4f4; + border-right: 1px solid #f2f4f4; } + +.footer { + -webkit-transition: padding 0.3s linear 0s; + -moz-transition: padding 0.3s linear 0s; + -ms-transition: padding 0.3s linear 0s; + -o-transition: padding 0.3s linear 0s; + transition: padding 0.3s linear 0s; } + +.fullscreen-hidden-filters .export-types { + padding: 0 30px 0; + margin-left: 219px; } + +@media only screen and (max-width: 1300px) { + .fullscreen-hidden-filters .export-types { + margin-left: 0; + padding-left: 12px; } } +@media (max-width: 1210px) { + .fullscreen-hidden-filters .export-types { + margin-left: 0; + padding-left: 12px; } + + .export-types { + padding: 0 10px 0 30px; + margin-left: 262px; } + .export-types .size, .export-types .last-generated { + display: none; } + .export-types .data .table-data-header { + min-height: auto; } + .export-types .data.metadata .table-data-header { + height: auto; } + .export-types .data .table-data .min-view { + display: table-cell; + width: 35%; + padding: 0 5px; } + .export-types .data .table-data .min-view div { + padding: 8px 0; } + .export-types .data .table-data .size, .export-types .data .table-data .last-generated { + display: none; } + .export-types .data .table-data .format-data { + width: 35%; + padding-left: 75px; } + .export-types .data .table-data .not-generated { + padding: 0 10px; } + .export-types .data .table-data .progress-information { + width: 80%; } + .export-types .data p { + margin-bottom: 15px; } + .export-types .data.metadata .container-data { + padding-top: 0; } + + .fullscreen-hidden-filters .export-types { + padding: 0 10px 0; + width: 100%; } + .fullscreen-hidden-filters .export-types .size, .fullscreen-hidden-filters .export-types .last-generated { + display: table-cell; } + .fullscreen-hidden-filters .export-types .data .table-data .min-view { + display: none; + width: 40%; + padding: 0 5px; } + .fullscreen-hidden-filters .export-types .data .table-data .min-view div { + padding: 8px 0; } + .fullscreen-hidden-filters .export-types .data .table-data .size, .fullscreen-hidden-filters .export-types .data .table-data .last-generated { + display: table-cell; } + .fullscreen-hidden-filters .export-types .data .table-data .format-data { + width: 34%; + padding-left: 75px; } + .fullscreen-hidden-filters .export-types .data .table-data .last-generated { + width: 19%; } + .fullscreen-hidden-filters .export-types .data .table-data .not-generated { + padding: 0 10px; } + .fullscreen-hidden-filters .export-types .data p { + margin-bottom: 15px; } } +@media (max-width: 880px) { + .export-types { + margin-left: 0; + padding: 0 10px 0; } + .export-types .format-data:before { + left: 10px; } + .export-types h2 { + margin-bottom: 25px; + font-size: 24px; + line-height: 26px; + font-family: inherit; } + .export-types .data .table-data { + padding: 0 10px; } + .export-types .data .table-data .cell-data, .export-types .data .table-data .not-generated { + padding: 0 5px; } + .export-types .data .table-data .cell-data.format-data, .export-types .data .table-data .not-generated.format-data { + padding-left: 75px; } + .export-types .data .table-data .progress-information { + width: 60%; } } +@media (max-width: 481px) { + .export-types { + padding-left: 5px; + padding-right: 5px; } + .export-types .data .table-data { + padding: 10px; + display: block; + height: auto; } + .export-types .data .table-data .cell-data { + text-align: center; + display: block; + margin-bottom: 15px; } + .export-types .data .table-data .cell-data .not-generated { + margin-top: 15px; } + .export-types .data .table-data .cell-data.size, .export-types .data .table-data .cell-data.last-generated { + display: none; } + .export-types .data .table-data .cell-data.format-data, .export-types .data .table-data .cell-data.min-view { + width: 100%; } + .export-types .data .table-data .cell-data.format-data { + padding: 50px 0 0; } + .export-types .data .table-data .cell-data.format-data:before { + left: calc(50% - 31px); + top: 15px; } + .export-types .data .table-data .cell-data.format-data.stata:before { + left: 45%; } } +.format-data { + padding-left: 80px; } + .format-data:before { + display: block; + position: absolute; + top: 0; + left: 0; + top: calc(50% - 21px); + width: 63px; + height: 41px; + content: ""; + background: url("../img/data-image.png") no-repeat; + background-size: 63px 234px; + background-position: 20px -200px; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + .format-data:before { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/data-image2k.png"); + background-size: 63px 234px; } } + .format-data.separated-data:before { + background-position: 20px -120px; } + .format-data.xlsx:before { + background-position: 20px -78px; } + .format-data.stata:before { + background-position: 28px 4px; } + .format-data.spss:before { + background-position: 0px -38px; } + .format-data.zip:before { + background-position: 15px -165px; } + +#questionnaires .title { + width: 40%; } + #questionnaires .title.td { + font-size: 18px; + line-height: 20px; } + #questionnaires .title.td a, #questionnaires .title.td span { + font-size: 18px; + line-height: 20px; } + +.context-menu-list { + padding: 5px; + border-radius: 0; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5), 6px 6px 0 rgba(0, 0, 0, 0.1); } + .context-menu-list .context-menu-item { + padding: 10px; } + .context-menu-list .context-menu-item.context-menu-hover { + background-color: #eff4f8; + color: #3f3f3f; } + .context-menu-list .context-menu-separator { + border-width: 2px; + border-color: #ccc; + margin-left: 5px; + margin-right: 5px; + padding: 0; } + +.main-information { + margin-left: 219px; + padding: 0 0 0 30px; + -webkit-transition: margin 0.3s linear 0s; + -moz-transition: margin 0.3s linear 0s; + -ms-transition: margin 0.3s linear 0s; + -o-transition: margin 0.3s linear 0s; + transition: margin 0.3s linear 0s; } + .main-information .panel-table { + left: 294px; + -webkit-transition: left 0.3s linear 0s; + -moz-transition: left 0.3s linear 0s; + -ms-transition: left 0.3s linear 0s; + -o-transition: left 0.3s linear 0s; + transition: left 0.3s linear 0s; } + +.fullscreen-hidden-filter .main-information { + margin-left: 219px; + padding: 0 0 0 30px; } + .fullscreen-hidden-filter .main-information .panel-table { + left: 294px; } + +.title-row .interviewer { + font-size: 18px; + line-height: 20px; } + .title-row .interviewer:before { + opacity: 0.8; + filter: alpha(opacity=80); + margin-right: 5px; + top: 0; } +.title-row span .interviewer { + color: #a6a8a9; } + .title-row span .interviewer:before { + opacity: 0.3; + filter: alpha(opacity=30); } + +.on-line { + color: #2fc507; } + .on-line:before { + content: ""; + display: inline-block; + width: 7px; + height: 7px; + border-radius: 100%; + background-color: #2fc507; + margin-right: 5px; } + +.map-report { + padding-bottom: 0; } + .map-report main .container-fluid { + padding-right: 15px; + padding-left: 15px; } + .map-report .main-information { + margin-left: 252px; } + +@media only screen and (max-width: 1300px) { + .map-report .fullscreen-hidden-filters .main-information { + margin-left: 0; + padding-left: 12px; } + + .fullscreen-hidden-filters .main-information { + margin-left: 0; + padding-left: 0; } + .fullscreen-hidden-filters .main-information .panel-table { + left: 12px; } } +@media (max-width: 1210px) { + .map-report .main-information { + padding-right: 0px; } + .map-report .fullscreen-hidden-filters .main-information { + margin-left: 0; } + + .main-information { + margin-left: 262px; + padding-right: 15px; } + .main-information .panel-table { + left: 294px; } + + .fullscreen-hidden-filters .main-information { + padding: 0 10px; + margin: 0; } + .fullscreen-hidden-filters .main-information .panel-table { + left: 12px; } } +@media (max-width: 880px) { + .map-report .main-information { + margin-left: 2px; } + + .main-information { + margin-left: 0; + padding: 0 10px; } + .main-information .panel-table { + left: 12px; } + + .fullscreen-hidden-filters .main-information { + display: none; } + .fullscreen-hidden-filters .main-information .panel-table { + z-index: 0; } } +@media (max-width: 481px) { + .map-report .main-information { + padding-top: 0; + margin-left: 7px; } + + .main-information { + padding: 10px 5px 0 5px; } + + .main-information #DataTables_Table_0_wrapper #DataTables_Table_0_filter { + left: 0; } } +.table-wrapper { + position: relative; } + .table-wrapper .wrapper-modal-dropdown { + position: absolute; + top: 8px; + right: -5px; + padding: 5px; } + .table-wrapper .wrapper-modal-dropdown .btn-strips { + z-index: 2; + background-color: #fff; } + .table-wrapper .wrapper-modal-dropdown .modal-dialog { + position: absolute; + top: -30px; + right: 0; } + .table-wrapper .wrapper-modal-dropdown .modal.in { + position: absolute; + overflow: visible; } + +.table-with-prefilled-column .prefield-column, .table-with-prefilled-column .spent-time, .table-with-prefilled-column .template, .table-with-prefilled-column .accepted-hq, .table-with-prefilled-column .census, .table-with-prefilled-column .number-rejected { + display: none; } +.table-with-prefilled-column td.visible, .table-with-prefilled-column th.visible { + display: table-cell; } +.table-with-prefilled-column td.prefield-column.first-identifying, .table-with-prefilled-column th.prefield-column.first-identifying { + border-left: 2px solid #2a81cb !important; } +.table-with-prefilled-column td.prefield-column.last-identifying, .table-with-prefilled-column th.prefield-column.last-identifying { + border-right: 2px solid #2a81cb !important; } +.table-with-prefilled-column tr:last-child td.prefield-column { + border-bottom: 2px solid #2a81cb !important; } +.table-with-prefilled-column th.prefield-column { + border-top: 2px solid #2a81cb !important; } + +th.prefield-column { + font: 12px/14px "Trebuchet MS", Helvetica, sans-serif; + text-transform: none; + font-weight: normal; + color: #2a81cb; } + +td.prefield-column { + font-style: italic; } + +.prefield-column { + max-width: 500px; } + +.interview-id { + min-width: 240px !important; + overflow: hidden; } + .interview-id .show-prefield-btn { + text-transform: none; + float: right; } + +.flags .flag { + color: #3f3f3f; } + .flags .flag:before { + background-position: 1px 0; } + .flags .flag:hover:before, .flags .flag:focus:before, .flags .flag:active:before { + background-position: -18px 0; } + +td.errors { + color: #e74924; } + +.table tbody tr td span.interviewer { + color: #3f3f3f; } + +.table-wrapper .table td.enumerator { + padding-top: 10px; + padding-bottom: 10px; } + +.table tbody tr:hover td.not-synced-assign +a, .table tbody tr:focus td.not-synced-assign +a, .table tbody tr:active td.not-synced-assign +a { + color: #3f3f3f; } +.table tbody tr td.not-synced-assign { + font-style: italic; } + .table tbody tr td.not-synced-assign a { + color: #a6a8a9; } + +.comment-icon { + display: block; + width: 25px; + height: 23px; + background: transparent url("../img/comments-icon-1x.png") no-repeat; + background-size: 32px 64px; + background-position: -4px -40px; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + .comment-icon { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/comments-icon-2x.png"); + background-size: 32px 64px; } } + .comment-icon.responded { + background-position: -4px -4px; } + +.enumerator .interviewer:before, .enumerator .supervisor:before { + margin-right: 10px; } + +.statuses table tr:last-child td { + font-weight: bold !important; } + +.enumerators { + position: relative; } + .enumerators .table-wrapper { + margin-left: -15px; + max-width: 1210px; } + +.interviews-information { + margin-bottom: 40px; } + .interviews-information .number-information { + color: #3f3f3f; + float: left; + padding-right: 15px; + font-family: "RobotoLight"; + min-width: 110px; + cursor: default; } + .interviews-information .number-information .amount-of-questionnaires, + .interviews-information .number-information .description { + -webkit-transition: all 0.2s linear 0s; + -moz-transition: all 0.2s linear 0s; + -ms-transition: all 0.2s linear 0s; + -o-transition: all 0.2s linear 0s; + transition: all 0.2s linear 0s; } + .interviews-information .number-information .amount-of-questionnaires { + padding-right: 10px; + border-bottom: 2px solid #f0f0f0; + font-size: 60px; + line-height: 62px; } + .interviews-information .number-information .description { + padding-top: 7px; + text-transform: uppercase; + font: 10px/12px "RobotoRegular"; + width: 100px; } + .interviews-information .number-information:hover, .interviews-information .number-information:focus, .interviews-information .number-information:active, .interviews-information .number-information:active:focus { + text-decoration: none; + color: #2a81cb; } + .interviews-information .number-information:hover .amount-of-questionnaires, .interviews-information .number-information:focus .amount-of-questionnaires, .interviews-information .number-information:active .amount-of-questionnaires, .interviews-information .number-information:active:focus .amount-of-questionnaires { + border-color: #2a81cb; } + +.connection-statistics { + margin-bottom: 30px; + font-size: 14px; + line-height: 16px; + font-family: inherit; } + .connection-statistics h3 { + margin-bottom: 20px; } + .connection-statistics ul { + margin-bottom: 15px; } + .connection-statistics ul li { + margin-bottom: 3px; } + .connection-statistics ul li::last-child { + margin-bottom: 0; } + .connection-statistics .detailed-statistics { + display: block; } + .connection-statistics .detailed-statistics + a { + margin-top: 15px; } + +.detailed-statistics-block { + display: block; } + .detailed-statistics-block td { + width: 50%; } + .detailed-statistics-block .table { + margin-left: -15px; } + +.graphic-wrapper { + display: flex; + flex-direction: row; + justify-content: flex-start; + height: 170px; + margin-bottom: 60px; } + +.graphic { + height: 100%; + display: flex; + flex-direction: row; + position: relative; } + .graphic:after, .graphic:before { + display: block; + content: ""; + position: absolute; + top: 0; + right: 0; + z-index: 3; + width: 100%; + height: 12px; + background-image: -webkit-linear-gradient(top, #fff 0%, rgba(255, 255, 255, 0) 80%); + background-image: -o-linear-gradient(top, #fff 0%, rgba(255, 255, 255, 0) 80%); + background-image: linear-gradient(to bottom, #fff 0%, rgba(255, 255, 255, 0) 80%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#00FFFFFF', GradientType=0); } + .graphic:before { + top: auto; + bottom: 0; + background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%, #fff 80%); + background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0) 0%, #fff 80%); + background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, #fff 80%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00FFFFFF', endColorstr='#FFFFFFFF', GradientType=0); } + +.day-unit { + height: 100%; + display: flex; + position: relative; } + .day-unit .day { + display: block; + position: absolute; + bottom: -15px; + left: 0px; + font: 12px/14px "Trebuchet MS", Helvetica, sans-serif; + text-transform: uppercase; } + .day-unit:before { + display: block; + content: ""; + position: absolute; + top: 0; + left: 0; + width: 2px; + height: 100%; + background-color: #f0f0f0; } + .day-unit:last-of-type .quarter-of-day:last-child .recent-activity, .day-unit:last-of-type .quarter-of-day:last-child .unfinished-assignments { + position: relative; } + .day-unit:last-of-type .quarter-of-day:last-child .recent-activity:after, .day-unit:last-of-type .quarter-of-day:last-child .unfinished-assignments:after { + display: block; + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, #fff 60%); + background-image: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, #fff 60%); + background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, #fff 60%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00FFFFFF', endColorstr='#FFFFFFFF', GradientType=1); } + +.recent-activity.first-column { + padding-left: 2px; } + +.quarter-of-day { + width: 18px; + display: flex; + flex-direction: column; + overflow: hidden; } + +.recent-activity { + display: flex; + flex-direction: column-reverse; + flex-wrap: nowrap; + justify-content: flex-start; + align-items: center; + height: 85px; + padding-bottom: 3px; } + .recent-activity .uploaded, .recent-activity .downloaded, .recent-activity .census-template, .recent-activity .successful-connection, .recent-activity .failed-connection { + display: flex; + flex-shrink: 0; } + +.unfinished-assignments { + border-top: 2px solid #f0f0f0; + height: 85px; + display: flex; + flex-direction: row; + justify-content: flex-start; } + +.downloaded { + position: relative; + width: 15px; + height: 10px; } + .downloaded:before, .downloaded:after { + position: absolute; + content: ""; + top: 3px; + height: 4px; + width: 10px; + background: #2a81cb; + border-radius: 3px; } + .downloaded:after { + left: 5px; + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); } + .downloaded:before { + right: 5px; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); } + +.uploaded { + position: relative; + width: 15px; + height: 10px; } + .uploaded:before, .uploaded:after { + position: absolute; + content: ""; + top: 3px; + height: 4px; + width: 10px; + background: #3ca21a; + border-radius: 3px; } + .uploaded:after { + left: 5px; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); } + .uploaded:before { + right: 5px; + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); } + +.census-template { + position: relative; + width: 15px; + height: 10px; } + .census-template:before, .census-template:after { + position: absolute; + content: ""; + top: 3px; + height: 4px; + width: 10px; + background: #00ceed; + border-radius: 3px; } + .census-template:after { + left: 5px; + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); } + .census-template:before { + right: 5px; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); } + +.successful-connection { + width: 15px; + height: 6px; + position: relative; } + .successful-connection:before { + display: block; + border-radius: 3px; + content: ""; + position: absolute; + bottom: 0; + left: calc(50% - 7.5px); + width: 13px; + height: 4px; + background-color: #dbdfe2; } + +.failed-connection { + width: 15px; + height: 6px; + position: relative; } + .failed-connection:before { + display: block; + border-radius: 3px; + content: ""; + position: absolute; + bottom: 0; + left: calc(50% - 7.5px); + width: 13px; + height: 4px; + background-color: #f6d6d0; } + +.over-limit { + width: 15px; + height: 6px; + position: relative; } + .over-limit span, .over-limit span:before, .over-limit span:after { + display: block; + width: 4px; + height: 4px; + border-radius: 4px; + background-color: #dbdfe2; } + .over-limit span { + position: absolute; + top: 0; + left: calc(50% - 2px); } + .over-limit span:before, .over-limit span:after { + content: ""; + position: absolute; + left: -5px; + bottom: 0; } + .over-limit span:after { + left: 5px; } + +.explanation { + height: 100%; + font-size: 12px; + line-height: 14px; + font-family: inherit; } + .explanation .downloaded, .explanation .uploaded, .explanation .census-template, .explanation .successful-connection, .explanation .failed-connection { + display: inline-block; } + +.graphic-explanation { + width: 300px; + font: 12px/14px "TrebuchetMSBold"; } + .graphic-explanation .recent-activity { + align-items: flex-start; + margin-left: 20px; } + .graphic-explanation .recent-activity ul li { + padding-left: 25px; + position: relative; } + .graphic-explanation .recent-activity ul li .uploaded, .graphic-explanation .recent-activity ul li .downloaded, .graphic-explanation .recent-activity ul li .census-template, .graphic-explanation .recent-activity ul li .successful-connection, .graphic-explanation .recent-activity ul li .failed-connection { + position: absolute; + top: 0; + left: 0; } + .graphic-explanation .unfinished-assignments { + flex-direction: column; + padding-left: 20px; } + .graphic-explanation .unfinished-assignments p { + margin: 10px 0 0 25px; } + +.half-of-quarter { + width: 50%; } + +.unfinished-unit { + width: 100%; + height: 7px; + background: rgba(42, 129, 203, 0.7); + position: relative; + z-index: 2; } + +.census .unfinished-assignments { + padding-top: 7px; + position: relative; } + .census .unfinished-assignments.census-update:before { + background-image: -webkit-linear-gradient(left, #00ceed 60%, rgba(42, 129, 203, 0.9) 100%); + background-image: -o-linear-gradient(left, #00ceed 60%, rgba(42, 129, 203, 0.9) 100%); + background-image: linear-gradient(to right, #00ceed 60%, rgba(42, 129, 203, 0.9) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF00CEED', endColorstr='#E62A81CB', GradientType=1); } + .census .unfinished-assignments:before { + display: block; + content: ""; + width: 100%; + height: 7px; + position: absolute; + top: 0; + right: 0; + background-image: -webkit-linear-gradient(left, rgba(42, 129, 203, 0.9) 0%, rgba(42, 129, 203, 0.9) 100%); + background-image: -o-linear-gradient(left, rgba(42, 129, 203, 0.9) 0%, rgba(42, 129, 203, 0.9) 100%); + background-image: linear-gradient(to right, rgba(42, 129, 203, 0.9) 0%, rgba(42, 129, 203, 0.9) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#E62A81CB', endColorstr='#E62A81CB', GradientType=1); } + +.qrcode-wrapper { + position: absolute; + display: block; + top: 35px; + right: 40px; + width: 200px; } + .qrcode-wrapper img { + width: 100%; + height: auto; } + +@media (max-width: 1210px) { + .enumerators .table-wrapper { + margin-left: 0; } + .enumerators .detailed-statistics-block .table { + margin: 0; } } +@media only screen and (max-width: 1050px) { + .qrcode-wrapper { + position: relative; + top: 0; + right: 0; } } +@media only screen and (max-width: 840px) { + .interviews-information .number-information { + width: 50%; } } +@media (max-width: 880px) { + .enumerators .table-interviews { + display: none; } + .enumerators .screen-small-resolution { + padding: 0; } + + .graphic-wrapper { + display: block; + height: auto; + margin: 30px 0 30px 50px; } + + .graphic { + height: auto; + display: block; + width: 170px; + float: left; + margin-right: 40px; } + .graphic:after, .graphic:before { + height: 100%; + width: 12px; + left: 0; + background-image: -webkit-linear-gradient(left, #fff 0%, rgba(255, 255, 255, 0) 80%); + background-image: -o-linear-gradient(left, #fff 0%, rgba(255, 255, 255, 0) 80%); + background-image: linear-gradient(to right, #fff 0%, rgba(255, 255, 255, 0) 80%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#00FFFFFF', GradientType=1); } + .graphic:before { + left: auto; + right: 0; + background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, #fff 80%); + background-image: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, #fff 80%); + background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, #fff 80%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00FFFFFF', endColorstr='#FFFFFFFF', GradientType=1); } + + .day-unit { + height: auto; + width: 100%; + display: block; } + .day-unit:before { + width: 100%; + height: 2px; } + .day-unit .day { + top: calc(50% - 7px); + bottom: auto; + left: -55px; + width: 50px; + text-align: right; } + .day-unit:last-of-type .quarter-of-day:last-child .recent-activity:after, .day-unit:last-of-type .quarter-of-day:last-child .unfinished-assignments:after { + background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%, #fff 60%); + background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0) 0%, #fff 60%); + background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, #fff 60%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00FFFFFF', endColorstr='#FFFFFFFF', GradientType=0); } + + .recent-activity.first-column { + padding-left: 0; + padding-top: 2px; } + + .quarter-of-day { + width: 100%; + height: 18px; + flex-direction: row; } + + .recent-activity { + flex-direction: row-reverse; + height: auto; + padding-bottom: 0; + padding-right: 5px; + width: 50%; } + + .downloaded, .uploaded, .census-template { + display: block; + width: 10px; + height: 15px; } + .downloaded:before, .uploaded:before, .census-template:before { + top: 3px; + right: 0; } + .downloaded:after, .uploaded:after, .census-template:after { + top: 8px; + left: 0; } + + .over-limit { + width: 6px; + height: 15px; } + .over-limit span { + top: calc(50% - 2px); + left: 0; } + .over-limit span:before, .over-limit span:after { + left: 0; + bottom: -5px; } + .over-limit span:after { + left: 0; + top: -5px; } + + .successful-connection, .failed-connection { + width: 6px; + height: 15px; } + .successful-connection:before, .failed-connection:before { + width: 4px; + height: 13px; + bottom: calc(50% - 6.5px); + left: auto; + right: 0; } + + .unfinished-assignments { + height: auto; + flex-direction: column; + width: 50%; + border-top: none; + border-left: 2px solid #f0f0f0; } + + .half-of-quarter { + width: 100%; + height: 9px; + display: flex; + flex-direction: row; } + + .unfinished-unit { + height: 100%; + width: 7px; } + + .graphic-explanation { + float: left; } + .graphic-explanation .recent-activity { + width: 100%; + display: block; } + .graphic-explanation .recent-activity ul li { + margin-bottom: 5px; } + .graphic-explanation .unfinished-assignments { + width: 100%; + border-left: none; + border-top: 2px solid #f0f0f0; } + + .census .unfinished-assignments { + padding-top: 0; + padding-left: 7px; } + .census .unfinished-assignments.census-update:before { + background-image: -webkit-linear-gradient(top, #00ceed 60%, rgba(42, 129, 203, 0.9) 100%); + background-image: -o-linear-gradient(top, #00ceed 60%, rgba(42, 129, 203, 0.9) 100%); + background-image: linear-gradient(to bottom, #00ceed 60%, rgba(42, 129, 203, 0.9) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF00CEED', endColorstr='#E62A81CB', GradientType=0); } + .census .unfinished-assignments:before { + width: 7px; + height: 100%; + right: auto; + left: 0; + background-image: -webkit-linear-gradient(top, rgba(42, 129, 203, 0.9) 0%, rgba(42, 129, 203, 0.9) 100%); + background-image: -o-linear-gradient(top, rgba(42, 129, 203, 0.9) 0%, rgba(42, 129, 203, 0.9) 100%); + background-image: linear-gradient(to bottom, rgba(42, 129, 203, 0.9) 0%, rgba(42, 129, 203, 0.9) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#E62A81CB', endColorstr='#E62A81CB', GradientType=0); } } +@media only screen and (max-width: 670px) { + .graphic-wrapper { + margin: 30px 0; } + .graphic-wrapper .graphic { + float: none; + margin: 0 auto 30px; } + .graphic-wrapper .graphic-explanation { + float: none; } } +.servers-error { + width: 350px; } + +.error-wrapper { + background-image: -webkit-linear-gradient(left, rgba(231, 73, 36, 0.2) 0%, rgba(231, 73, 36, 0.2) 100%); + background-image: -o-linear-gradient(left, rgba(231, 73, 36, 0.2) 0%, rgba(231, 73, 36, 0.2) 100%); + background-image: linear-gradient(to right, rgba(231, 73, 36, 0.2) 0%, rgba(231, 73, 36, 0.2) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#33E74924', endColorstr='#33E74924', GradientType=1); + background-repeat: repeat-y; + background-size: 12px 100%; + padding-left: 30px; } + .error-wrapper .alert { + font-size: 18px; + line-height: 20px; + font-family: inherit; + margin-bottom: 15px; } + .error-wrapper p { + font-size: 14px; + line-height: 16px; + font-family: inherit; } + +header > .red-line { + position: absolute; + top: 0; + right: 0; } + +.red-line { + width: 100%; + height: 12px; + background: rgba(231, 73, 36, 0.2); } + +@media (max-width: 880px) { + html body main .servers-error { + max-width: 350px; + margin: 0 auto; } + html body main .servers-error .centered-box-table { + text-align: left; } } +.under-construction .page-header { + background: url("../img/logo_under_constraction.jpg") 0 100px no-repeat; + padding-left: 100px; + padding-top: 100px; } + .under-construction .page-header p { + font-size: 12px; + line-height: 14px; } +@media (max-width: 1210px) { + .under-construction .navbar .navbar-header .navbar-brand .brand-name { + display: inline-block; + padding: 15px 10px; } } + +.map-tooltip-info { + padding: 5px; + margin-bottom: 5px; + border-bottom: 1px solid #dbdfe2; } + .map-tooltip-info:last-of-type, .map-tooltip-info:only-child { + margin-bottom: 0; + border: none; } + .map-tooltip-info p { + margin-bottom: 3px; } + .map-tooltip-info p:first-of-type { + font: 12px/14px "RobotoLight"; + margin-bottom: 10px; } + .map-tooltip-info p strong { + letter-spacing: 1px; + margin-right: 5px; } + .map-tooltip-info p:last-of-type { + padding-top: 5px; } + .map-tooltip-info p:last-of-type a { + text-transform: uppercase; + font: 10px/12px "TrebuchetMSBold"; + letter-spacing: 1px; } + .map-tooltip-info p:last-of-type a:hover, .map-tooltip-info p:last-of-type a:focus { + text-decoration: none; + color: #0e5591; } + +/*# sourceMappingURL=markup-specific.css.map */ diff --git a/css/markup.css b/css/markup.css new file mode 100644 index 00000000..01520c2c --- /dev/null +++ b/css/markup.css @@ -0,0 +1,9772 @@ +@charset "UTF-8"; +/* Colors */ +/* Changed default value */ +/* Indent for filters */ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; } + +body { + margin: 0; } + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; } + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; } + +audio:not([controls]) { + display: none; + height: 0; } + +[hidden], +template { + display: none; } + +a { + background-color: transparent; } + +a:active, +a:hover { + outline: 0; } + +abbr[title] { + border-bottom: 1px dotted; } + +b, +strong { + font-weight: bold; } + +dfn { + font-style: italic; } + +h1 { + font-size: 2em; + margin: 0.67em 0; } + +mark { + background: #ff0; + color: #000; } + +small { + font-size: 80%; } + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +img { + border: 0; } + +svg:not(:root) { + overflow: hidden; } + +figure { + margin: 1em 40px; } + +hr { + box-sizing: content-box; + height: 0; } + +pre { + overflow: auto; } + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; } + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; } + +button { + overflow: visible; } + +button, +select { + text-transform: none; } + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; } + +button[disabled], +html input[disabled] { + cursor: default; } + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; } + +input { + line-height: normal; } + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; } + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; } + +input[type="search"] { + -webkit-appearance: textfield; + box-sizing: content-box; } + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; } + +legend { + border: 0; + padding: 0; } + +textarea { + overflow: auto; } + +optgroup { + font-weight: bold; } + +table { + border-collapse: collapse; + border-spacing: 0; } + +td, +th { + padding: 0; } + +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; + box-shadow: none !important; + text-shadow: none !important; } + + a, + a:visited { + text-decoration: underline; } + + a[href]:after { + content: " (" attr(href) ")"; } + + abbr[title]:after { + content: " (" attr(title) ")"; } + + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; } + + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; } + + thead { + display: table-header-group; } + + tr, + img { + page-break-inside: avoid; } + + img { + max-width: 100% !important; } + + p, + h2, + h3 { + orphans: 3; + widows: 3; } + + h2, + h3 { + page-break-after: avoid; } + + .navbar { + display: none; } + + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; } + + .label { + border: 1px solid #000; } + + .table { + border-collapse: collapse !important; } + .table td, + .table th { + background-color: #fff !important; } + + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; } } +@font-face { + font-family: 'Glyphicons Halflings'; + src: url("../vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.eot"); + src: url("../vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"), url("../vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"), url("../vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"), url("../vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg"); + font-display: swap; } +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + +.glyphicon-asterisk:before { + content: "\002a"; } + +.glyphicon-plus:before { + content: "\002b"; } + +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; } + +.glyphicon-minus:before { + content: "\2212"; } + +.glyphicon-cloud:before { + content: "\2601"; } + +.glyphicon-envelope:before { + content: "\2709"; } + +.glyphicon-pencil:before { + content: "\270f"; } + +.glyphicon-glass:before { + content: "\e001"; } + +.glyphicon-music:before { + content: "\e002"; } + +.glyphicon-search:before { + content: "\e003"; } + +.glyphicon-heart:before { + content: "\e005"; } + +.glyphicon-star:before { + content: "\e006"; } + +.glyphicon-star-empty:before { + content: "\e007"; } + +.glyphicon-user:before { + content: "\e008"; } + +.glyphicon-film:before { + content: "\e009"; } + +.glyphicon-th-large:before { + content: "\e010"; } + +.glyphicon-th:before { + content: "\e011"; } + +.glyphicon-th-list:before { + content: "\e012"; } + +.glyphicon-ok:before { + content: "\e013"; } + +.glyphicon-remove:before { + content: "\e014"; } + +.glyphicon-zoom-in:before { + content: "\e015"; } + +.glyphicon-zoom-out:before { + content: "\e016"; } + +.glyphicon-off:before { + content: "\e017"; } + +.glyphicon-signal:before { + content: "\e018"; } + +.glyphicon-cog:before { + content: "\e019"; } + +.glyphicon-trash:before { + content: "\e020"; } + +.glyphicon-home:before { + content: "\e021"; } + +.glyphicon-file:before { + content: "\e022"; } + +.glyphicon-time:before { + content: "\e023"; } + +.glyphicon-road:before { + content: "\e024"; } + +.glyphicon-download-alt:before { + content: "\e025"; } + +.glyphicon-download:before { + content: "\e026"; } + +.glyphicon-upload:before { + content: "\e027"; } + +.glyphicon-inbox:before { + content: "\e028"; } + +.glyphicon-play-circle:before { + content: "\e029"; } + +.glyphicon-repeat:before { + content: "\e030"; } + +.glyphicon-refresh:before { + content: "\e031"; } + +.glyphicon-list-alt:before { + content: "\e032"; } + +.glyphicon-lock:before { + content: "\e033"; } + +.glyphicon-flag:before { + content: "\e034"; } + +.glyphicon-headphones:before { + content: "\e035"; } + +.glyphicon-volume-off:before { + content: "\e036"; } + +.glyphicon-volume-down:before { + content: "\e037"; } + +.glyphicon-volume-up:before { + content: "\e038"; } + +.glyphicon-qrcode:before { + content: "\e039"; } + +.glyphicon-barcode:before { + content: "\e040"; } + +.glyphicon-tag:before { + content: "\e041"; } + +.glyphicon-tags:before { + content: "\e042"; } + +.glyphicon-book:before { + content: "\e043"; } + +.glyphicon-bookmark:before { + content: "\e044"; } + +.glyphicon-print:before { + content: "\e045"; } + +.glyphicon-camera:before { + content: "\e046"; } + +.glyphicon-font:before { + content: "\e047"; } + +.glyphicon-bold:before { + content: "\e048"; } + +.glyphicon-italic:before { + content: "\e049"; } + +.glyphicon-text-height:before { + content: "\e050"; } + +.glyphicon-text-width:before { + content: "\e051"; } + +.glyphicon-align-left:before { + content: "\e052"; } + +.glyphicon-align-center:before { + content: "\e053"; } + +.glyphicon-align-right:before { + content: "\e054"; } + +.glyphicon-align-justify:before { + content: "\e055"; } + +.glyphicon-list:before { + content: "\e056"; } + +.glyphicon-indent-left:before { + content: "\e057"; } + +.glyphicon-indent-right:before { + content: "\e058"; } + +.glyphicon-facetime-video:before { + content: "\e059"; } + +.glyphicon-picture:before { + content: "\e060"; } + +.glyphicon-map-marker:before { + content: "\e062"; } + +.glyphicon-adjust:before { + content: "\e063"; } + +.glyphicon-tint:before { + content: "\e064"; } + +.glyphicon-edit:before { + content: "\e065"; } + +.glyphicon-share:before { + content: "\e066"; } + +.glyphicon-check:before { + content: "\e067"; } + +.glyphicon-move:before { + content: "\e068"; } + +.glyphicon-step-backward:before { + content: "\e069"; } + +.glyphicon-fast-backward:before { + content: "\e070"; } + +.glyphicon-backward:before { + content: "\e071"; } + +.glyphicon-play:before { + content: "\e072"; } + +.glyphicon-pause:before { + content: "\e073"; } + +.glyphicon-stop:before { + content: "\e074"; } + +.glyphicon-forward:before { + content: "\e075"; } + +.glyphicon-fast-forward:before { + content: "\e076"; } + +.glyphicon-step-forward:before { + content: "\e077"; } + +.glyphicon-eject:before { + content: "\e078"; } + +.glyphicon-chevron-left:before { + content: "\e079"; } + +.glyphicon-chevron-right:before { + content: "\e080"; } + +.glyphicon-plus-sign:before { + content: "\e081"; } + +.glyphicon-minus-sign:before { + content: "\e082"; } + +.glyphicon-remove-sign:before { + content: "\e083"; } + +.glyphicon-ok-sign:before { + content: "\e084"; } + +.glyphicon-question-sign:before { + content: "\e085"; } + +.glyphicon-info-sign:before { + content: "\e086"; } + +.glyphicon-screenshot:before { + content: "\e087"; } + +.glyphicon-remove-circle:before { + content: "\e088"; } + +.glyphicon-ok-circle:before { + content: "\e089"; } + +.glyphicon-ban-circle:before { + content: "\e090"; } + +.glyphicon-arrow-left:before { + content: "\e091"; } + +.glyphicon-arrow-right:before { + content: "\e092"; } + +.glyphicon-arrow-up:before { + content: "\e093"; } + +.glyphicon-arrow-down:before { + content: "\e094"; } + +.glyphicon-share-alt:before { + content: "\e095"; } + +.glyphicon-resize-full:before { + content: "\e096"; } + +.glyphicon-resize-small:before { + content: "\e097"; } + +.glyphicon-exclamation-sign:before { + content: "\e101"; } + +.glyphicon-gift:before { + content: "\e102"; } + +.glyphicon-leaf:before { + content: "\e103"; } + +.glyphicon-fire:before { + content: "\e104"; } + +.glyphicon-eye-open:before { + content: "\e105"; } + +.glyphicon-eye-close:before { + content: "\e106"; } + +.glyphicon-warning-sign:before { + content: "\e107"; } + +.glyphicon-plane:before { + content: "\e108"; } + +.glyphicon-calendar:before { + content: "\e109"; } + +.glyphicon-random:before { + content: "\e110"; } + +.glyphicon-comment:before { + content: "\e111"; } + +.glyphicon-magnet:before { + content: "\e112"; } + +.glyphicon-chevron-up:before { + content: "\e113"; } + +.glyphicon-chevron-down:before { + content: "\e114"; } + +.glyphicon-retweet:before { + content: "\e115"; } + +.glyphicon-shopping-cart:before { + content: "\e116"; } + +.glyphicon-folder-close:before { + content: "\e117"; } + +.glyphicon-folder-open:before { + content: "\e118"; } + +.glyphicon-resize-vertical:before { + content: "\e119"; } + +.glyphicon-resize-horizontal:before { + content: "\e120"; } + +.glyphicon-hdd:before { + content: "\e121"; } + +.glyphicon-bullhorn:before { + content: "\e122"; } + +.glyphicon-bell:before { + content: "\e123"; } + +.glyphicon-certificate:before { + content: "\e124"; } + +.glyphicon-thumbs-up:before { + content: "\e125"; } + +.glyphicon-thumbs-down:before { + content: "\e126"; } + +.glyphicon-hand-right:before { + content: "\e127"; } + +.glyphicon-hand-left:before { + content: "\e128"; } + +.glyphicon-hand-up:before { + content: "\e129"; } + +.glyphicon-hand-down:before { + content: "\e130"; } + +.glyphicon-circle-arrow-right:before { + content: "\e131"; } + +.glyphicon-circle-arrow-left:before { + content: "\e132"; } + +.glyphicon-circle-arrow-up:before { + content: "\e133"; } + +.glyphicon-circle-arrow-down:before { + content: "\e134"; } + +.glyphicon-globe:before { + content: "\e135"; } + +.glyphicon-wrench:before { + content: "\e136"; } + +.glyphicon-tasks:before { + content: "\e137"; } + +.glyphicon-filter:before { + content: "\e138"; } + +.glyphicon-briefcase:before { + content: "\e139"; } + +.glyphicon-fullscreen:before { + content: "\e140"; } + +.glyphicon-dashboard:before { + content: "\e141"; } + +.glyphicon-paperclip:before { + content: "\e142"; } + +.glyphicon-heart-empty:before { + content: "\e143"; } + +.glyphicon-link:before { + content: "\e144"; } + +.glyphicon-phone:before { + content: "\e145"; } + +.glyphicon-pushpin:before { + content: "\e146"; } + +.glyphicon-usd:before { + content: "\e148"; } + +.glyphicon-gbp:before { + content: "\e149"; } + +.glyphicon-sort:before { + content: "\e150"; } + +.glyphicon-sort-by-alphabet:before { + content: "\e151"; } + +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; } + +.glyphicon-sort-by-order:before { + content: "\e153"; } + +.glyphicon-sort-by-order-alt:before { + content: "\e154"; } + +.glyphicon-sort-by-attributes:before { + content: "\e155"; } + +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; } + +.glyphicon-unchecked:before { + content: "\e157"; } + +.glyphicon-expand:before { + content: "\e158"; } + +.glyphicon-collapse-down:before { + content: "\e159"; } + +.glyphicon-collapse-up:before { + content: "\e160"; } + +.glyphicon-log-in:before { + content: "\e161"; } + +.glyphicon-flash:before { + content: "\e162"; } + +.glyphicon-log-out:before { + content: "\e163"; } + +.glyphicon-new-window:before { + content: "\e164"; } + +.glyphicon-record:before { + content: "\e165"; } + +.glyphicon-save:before { + content: "\e166"; } + +.glyphicon-open:before { + content: "\e167"; } + +.glyphicon-saved:before { + content: "\e168"; } + +.glyphicon-import:before { + content: "\e169"; } + +.glyphicon-export:before { + content: "\e170"; } + +.glyphicon-send:before { + content: "\e171"; } + +.glyphicon-floppy-disk:before { + content: "\e172"; } + +.glyphicon-floppy-saved:before { + content: "\e173"; } + +.glyphicon-floppy-remove:before { + content: "\e174"; } + +.glyphicon-floppy-save:before { + content: "\e175"; } + +.glyphicon-floppy-open:before { + content: "\e176"; } + +.glyphicon-credit-card:before { + content: "\e177"; } + +.glyphicon-transfer:before { + content: "\e178"; } + +.glyphicon-cutlery:before { + content: "\e179"; } + +.glyphicon-header:before { + content: "\e180"; } + +.glyphicon-compressed:before { + content: "\e181"; } + +.glyphicon-earphone:before { + content: "\e182"; } + +.glyphicon-phone-alt:before { + content: "\e183"; } + +.glyphicon-tower:before { + content: "\e184"; } + +.glyphicon-stats:before { + content: "\e185"; } + +.glyphicon-sd-video:before { + content: "\e186"; } + +.glyphicon-hd-video:before { + content: "\e187"; } + +.glyphicon-subtitles:before { + content: "\e188"; } + +.glyphicon-sound-stereo:before { + content: "\e189"; } + +.glyphicon-sound-dolby:before { + content: "\e190"; } + +.glyphicon-sound-5-1:before { + content: "\e191"; } + +.glyphicon-sound-6-1:before { + content: "\e192"; } + +.glyphicon-sound-7-1:before { + content: "\e193"; } + +.glyphicon-copyright-mark:before { + content: "\e194"; } + +.glyphicon-registration-mark:before { + content: "\e195"; } + +.glyphicon-cloud-download:before { + content: "\e197"; } + +.glyphicon-cloud-upload:before { + content: "\e198"; } + +.glyphicon-tree-conifer:before { + content: "\e199"; } + +.glyphicon-tree-deciduous:before { + content: "\e200"; } + +.glyphicon-cd:before { + content: "\e201"; } + +.glyphicon-save-file:before { + content: "\e202"; } + +.glyphicon-open-file:before { + content: "\e203"; } + +.glyphicon-level-up:before { + content: "\e204"; } + +.glyphicon-copy:before { + content: "\e205"; } + +.glyphicon-paste:before { + content: "\e206"; } + +.glyphicon-alert:before { + content: "\e209"; } + +.glyphicon-equalizer:before { + content: "\e210"; } + +.glyphicon-king:before { + content: "\e211"; } + +.glyphicon-queen:before { + content: "\e212"; } + +.glyphicon-pawn:before { + content: "\e213"; } + +.glyphicon-bishop:before { + content: "\e214"; } + +.glyphicon-knight:before { + content: "\e215"; } + +.glyphicon-baby-formula:before { + content: "\e216"; } + +.glyphicon-tent:before { + content: "\26fa"; } + +.glyphicon-blackboard:before { + content: "\e218"; } + +.glyphicon-bed:before { + content: "\e219"; } + +.glyphicon-apple:before { + content: "\f8ff"; } + +.glyphicon-erase:before { + content: "\e221"; } + +.glyphicon-hourglass:before { + content: "\231b"; } + +.glyphicon-lamp:before { + content: "\e223"; } + +.glyphicon-duplicate:before { + content: "\e224"; } + +.glyphicon-piggy-bank:before { + content: "\e225"; } + +.glyphicon-scissors:before { + content: "\e226"; } + +.glyphicon-bitcoin:before { + content: "\e227"; } + +.glyphicon-btc:before { + content: "\e227"; } + +.glyphicon-xbt:before { + content: "\e227"; } + +.glyphicon-yen:before { + content: "\00a5"; } + +.glyphicon-jpy:before { + content: "\00a5"; } + +.glyphicon-ruble:before { + content: "\20bd"; } + +.glyphicon-rub:before { + content: "\20bd"; } + +.glyphicon-scale:before { + content: "\e230"; } + +.glyphicon-ice-lolly:before { + content: "\e231"; } + +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; } + +.glyphicon-education:before { + content: "\e233"; } + +.glyphicon-option-horizontal:before { + content: "\e234"; } + +.glyphicon-option-vertical:before { + content: "\e235"; } + +.glyphicon-menu-hamburger:before { + content: "\e236"; } + +.glyphicon-modal-window:before { + content: "\e237"; } + +.glyphicon-oil:before { + content: "\e238"; } + +.glyphicon-grain:before { + content: "\e239"; } + +.glyphicon-sunglasses:before { + content: "\e240"; } + +.glyphicon-text-size:before { + content: "\e241"; } + +.glyphicon-text-color:before { + content: "\e242"; } + +.glyphicon-text-background:before { + content: "\e243"; } + +.glyphicon-object-align-top:before { + content: "\e244"; } + +.glyphicon-object-align-bottom:before { + content: "\e245"; } + +.glyphicon-object-align-horizontal:before { + content: "\e246"; } + +.glyphicon-object-align-left:before { + content: "\e247"; } + +.glyphicon-object-align-vertical:before { + content: "\e248"; } + +.glyphicon-object-align-right:before { + content: "\e249"; } + +.glyphicon-triangle-right:before { + content: "\e250"; } + +.glyphicon-triangle-left:before { + content: "\e251"; } + +.glyphicon-triangle-bottom:before { + content: "\e252"; } + +.glyphicon-triangle-top:before { + content: "\e253"; } + +.glyphicon-console:before { + content: "\e254"; } + +.glyphicon-superscript:before { + content: "\e255"; } + +.glyphicon-subscript:before { + content: "\e256"; } + +.glyphicon-menu-left:before { + content: "\e257"; } + +.glyphicon-menu-right:before { + content: "\e258"; } + +.glyphicon-menu-down:before { + content: "\e259"; } + +.glyphicon-menu-up:before { + content: "\e260"; } + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + +html { + font-size: 10px; + -webkit-tap-highlight-color: transparent; } + +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857; + color: #333333; + background-color: #fff; } + +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; } + +a { + color: #337ab7; + text-decoration: none; } + a:hover, a:focus { + color: #23527c; + text-decoration: underline; } + a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; } + +figure { + margin: 0; } + +img { + vertical-align: middle; } + +.img-responsive { + display: block; + max-width: 100%; + height: auto; } + +.img-rounded { + border-radius: 6px; } + +.img-thumbnail { + padding: 4px; + line-height: 1.42857; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; } + +.img-circle { + border-radius: 50%; } + +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; } + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; } + +[role="button"] { + cursor: pointer; } + +h1, h2, h3, h4, h5, .preset-filters-container a, .preset-filters-container .export-queue, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; } + h1 small, + h1 .small, h2 small, + h2 .small, h3 small, + h3 .small, h4 small, + h4 .small, h5 small, .preset-filters-container a small, .preset-filters-container .export-queue small, + h5 .small, + .preset-filters-container a .small, + .preset-filters-container .export-queue .small, h6 small, + h6 .small, + .h1 small, + .h1 .small, .h2 small, + .h2 .small, .h3 small, + .h3 .small, .h4 small, + .h4 .small, .h5 small, + .h5 .small, .h6 small, + .h6 .small { + font-weight: normal; + line-height: 1; + color: #a6a8a9; } + +h1, .h1, +h2, .h2, +h3, .h3 { + margin-top: 20px; + margin-bottom: 10px; } + h1 small, + h1 .small, .h1 small, + .h1 .small, + h2 small, + h2 .small, .h2 small, + .h2 .small, + h3 small, + h3 .small, .h3 small, + .h3 .small { + font-size: 65%; } + +h4, .h4, +h5, +.preset-filters-container a, +.preset-filters-container .export-queue, .h5, +h6, .h6 { + margin-top: 10px; + margin-bottom: 10px; } + h4 small, + h4 .small, .h4 small, + .h4 .small, + h5 small, + .preset-filters-container a small, + .preset-filters-container .export-queue small, + h5 .small, + .preset-filters-container a .small, + .preset-filters-container .export-queue .small, .h5 small, + .h5 .small, + h6 small, + h6 .small, .h6 small, + .h6 .small { + font-size: 75%; } + +h1, .h1 { + font-size: 36px; } + +h2, .h2 { + font-size: 30px; } + +h3, .h3 { + font-size: 24px; } + +h4, .h4 { + font-size: 18px; } + +h5, .preset-filters-container a, .preset-filters-container .export-queue, .h5 { + font-size: 14px; } + +h6, .h6 { + font-size: 12px; } + +p { + margin: 0 0 10px; } + +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; } + @media (min-width: 880px) { + .lead { + font-size: 21px; } } + +small, +.small { + font-size: 85%; } + +mark, +.mark { + background-color: #fcf8e3; + padding: .2em; } + +.text-left { + text-align: left; } + +.text-right { + text-align: right; } + +.text-center { + text-align: center; } + +.text-justify { + text-align: justify; } + +.text-nowrap { + white-space: nowrap; } + +.text-lowercase { + text-transform: lowercase; } + +.text-uppercase, .initialism { + text-transform: uppercase; } + +.text-capitalize { + text-transform: capitalize; } + +.text-muted { + color: #a6a8a9; } + +.text-primary { + color: #337ab7; } + +a.text-primary:hover, +a.text-primary:focus { + color: #286090; } + +.text-success { + color: #3ca21a; } + +a.text-success:hover, +a.text-success:focus { + color: #2c7613; } + +.text-info { + color: #2a81cb; } + +a.text-info:hover, +a.text-info:focus { + color: #2166a1; } + +.text-warning { + color: #8a6d3b; } + +a.text-warning:hover, +a.text-warning:focus { + color: #66512c; } + +.text-danger { + color: #e74924; } + +a.text-danger:hover, +a.text-danger:focus { + color: #c33615; } + +.bg-primary { + color: #fff; } + +.bg-primary { + background-color: #337ab7; } + +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #286090; } + +.bg-success { + background-color: #dff0d8; } + +a.bg-success:hover, +a.bg-success:focus { + background-color: #c1e2b3; } + +.bg-info { + background-color: #d9edf7; } + +a.bg-info:hover, +a.bg-info:focus { + background-color: #afd9ee; } + +.bg-warning { + background-color: #fcf8e3; } + +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #f7ecb5; } + +.bg-danger { + background-color: #f2dede; } + +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #e4b9b9; } + +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; } + +ul, +ol { + margin-top: 0; + margin-bottom: 10px; } + ul ul, + ul ol, + ol ul, + ol ol { + margin-bottom: 0; } + +.list-unstyled { + padding-left: 0; + list-style: none; } + +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; } + .list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; } + +dl { + margin-top: 0; + margin-bottom: 20px; } + +dt, +dd { + line-height: 1.42857; } + +dt { + font-weight: bold; } + +dd { + margin-left: 0; } + +.dl-horizontal dd:before, .dl-horizontal dd:after { + content: " "; + display: table; } +.dl-horizontal dd:after { + clear: both; } +@media (min-width: 880px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + .dl-horizontal dd { + margin-left: 180px; } } + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #a6a8a9; } + +.initialism { + font-size: 90%; } + +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eeeeee; } + blockquote p:last-child, + blockquote ul:last-child, + blockquote ol:last-child { + margin-bottom: 0; } + blockquote footer, + blockquote small, + blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857; + color: #a6a8a9; } + blockquote footer:before, + blockquote small:before, + blockquote .small:before { + content: '\2014 \00A0'; } + +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; + text-align: right; } + .blockquote-reverse footer:before, + .blockquote-reverse small:before, + .blockquote-reverse .small:before, + blockquote.pull-right footer:before, + blockquote.pull-right small:before, + blockquote.pull-right .small:before { + content: ''; } + .blockquote-reverse footer:after, + .blockquote-reverse small:after, + .blockquote-reverse .small:after, + blockquote.pull-right footer:after, + blockquote.pull-right small:after, + blockquote.pull-right .small:after { + content: '\00A0 \2014'; } + +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857; } + +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; } + +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; } + +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); } + kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; } + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857; + word-break: break-all; + word-wrap: break-word; + color: #333333; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; } + pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; } + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; } + +.container { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; } + .container:before, .container:after { + content: " "; + display: table; } + .container:after { + clear: both; } + @media (min-width: 880px) { + .container { + width: 798px; } } + @media (min-width: 1210px) { + .container { + width: 990px; } } + @media (min-width: 1400px) { + .container { + width: 990px; } } + +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; } + .container-fluid:before, .container-fluid:after { + content: " "; + display: table; } + .container-fluid:after { + clear: both; } + +.row { + margin-left: -15px; + margin-right: -15px; } + .row:before, .row:after { + content: " "; + display: table; } + .row:after { + clear: both; } + +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; } + +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; } + +.col-xs-1 { + width: 8.33333%; } + +.col-xs-2 { + width: 16.66667%; } + +.col-xs-3 { + width: 25%; } + +.col-xs-4 { + width: 33.33333%; } + +.col-xs-5 { + width: 41.66667%; } + +.col-xs-6 { + width: 50%; } + +.col-xs-7 { + width: 58.33333%; } + +.col-xs-8 { + width: 66.66667%; } + +.col-xs-9 { + width: 75%; } + +.col-xs-10 { + width: 83.33333%; } + +.col-xs-11 { + width: 91.66667%; } + +.col-xs-12 { + width: 100%; } + +.col-xs-pull-0 { + right: auto; } + +.col-xs-pull-1 { + right: 8.33333%; } + +.col-xs-pull-2 { + right: 16.66667%; } + +.col-xs-pull-3 { + right: 25%; } + +.col-xs-pull-4 { + right: 33.33333%; } + +.col-xs-pull-5 { + right: 41.66667%; } + +.col-xs-pull-6 { + right: 50%; } + +.col-xs-pull-7 { + right: 58.33333%; } + +.col-xs-pull-8 { + right: 66.66667%; } + +.col-xs-pull-9 { + right: 75%; } + +.col-xs-pull-10 { + right: 83.33333%; } + +.col-xs-pull-11 { + right: 91.66667%; } + +.col-xs-pull-12 { + right: 100%; } + +.col-xs-push-0 { + left: auto; } + +.col-xs-push-1 { + left: 8.33333%; } + +.col-xs-push-2 { + left: 16.66667%; } + +.col-xs-push-3 { + left: 25%; } + +.col-xs-push-4 { + left: 33.33333%; } + +.col-xs-push-5 { + left: 41.66667%; } + +.col-xs-push-6 { + left: 50%; } + +.col-xs-push-7 { + left: 58.33333%; } + +.col-xs-push-8 { + left: 66.66667%; } + +.col-xs-push-9 { + left: 75%; } + +.col-xs-push-10 { + left: 83.33333%; } + +.col-xs-push-11 { + left: 91.66667%; } + +.col-xs-push-12 { + left: 100%; } + +.col-xs-offset-0 { + margin-left: 0%; } + +.col-xs-offset-1 { + margin-left: 8.33333%; } + +.col-xs-offset-2 { + margin-left: 16.66667%; } + +.col-xs-offset-3 { + margin-left: 25%; } + +.col-xs-offset-4 { + margin-left: 33.33333%; } + +.col-xs-offset-5 { + margin-left: 41.66667%; } + +.col-xs-offset-6 { + margin-left: 50%; } + +.col-xs-offset-7 { + margin-left: 58.33333%; } + +.col-xs-offset-8 { + margin-left: 66.66667%; } + +.col-xs-offset-9 { + margin-left: 75%; } + +.col-xs-offset-10 { + margin-left: 83.33333%; } + +.col-xs-offset-11 { + margin-left: 91.66667%; } + +.col-xs-offset-12 { + margin-left: 100%; } + +@media (min-width: 880px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; } + + .col-sm-1 { + width: 8.33333%; } + + .col-sm-2 { + width: 16.66667%; } + + .col-sm-3 { + width: 25%; } + + .col-sm-4 { + width: 33.33333%; } + + .col-sm-5 { + width: 41.66667%; } + + .col-sm-6 { + width: 50%; } + + .col-sm-7 { + width: 58.33333%; } + + .col-sm-8 { + width: 66.66667%; } + + .col-sm-9 { + width: 75%; } + + .col-sm-10 { + width: 83.33333%; } + + .col-sm-11 { + width: 91.66667%; } + + .col-sm-12 { + width: 100%; } + + .col-sm-pull-0 { + right: auto; } + + .col-sm-pull-1 { + right: 8.33333%; } + + .col-sm-pull-2 { + right: 16.66667%; } + + .col-sm-pull-3 { + right: 25%; } + + .col-sm-pull-4 { + right: 33.33333%; } + + .col-sm-pull-5 { + right: 41.66667%; } + + .col-sm-pull-6 { + right: 50%; } + + .col-sm-pull-7 { + right: 58.33333%; } + + .col-sm-pull-8 { + right: 66.66667%; } + + .col-sm-pull-9 { + right: 75%; } + + .col-sm-pull-10 { + right: 83.33333%; } + + .col-sm-pull-11 { + right: 91.66667%; } + + .col-sm-pull-12 { + right: 100%; } + + .col-sm-push-0 { + left: auto; } + + .col-sm-push-1 { + left: 8.33333%; } + + .col-sm-push-2 { + left: 16.66667%; } + + .col-sm-push-3 { + left: 25%; } + + .col-sm-push-4 { + left: 33.33333%; } + + .col-sm-push-5 { + left: 41.66667%; } + + .col-sm-push-6 { + left: 50%; } + + .col-sm-push-7 { + left: 58.33333%; } + + .col-sm-push-8 { + left: 66.66667%; } + + .col-sm-push-9 { + left: 75%; } + + .col-sm-push-10 { + left: 83.33333%; } + + .col-sm-push-11 { + left: 91.66667%; } + + .col-sm-push-12 { + left: 100%; } + + .col-sm-offset-0 { + margin-left: 0%; } + + .col-sm-offset-1 { + margin-left: 8.33333%; } + + .col-sm-offset-2 { + margin-left: 16.66667%; } + + .col-sm-offset-3 { + margin-left: 25%; } + + .col-sm-offset-4 { + margin-left: 33.33333%; } + + .col-sm-offset-5 { + margin-left: 41.66667%; } + + .col-sm-offset-6 { + margin-left: 50%; } + + .col-sm-offset-7 { + margin-left: 58.33333%; } + + .col-sm-offset-8 { + margin-left: 66.66667%; } + + .col-sm-offset-9 { + margin-left: 75%; } + + .col-sm-offset-10 { + margin-left: 83.33333%; } + + .col-sm-offset-11 { + margin-left: 91.66667%; } + + .col-sm-offset-12 { + margin-left: 100%; } } +@media (min-width: 1210px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; } + + .col-md-1 { + width: 8.33333%; } + + .col-md-2 { + width: 16.66667%; } + + .col-md-3 { + width: 25%; } + + .col-md-4 { + width: 33.33333%; } + + .col-md-5 { + width: 41.66667%; } + + .col-md-6 { + width: 50%; } + + .col-md-7 { + width: 58.33333%; } + + .col-md-8 { + width: 66.66667%; } + + .col-md-9 { + width: 75%; } + + .col-md-10 { + width: 83.33333%; } + + .col-md-11 { + width: 91.66667%; } + + .col-md-12 { + width: 100%; } + + .col-md-pull-0 { + right: auto; } + + .col-md-pull-1 { + right: 8.33333%; } + + .col-md-pull-2 { + right: 16.66667%; } + + .col-md-pull-3 { + right: 25%; } + + .col-md-pull-4 { + right: 33.33333%; } + + .col-md-pull-5 { + right: 41.66667%; } + + .col-md-pull-6 { + right: 50%; } + + .col-md-pull-7 { + right: 58.33333%; } + + .col-md-pull-8 { + right: 66.66667%; } + + .col-md-pull-9 { + right: 75%; } + + .col-md-pull-10 { + right: 83.33333%; } + + .col-md-pull-11 { + right: 91.66667%; } + + .col-md-pull-12 { + right: 100%; } + + .col-md-push-0 { + left: auto; } + + .col-md-push-1 { + left: 8.33333%; } + + .col-md-push-2 { + left: 16.66667%; } + + .col-md-push-3 { + left: 25%; } + + .col-md-push-4 { + left: 33.33333%; } + + .col-md-push-5 { + left: 41.66667%; } + + .col-md-push-6 { + left: 50%; } + + .col-md-push-7 { + left: 58.33333%; } + + .col-md-push-8 { + left: 66.66667%; } + + .col-md-push-9 { + left: 75%; } + + .col-md-push-10 { + left: 83.33333%; } + + .col-md-push-11 { + left: 91.66667%; } + + .col-md-push-12 { + left: 100%; } + + .col-md-offset-0 { + margin-left: 0%; } + + .col-md-offset-1 { + margin-left: 8.33333%; } + + .col-md-offset-2 { + margin-left: 16.66667%; } + + .col-md-offset-3 { + margin-left: 25%; } + + .col-md-offset-4 { + margin-left: 33.33333%; } + + .col-md-offset-5 { + margin-left: 41.66667%; } + + .col-md-offset-6 { + margin-left: 50%; } + + .col-md-offset-7 { + margin-left: 58.33333%; } + + .col-md-offset-8 { + margin-left: 66.66667%; } + + .col-md-offset-9 { + margin-left: 75%; } + + .col-md-offset-10 { + margin-left: 83.33333%; } + + .col-md-offset-11 { + margin-left: 91.66667%; } + + .col-md-offset-12 { + margin-left: 100%; } } +@media (min-width: 1400px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; } + + .col-lg-1 { + width: 8.33333%; } + + .col-lg-2 { + width: 16.66667%; } + + .col-lg-3 { + width: 25%; } + + .col-lg-4 { + width: 33.33333%; } + + .col-lg-5 { + width: 41.66667%; } + + .col-lg-6 { + width: 50%; } + + .col-lg-7 { + width: 58.33333%; } + + .col-lg-8 { + width: 66.66667%; } + + .col-lg-9 { + width: 75%; } + + .col-lg-10 { + width: 83.33333%; } + + .col-lg-11 { + width: 91.66667%; } + + .col-lg-12 { + width: 100%; } + + .col-lg-pull-0 { + right: auto; } + + .col-lg-pull-1 { + right: 8.33333%; } + + .col-lg-pull-2 { + right: 16.66667%; } + + .col-lg-pull-3 { + right: 25%; } + + .col-lg-pull-4 { + right: 33.33333%; } + + .col-lg-pull-5 { + right: 41.66667%; } + + .col-lg-pull-6 { + right: 50%; } + + .col-lg-pull-7 { + right: 58.33333%; } + + .col-lg-pull-8 { + right: 66.66667%; } + + .col-lg-pull-9 { + right: 75%; } + + .col-lg-pull-10 { + right: 83.33333%; } + + .col-lg-pull-11 { + right: 91.66667%; } + + .col-lg-pull-12 { + right: 100%; } + + .col-lg-push-0 { + left: auto; } + + .col-lg-push-1 { + left: 8.33333%; } + + .col-lg-push-2 { + left: 16.66667%; } + + .col-lg-push-3 { + left: 25%; } + + .col-lg-push-4 { + left: 33.33333%; } + + .col-lg-push-5 { + left: 41.66667%; } + + .col-lg-push-6 { + left: 50%; } + + .col-lg-push-7 { + left: 58.33333%; } + + .col-lg-push-8 { + left: 66.66667%; } + + .col-lg-push-9 { + left: 75%; } + + .col-lg-push-10 { + left: 83.33333%; } + + .col-lg-push-11 { + left: 91.66667%; } + + .col-lg-push-12 { + left: 100%; } + + .col-lg-offset-0 { + margin-left: 0%; } + + .col-lg-offset-1 { + margin-left: 8.33333%; } + + .col-lg-offset-2 { + margin-left: 16.66667%; } + + .col-lg-offset-3 { + margin-left: 25%; } + + .col-lg-offset-4 { + margin-left: 33.33333%; } + + .col-lg-offset-5 { + margin-left: 41.66667%; } + + .col-lg-offset-6 { + margin-left: 50%; } + + .col-lg-offset-7 { + margin-left: 58.33333%; } + + .col-lg-offset-8 { + margin-left: 66.66667%; } + + .col-lg-offset-9 { + margin-left: 75%; } + + .col-lg-offset-10 { + margin-left: 83.33333%; } + + .col-lg-offset-11 { + margin-left: 91.66667%; } + + .col-lg-offset-12 { + margin-left: 100%; } } +table { + background-color: transparent; } + +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #a6a8a9; + text-align: left; } + +th { + text-align: left; } + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; } + .table > thead > tr > th, + .table > thead > tr > td, + .table > tbody > tr > th, + .table > tbody > tr > td, + .table > tfoot > tr > th, + .table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857; + vertical-align: top; + border-top: 1px solid #ddd; } + .table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; } + .table > caption + thead > tr:first-child > th, + .table > caption + thead > tr:first-child > td, + .table > colgroup + thead > tr:first-child > th, + .table > colgroup + thead > tr:first-child > td, + .table > thead:first-child > tr:first-child > th, + .table > thead:first-child > tr:first-child > td { + border-top: 0; } + .table > tbody + tbody { + border-top: 2px solid #ddd; } + .table .table { + background-color: #fff; } + +.table-condensed > thead > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > th, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > th, +.table-condensed > tfoot > tr > td { + padding: 5px; } + +.table-bordered { + border: 1px solid #ddd; } + .table-bordered > thead > tr > th, + .table-bordered > thead > tr > td, + .table-bordered > tbody > tr > th, + .table-bordered > tbody > tr > td, + .table-bordered > tfoot > tr > th, + .table-bordered > tfoot > tr > td { + border: 1px solid #ddd; } + .table-bordered > thead > tr > th, + .table-bordered > thead > tr > td { + border-bottom-width: 2px; } + +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; } + +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; } + +table col[class*="col-"] { + position: static; + float: none; + display: table-column; } + +table td[class*="col-"], +table th[class*="col-"] { + position: static; + float: none; + display: table-cell; } + +.table > thead > tr > td.active, +.table > thead > tr > th.active, .table > thead > tr.active > td, .table > thead > tr.active > th, +.table > tbody > tr > td.active, +.table > tbody > tr > th.active, +.table > tbody > tr.active > td, +.table > tbody > tr.active > th, +.table > tfoot > tr > td.active, +.table > tfoot > tr > th.active, +.table > tfoot > tr.active > td, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; } + +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, .table-hover > tbody > tr.active:hover > td, .table-hover > tbody > tr:hover > .active, .table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; } + +.table > thead > tr > td.success, +.table > thead > tr > th.success, .table > thead > tr.success > td, .table > thead > tr.success > th, +.table > tbody > tr > td.success, +.table > tbody > tr > th.success, +.table > tbody > tr.success > td, +.table > tbody > tr.success > th, +.table > tfoot > tr > td.success, +.table > tfoot > tr > th.success, +.table > tfoot > tr.success > td, +.table > tfoot > tr.success > th { + background-color: #dff0d8; } + +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td, .table-hover > tbody > tr:hover > .success, .table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; } + +.table > thead > tr > td.info, +.table > thead > tr > th.info, .table > thead > tr.info > td, .table > thead > tr.info > th, +.table > tbody > tr > td.info, +.table > tbody > tr > th.info, +.table > tbody > tr.info > td, +.table > tbody > tr.info > th, +.table > tfoot > tr > td.info, +.table > tfoot > tr > th.info, +.table > tfoot > tr.info > td, +.table > tfoot > tr.info > th { + background-color: #d9edf7; } + +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, .table-hover > tbody > tr.info:hover > td, .table-hover > tbody > tr:hover > .info, .table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; } + +.table > thead > tr > td.warning, +.table > thead > tr > th.warning, .table > thead > tr.warning > td, .table > thead > tr.warning > th, +.table > tbody > tr > td.warning, +.table > tbody > tr > th.warning, +.table > tbody > tr.warning > td, +.table > tbody > tr.warning > th, +.table > tfoot > tr > td.warning, +.table > tfoot > tr > th.warning, +.table > tfoot > tr.warning > td, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; } + +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td, .table-hover > tbody > tr:hover > .warning, .table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; } + +.table > thead > tr > td.danger, +.table > thead > tr > th.danger, .table > thead > tr.danger > td, .table > thead > tr.danger > th, +.table > tbody > tr > td.danger, +.table > tbody > tr > th.danger, +.table > tbody > tr.danger > td, +.table > tbody > tr.danger > th, +.table > tfoot > tr > td.danger, +.table > tfoot > tr > th.danger, +.table > tfoot > tr.danger > td, +.table > tfoot > tr.danger > th { + background-color: #f2dede; } + +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td, .table-hover > tbody > tr:hover > .danger, .table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; } + +.table-responsive { + overflow-x: auto; + min-height: 0.01%; } + @media screen and (max-width: 879px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; } + .table-responsive > .table { + margin-bottom: 0; } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; } + .table-responsive > .table-bordered { + border: 0; } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; } } + +fieldset { + padding: 0; + margin: 0; + border: 0; + min-width: 0; } + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; } + +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; } + +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; } + +input[type="file"] { + display: block; } + +input[type="range"] { + display: block; + width: 100%; } + +select[multiple], +select[size] { + height: auto; } + +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; } + +output { + display: block; + padding-top: 11px; + font-size: 14px; + line-height: 1.42857; + color: #555555; } + +.form-control { + display: block; + width: 100%; + height: 40px; + padding: 10px 9px; + font-size: 14px; + line-height: 1.42857; + color: #555555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; } + .form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); } + .form-control::-moz-placeholder { + color: #999; + opacity: 1; } + .form-control:-ms-input-placeholder { + color: #999; } + .form-control::-webkit-input-placeholder { + color: #999; } + .form-control::-ms-expand { + border: 0; + background-color: transparent; } + .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { + background-color: #eeeeee; + opacity: 1; } + .form-control[disabled], fieldset[disabled] .form-control { + cursor: not-allowed; } + +textarea.form-control { + height: auto; } + +input[type="search"] { + -webkit-appearance: none; } + +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 40px; } + input[type="date"].input-sm, .input-group-sm > input[type="date"].form-control, + .input-group-sm > input[type="date"].input-group-addon, + .input-group-sm > .input-group-btn > input[type="date"].btn, .input-group-sm input[type="date"], + input[type="time"].input-sm, + .input-group-sm > input[type="time"].form-control, + .input-group-sm > input[type="time"].input-group-addon, + .input-group-sm > .input-group-btn > input[type="time"].btn, .input-group-sm + input[type="time"], + input[type="datetime-local"].input-sm, + .input-group-sm > input[type="datetime-local"].form-control, + .input-group-sm > input[type="datetime-local"].input-group-addon, + .input-group-sm > .input-group-btn > input[type="datetime-local"].btn, .input-group-sm + input[type="datetime-local"], + input[type="month"].input-sm, + .input-group-sm > input[type="month"].form-control, + .input-group-sm > input[type="month"].input-group-addon, + .input-group-sm > .input-group-btn > input[type="month"].btn, .input-group-sm + input[type="month"] { + line-height: 30px; } + input[type="date"].input-lg, .input-group-lg > input[type="date"].form-control, + .input-group-lg > input[type="date"].input-group-addon, + .input-group-lg > .input-group-btn > input[type="date"].btn, .input-group-lg input[type="date"], + input[type="time"].input-lg, + .input-group-lg > input[type="time"].form-control, + .input-group-lg > input[type="time"].input-group-addon, + .input-group-lg > .input-group-btn > input[type="time"].btn, .input-group-lg + input[type="time"], + input[type="datetime-local"].input-lg, + .input-group-lg > input[type="datetime-local"].form-control, + .input-group-lg > input[type="datetime-local"].input-group-addon, + .input-group-lg > .input-group-btn > input[type="datetime-local"].btn, .input-group-lg + input[type="datetime-local"], + input[type="month"].input-lg, + .input-group-lg > input[type="month"].form-control, + .input-group-lg > input[type="month"].input-group-addon, + .input-group-lg > .input-group-btn > input[type="month"].btn, .input-group-lg + input[type="month"] { + line-height: 46px; } } +.form-group { + margin-bottom: 15px; } + +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; } + .radio label, + .checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; } + +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; } + +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; } + +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; } + +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; } + +input[type="radio"][disabled], input[type="radio"].disabled, fieldset[disabled] input[type="radio"], +input[type="checkbox"][disabled], +input[type="checkbox"].disabled, fieldset[disabled] +input[type="checkbox"] { + cursor: not-allowed; } + +.radio-inline.disabled, fieldset[disabled] .radio-inline, +.checkbox-inline.disabled, fieldset[disabled] +.checkbox-inline { + cursor: not-allowed; } + +.radio.disabled label, fieldset[disabled] .radio label, +.checkbox.disabled label, fieldset[disabled] +.checkbox label { + cursor: not-allowed; } + +.form-control-static { + padding-top: 11px; + padding-bottom: 11px; + margin-bottom: 0; + min-height: 34px; } + .form-control-static.input-lg, .input-group-lg > .form-control-static.form-control, + .input-group-lg > .form-control-static.input-group-addon, + .input-group-lg > .input-group-btn > .form-control-static.btn, .form-control-static.input-sm, .input-group-sm > .form-control-static.form-control, + .input-group-sm > .form-control-static.input-group-addon, + .input-group-sm > .input-group-btn > .form-control-static.btn { + padding-left: 0; + padding-right: 0; } + +.input-sm, .input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; } + +select.input-sm, .input-group-sm > select.form-control, +.input-group-sm > select.input-group-addon, +.input-group-sm > .input-group-btn > select.btn { + height: 30px; + line-height: 30px; } + +textarea.input-sm, .input-group-sm > textarea.form-control, +.input-group-sm > textarea.input-group-addon, +.input-group-sm > .input-group-btn > textarea.btn, +select[multiple].input-sm, +.input-group-sm > select[multiple].form-control, +.input-group-sm > select[multiple].input-group-addon, +.input-group-sm > .input-group-btn > select[multiple].btn { + height: auto; } + +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; } +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; } +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; } +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; } + +.input-lg, .input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33333; + border-radius: 6px; } + +select.input-lg, .input-group-lg > select.form-control, +.input-group-lg > select.input-group-addon, +.input-group-lg > .input-group-btn > select.btn { + height: 46px; + line-height: 46px; } + +textarea.input-lg, .input-group-lg > textarea.form-control, +.input-group-lg > textarea.input-group-addon, +.input-group-lg > .input-group-btn > textarea.btn, +select[multiple].input-lg, +.input-group-lg > select[multiple].form-control, +.input-group-lg > select[multiple].input-group-addon, +.input-group-lg > .input-group-btn > select[multiple].btn { + height: auto; } + +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33333; + border-radius: 6px; } +.form-group-lg select.form-control { + height: 46px; + line-height: 46px; } +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; } +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.33333; } + +.has-feedback { + position: relative; } + .has-feedback .form-control { + padding-right: 50px; } + +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 40px; + height: 40px; + line-height: 40px; + text-align: center; + pointer-events: none; } + +.input-lg + .form-control-feedback, .input-group-lg > .form-control + .form-control-feedback, +.input-group-lg > .input-group-addon + .form-control-feedback, +.input-group-lg > .input-group-btn > .btn + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; } + +.input-sm + .form-control-feedback, .input-group-sm > .form-control + .form-control-feedback, +.input-group-sm > .input-group-addon + .form-control-feedback, +.input-group-sm > .input-group-btn > .btn + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; } + +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, .has-success.radio label, .has-success.checkbox label, .has-success.radio-inline label, .has-success.checkbox-inline label { + color: #3ca21a; } +.has-success .form-control { + border-color: #3ca21a; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } + .has-success .form-control:focus { + border-color: #2c7613; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #69e141; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #69e141; } +.has-success .input-group-addon { + color: #3ca21a; + border-color: #3ca21a; + background-color: #dff0d8; } +.has-success .form-control-feedback { + color: #3ca21a; } + +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, .has-warning.radio label, .has-warning.checkbox label, .has-warning.radio-inline label, .has-warning.checkbox-inline label { + color: #8a6d3b; } +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } + .has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; } +.has-warning .input-group-addon { + color: #8a6d3b; + border-color: #8a6d3b; + background-color: #fcf8e3; } +.has-warning .form-control-feedback { + color: #8a6d3b; } + +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, .has-error.radio label, .has-error.checkbox label, .has-error.radio-inline label, .has-error.checkbox-inline label { + color: #e74924; } +.has-error .form-control { + border-color: #e74924; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } + .has-error .form-control:focus { + border-color: #c33615; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f19580; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f19580; } +.has-error .input-group-addon { + color: #e74924; + border-color: #e74924; + background-color: #f2dede; } +.has-error .form-control-feedback { + color: #e74924; } + +.has-feedback label ~ .form-control-feedback { + top: 25px; } +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; } + +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; } + +@media (min-width: 880px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; } + .form-inline .form-control-static { + display: inline-block; } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; } + .form-inline .input-group > .form-control { + width: 100%; } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; } + .form-inline .has-feedback .form-control-feedback { + top: 0; } } + +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 11px; } +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 31px; } +.form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; } + .form-horizontal .form-group:before, .form-horizontal .form-group:after { + content: " "; + display: table; } + .form-horizontal .form-group:after { + clear: both; } +@media (min-width: 880px) { + .form-horizontal .control-label { + text-align: right; + margin-bottom: 0; + padding-top: 11px; } } +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; } +@media (min-width: 880px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 11px; + font-size: 18px; } } +@media (min-width: 880px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; } } + +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 10px 9px; + font-size: 14px; + line-height: 1.42857; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + .btn:focus, .btn.focus, .btn:active:focus, .btn:active.focus, .btn.active:focus, .btn.active.focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; } + .btn:hover, .btn:focus, .btn.focus { + color: #333; + text-decoration: none; } + .btn:active, .btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } + .btn.disabled, .btn[disabled], fieldset[disabled] .btn { + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; } + +a.btn.disabled, fieldset[disabled] a.btn { + pointer-events: none; } + +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; } + .btn-default:focus, .btn-default.focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; } + .btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; } + .btn-default:active, .btn-default.active, .open > .btn-default.dropdown-toggle { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; } + .btn-default:active:hover, .btn-default:active:focus, .btn-default:active.focus, .btn-default.active:hover, .btn-default.active:focus, .btn-default.active.focus, .open > .btn-default.dropdown-toggle:hover, .open > .btn-default.dropdown-toggle:focus, .open > .btn-default.dropdown-toggle.focus { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; } + .btn-default:active, .btn-default.active, .open > .btn-default.dropdown-toggle { + background-image: none; } + .btn-default.disabled:hover, .btn-default.disabled:focus, .btn-default.disabled.focus, .btn-default[disabled]:hover, .btn-default[disabled]:focus, .btn-default[disabled].focus, fieldset[disabled] .btn-default:hover, fieldset[disabled] .btn-default:focus, fieldset[disabled] .btn-default.focus { + background-color: #fff; + border-color: #ccc; } + .btn-default .badge { + color: #fff; + background-color: #333; } + +.btn-primary { + color: #fff; + background-color: #2a81cb; + border-color: #2a81cb; } + .btn-primary:focus, .btn-primary.focus { + color: #fff; + background-color: #2166a1; + border-color: #143e61; } + .btn-primary:hover { + color: #fff; + background-color: #2166a1; + border-color: #206198; } + .btn-primary:active, .btn-primary.active, .open > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #2166a1; + border-color: #206198; } + .btn-primary:active:hover, .btn-primary:active:focus, .btn-primary:active.focus, .btn-primary.active:hover, .btn-primary.active:focus, .btn-primary.active.focus, .open > .btn-primary.dropdown-toggle:hover, .open > .btn-primary.dropdown-toggle:focus, .open > .btn-primary.dropdown-toggle.focus { + color: #fff; + background-color: #1b5383; + border-color: #143e61; } + .btn-primary:active, .btn-primary.active, .open > .btn-primary.dropdown-toggle { + background-image: none; } + .btn-primary.disabled:hover, .btn-primary.disabled:focus, .btn-primary.disabled.focus, .btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled].focus, fieldset[disabled] .btn-primary:hover, fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary.focus { + background-color: #2a81cb; + border-color: #2a81cb; } + .btn-primary .badge { + color: #2a81cb; + background-color: #fff; } + +.btn-success { + color: #fff; + background-color: #3ca21a; + border-color: #3ca21a; } + .btn-success:focus, .btn-success.focus { + color: #fff; + background-color: #2c7613; + border-color: #133408; } + .btn-success:hover { + color: #fff; + background-color: #2c7613; + border-color: #286d12; } + .btn-success:active, .btn-success.active, .open > .btn-success.dropdown-toggle { + color: #fff; + background-color: #2c7613; + border-color: #286d12; } + .btn-success:active:hover, .btn-success:active:focus, .btn-success:active.focus, .btn-success.active:hover, .btn-success.active:focus, .btn-success.active.focus, .open > .btn-success.dropdown-toggle:hover, .open > .btn-success.dropdown-toggle:focus, .open > .btn-success.dropdown-toggle.focus { + color: #fff; + background-color: #20570e; + border-color: #133408; } + .btn-success:active, .btn-success.active, .open > .btn-success.dropdown-toggle { + background-image: none; } + .btn-success.disabled:hover, .btn-success.disabled:focus, .btn-success.disabled.focus, .btn-success[disabled]:hover, .btn-success[disabled]:focus, .btn-success[disabled].focus, fieldset[disabled] .btn-success:hover, fieldset[disabled] .btn-success:focus, fieldset[disabled] .btn-success.focus { + background-color: #3ca21a; + border-color: #3ca21a; } + .btn-success .badge { + color: #3ca21a; + background-color: #fff; } + +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; } + .btn-info:focus, .btn-info.focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85; } + .btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; } + .btn-info:active, .btn-info.active, .open > .btn-info.dropdown-toggle { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; } + .btn-info:active:hover, .btn-info:active:focus, .btn-info:active.focus, .btn-info.active:hover, .btn-info.active:focus, .btn-info.active.focus, .open > .btn-info.dropdown-toggle:hover, .open > .btn-info.dropdown-toggle:focus, .open > .btn-info.dropdown-toggle.focus { + color: #fff; + background-color: #269abc; + border-color: #1b6d85; } + .btn-info:active, .btn-info.active, .open > .btn-info.dropdown-toggle { + background-image: none; } + .btn-info.disabled:hover, .btn-info.disabled:focus, .btn-info.disabled.focus, .btn-info[disabled]:hover, .btn-info[disabled]:focus, .btn-info[disabled].focus, fieldset[disabled] .btn-info:hover, fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info.focus { + background-color: #5bc0de; + border-color: #46b8da; } + .btn-info .badge { + color: #5bc0de; + background-color: #fff; } + +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; } + .btn-warning:focus, .btn-warning.focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d; } + .btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512; } + .btn-warning:active, .btn-warning.active, .open > .btn-warning.dropdown-toggle { + color: #fff; + background-color: #ec971f; + border-color: #d58512; } + .btn-warning:active:hover, .btn-warning:active:focus, .btn-warning:active.focus, .btn-warning.active:hover, .btn-warning.active:focus, .btn-warning.active.focus, .open > .btn-warning.dropdown-toggle:hover, .open > .btn-warning.dropdown-toggle:focus, .open > .btn-warning.dropdown-toggle.focus { + color: #fff; + background-color: #d58512; + border-color: #985f0d; } + .btn-warning:active, .btn-warning.active, .open > .btn-warning.dropdown-toggle { + background-image: none; } + .btn-warning.disabled:hover, .btn-warning.disabled:focus, .btn-warning.disabled.focus, .btn-warning[disabled]:hover, .btn-warning[disabled]:focus, .btn-warning[disabled].focus, fieldset[disabled] .btn-warning:hover, fieldset[disabled] .btn-warning:focus, fieldset[disabled] .btn-warning.focus { + background-color: #f0ad4e; + border-color: #eea236; } + .btn-warning .badge { + color: #f0ad4e; + background-color: #fff; } + +.btn-danger { + color: #fff; + background-color: #e74924; + border-color: #e74924; } + .btn-danger:focus, .btn-danger.focus { + color: #fff; + background-color: #c33615; + border-color: #7e230e; } + .btn-danger:hover { + color: #fff; + background-color: #c33615; + border-color: #b93414; } + .btn-danger:active, .btn-danger.active, .open > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #c33615; + border-color: #b93414; } + .btn-danger:active:hover, .btn-danger:active:focus, .btn-danger:active.focus, .btn-danger.active:hover, .btn-danger.active:focus, .btn-danger.active.focus, .open > .btn-danger.dropdown-toggle:hover, .open > .btn-danger.dropdown-toggle:focus, .open > .btn-danger.dropdown-toggle.focus { + color: #fff; + background-color: #a22d12; + border-color: #7e230e; } + .btn-danger:active, .btn-danger.active, .open > .btn-danger.dropdown-toggle { + background-image: none; } + .btn-danger.disabled:hover, .btn-danger.disabled:focus, .btn-danger.disabled.focus, .btn-danger[disabled]:hover, .btn-danger[disabled]:focus, .btn-danger[disabled].focus, fieldset[disabled] .btn-danger:hover, fieldset[disabled] .btn-danger:focus, fieldset[disabled] .btn-danger.focus { + background-color: #e74924; + border-color: #e74924; } + .btn-danger .badge { + color: #e74924; + background-color: #fff; } + +.btn-link { + color: #337ab7; + font-weight: normal; + border-radius: 0; } + .btn-link, .btn-link:active, .btn-link.active, .btn-link[disabled], fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; } + .btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active { + border-color: transparent; } + .btn-link:hover, .btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; } + .btn-link[disabled]:hover, .btn-link[disabled]:focus, fieldset[disabled] .btn-link:hover, fieldset[disabled] .btn-link:focus { + color: #a6a8a9; + text-decoration: none; } + +.btn-lg, .btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33333; + border-radius: 6px; } + +.btn-sm, .btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; } + +.btn-xs, .btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; } + +.btn-block { + display: block; + width: 100%; } + +.btn-block + .btn-block { + margin-top: 5px; } + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; } + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; } + .fade.in { + opacity: 1; } + +.collapse { + display: none; } + .collapse.in { + display: block; } + +tr.collapse.in { + display: table-row; } + +tbody.collapse.in { + display: table-row-group; } + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-property: height, visibility; + transition-property: height, visibility; + -webkit-transition-duration: 0.35s; + transition-duration: 0.35s; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; } + +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; } + +.dropup, +.dropdown { + position: relative; } + +.dropdown-toggle:focus { + outline: 0; } + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + font-size: 14px; + text-align: left; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; } + .dropdown-menu.pull-right { + right: 0; + left: auto; } + .dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; } + .dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857; + color: #333333; + white-space: nowrap; } + +.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { + text-decoration: none; + color: #262626; + background-color: #f5f5f5; } + +.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + outline: 0; + background-color: #337ab7; } + +.dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { + color: #a6a8a9; } +.dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; } + +.open > .dropdown-menu { + display: block; } +.open > a { + outline: 0; } + +.dropdown-menu-right { + left: auto; + right: 0; } + +.dropdown-menu-left { + left: 0; + right: auto; } + +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857; + color: #a6a8a9; + white-space: nowrap; } + +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; } + +.pull-right > .dropdown-menu { + right: 0; + left: auto; } + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; + content: ""; } +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; } + +@media (min-width: 880px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; } } +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; } + .btn-group > .btn, + .btn-group-vertical > .btn { + position: relative; + float: left; } + .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, + .btn-group-vertical > .btn:hover, + .btn-group-vertical > .btn:focus, + .btn-group-vertical > .btn:active, + .btn-group-vertical > .btn.active { + z-index: 2; } + +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; } + +.btn-toolbar { + margin-left: -5px; } + .btn-toolbar:before, .btn-toolbar:after { + content: " "; + display: table; } + .btn-toolbar:after { + clear: both; } + .btn-toolbar .btn, + .btn-toolbar .btn-group, + .btn-toolbar .input-group { + float: left; } + .btn-toolbar > .btn, + .btn-toolbar > .btn-group, + .btn-toolbar > .input-group { + margin-left: 5px; } + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; } + +.btn-group > .btn:first-child { + margin-left: 0; } + .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + +.btn-group > .btn-group { + float: left; } + +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; } + +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; } + +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; } + +.btn-group > .btn-lg + .dropdown-toggle, .btn-group-lg.btn-group > .btn + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; } + +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } + .btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; } + +.btn .caret { + margin-left: 0; } + +.btn-lg .caret, .btn-group-lg > .btn .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; } + +.dropup .btn-lg .caret, .dropup .btn-group-lg > .btn .caret { + border-width: 0 5px 5px; } + +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; } +.btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after { + content: " "; + display: table; } +.btn-group-vertical > .btn-group:after { + clear: both; } +.btn-group-vertical > .btn-group > .btn { + float: none; } +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; } + +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; } +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; } + +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; } + +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } + +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; } + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; } + .btn-group-justified > .btn, + .btn-group-justified > .btn-group { + float: none; + display: table-cell; + width: 1%; } + .btn-group-justified > .btn-group .btn { + width: 100%; } + .btn-group-justified > .btn-group .dropdown-menu { + left: auto; } + +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; } + +.input-group { + position: relative; + display: table; + border-collapse: separate; } + .input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; } + .input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; } + .input-group .form-control:focus { + z-index: 3; } + +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; } + .input-group-addon:not(:first-child):not(:last-child), + .input-group-btn:not(:first-child):not(:last-child), + .input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; } + +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; } + +.input-group-addon { + padding: 10px 9px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555555; + text-align: center; + background-color: #eeeeee; + border: 1px solid #ccc; + border-radius: 4px; } + .input-group-addon.input-sm, + .input-group-sm > .input-group-addon, + .input-group-sm > .input-group-btn > .input-group-addon.btn { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; } + .input-group-addon.input-lg, + .input-group-lg > .input-group-addon, + .input-group-lg > .input-group-btn > .input-group-addon.btn { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; } + .input-group-addon input[type="radio"], + .input-group-addon input[type="checkbox"] { + margin-top: 0; } + +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + +.input-group-addon:first-child { + border-right: 0; } + +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + +.input-group-addon:last-child { + border-left: 0; } + +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; } + .input-group-btn > .btn { + position: relative; } + .input-group-btn > .btn + .btn { + margin-left: -1px; } + .input-group-btn > .btn:hover, .input-group-btn > .btn:focus, .input-group-btn > .btn:active { + z-index: 2; } + .input-group-btn:first-child > .btn, + .input-group-btn:first-child > .btn-group { + margin-right: -1px; } + .input-group-btn:last-child > .btn, + .input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; } + +.nav { + margin-bottom: 0; + padding-left: 0; + list-style: none; } + .nav:before, .nav:after { + content: " "; + display: table; } + .nav:after { + clear: both; } + .nav > li { + position: relative; + display: block; } + .nav > li > a { + position: relative; + display: block; + padding: 10px 15px; } + .nav > li > a:hover, .nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; } + .nav > li.disabled > a { + color: #a6a8a9; } + .nav > li.disabled > a:hover, .nav > li.disabled > a:focus { + color: #a6a8a9; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; } + .nav .open > a, .nav .open > a:hover, .nav .open > a:focus { + background-color: #eeeeee; + border-color: #337ab7; } + .nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; } + .nav > li > a > img { + max-width: none; } + +.nav-tabs { + border-bottom: 1px solid #ddd; } + .nav-tabs > li { + float: left; + margin-bottom: -1px; } + .nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; } + .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #ddd; } + .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { + color: #555555; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; } + +.nav-pills > li { + float: left; } + .nav-pills > li > a { + border-radius: 4px; } + .nav-pills > li + li { + margin-left: 2px; } + .nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; } + +.nav-stacked > li { + float: none; } + .nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; } + +.nav-justified, .nav-tabs.nav-justified { + width: 100%; } + .nav-justified > li, .nav-tabs.nav-justified > li { + float: none; } + .nav-justified > li > a, .nav-tabs.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; } + .nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; } + @media (min-width: 880px) { + .nav-justified > li, .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; } + .nav-justified > li > a, .nav-tabs.nav-justified > li > a { + margin-bottom: 0; } } + +.nav-tabs-justified, .nav-tabs.nav-justified { + border-bottom: 0; } + .nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; } + .nav-tabs-justified > .active > a, .nav-tabs.nav-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus, + .nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; } + @media (min-width: 880px) { + .nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; } + .nav-tabs-justified > .active > a, .nav-tabs.nav-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; } } + +.tab-content > .tab-pane { + display: none; } +.tab-content > .active { + display: block; } + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; } + +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; } + .navbar:before, .navbar:after { + content: " "; + display: table; } + .navbar:after { + clear: both; } + @media (min-width: 880px) { + .navbar { + border-radius: 4px; } } + +.navbar-header:before, .navbar-header:after { + content: " "; + display: table; } +.navbar-header:after { + clear: both; } +@media (min-width: 880px) { + .navbar-header { + float: left; } } + +.navbar-collapse { + overflow-x: visible; + padding-right: 15px; + padding-left: 15px; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; } + .navbar-collapse:before, .navbar-collapse:after { + content: " "; + display: table; } + .navbar-collapse:after { + clear: both; } + .navbar-collapse.in { + overflow-y: auto; } + @media (min-width: 880px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; } + .navbar-collapse.in { + overflow-y: visible; } + .navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { + padding-left: 0; + padding-right: 0; } } + +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; } + @media (max-device-width: 481px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; } } + +.container > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-header, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; } + @media (min-width: 880px) { + .container > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-header, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; } } + +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; } + @media (min-width: 880px) { + .navbar-static-top { + border-radius: 0; } } + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; } + @media (min-width: 880px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; } } + +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; } + +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; } + +.navbar-brand { + float: left; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; + height: 50px; } + .navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; } + .navbar-brand > img { + display: block; } + @media (min-width: 880px) { + .navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand { + margin-left: -15px; } } + +.navbar-toggle { + position: relative; + float: right; + margin-right: 15px; + padding: 9px 10px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; } + .navbar-toggle:focus { + outline: 0; } + .navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; } + .navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; } + @media (min-width: 880px) { + .navbar-toggle { + display: none; } } + +.navbar-nav { + margin: 7.5px -15px; } + .navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; } + @media (max-width: 879px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; } + .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; } } + @media (min-width: 880px) { + .navbar-nav { + float: left; + margin: 0; } + .navbar-nav > li { + float: left; } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; } } + +.navbar-form { + margin-left: -15px; + margin-right: -15px; + padding: 10px 15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 5px; + margin-bottom: 5px; } + @media (min-width: 880px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; } + .navbar-form .form-control-static { + display: inline-block; } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; } + .navbar-form .input-group > .form-control { + width: 100%; } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; } + .navbar-form .has-feedback .form-control-feedback { + top: 0; } } + @media (max-width: 879px) { + .navbar-form .form-group { + margin-bottom: 5px; } + .navbar-form .form-group:last-child { + margin-bottom: 0; } } + @media (min-width: 880px) { + .navbar-form { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + -webkit-box-shadow: none; + box-shadow: none; } } + +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; } + +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } + +.navbar-btn { + margin-top: 5px; + margin-bottom: 5px; } + .navbar-btn.btn-sm, .btn-group-sm > .navbar-btn.btn { + margin-top: 10px; + margin-bottom: 10px; } + .navbar-btn.btn-xs, .btn-group-xs > .navbar-btn.btn { + margin-top: 14px; + margin-bottom: 14px; } + +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; } + @media (min-width: 880px) { + .navbar-text { + float: left; + margin-left: 15px; + margin-right: 15px; } } + +@media (min-width: 880px) { + .navbar-left { + float: left !important; } + + .navbar-right { + float: right !important; + margin-right: -15px; } + .navbar-right ~ .navbar-right { + margin-right: 0; } } +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; } + .navbar-default .navbar-brand { + color: #777; } + .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; } + .navbar-default .navbar-text { + color: #777; } + .navbar-default .navbar-nav > li > a { + color: #777; } + .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; } + .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; } + .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; } + .navbar-default .navbar-toggle { + border-color: #ddd; } + .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { + background-color: #ddd; } + .navbar-default .navbar-toggle .icon-bar { + background-color: #888; } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + border-color: #e7e7e7; } + .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { + background-color: #e7e7e7; + color: #555; } + @media (max-width: 879px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; } } + .navbar-default .navbar-link { + color: #777; } + .navbar-default .navbar-link:hover { + color: #333; } + .navbar-default .btn-link { + color: #777; } + .navbar-default .btn-link:hover, .navbar-default .btn-link:focus { + color: #333; } + .navbar-default .btn-link[disabled]:hover, .navbar-default .btn-link[disabled]:focus, fieldset[disabled] .navbar-default .btn-link:hover, fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; } + +.navbar-inverse { + background-color: #222; + border-color: #090909; } + .navbar-inverse .navbar-brand { + color: #cdcecf; } + .navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; } + .navbar-inverse .navbar-text { + color: #cdcecf; } + .navbar-inverse .navbar-nav > li > a { + color: #cdcecf; } + .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; } + .navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #090909; } + .navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; } + .navbar-inverse .navbar-toggle { + border-color: #333; } + .navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus { + background-color: #333; } + .navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; } + .navbar-inverse .navbar-collapse, + .navbar-inverse .navbar-form { + border-color: #101010; } + .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { + background-color: #090909; + color: #fff; } + @media (max-width: 879px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #090909; } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #090909; } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #cdcecf; } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #090909; } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; } } + .navbar-inverse .navbar-link { + color: #cdcecf; } + .navbar-inverse .navbar-link:hover { + color: #fff; } + .navbar-inverse .btn-link { + color: #cdcecf; } + .navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus { + color: #fff; } + .navbar-inverse .btn-link[disabled]:hover, .navbar-inverse .btn-link[disabled]:focus, fieldset[disabled] .navbar-inverse .btn-link:hover, fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; } + +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; } + .breadcrumb > li { + display: inline-block; } + .breadcrumb > li + li:before { + content: "/ "; + padding: 0 5px; + color: #ccc; } + .breadcrumb > .active { + color: #a6a8a9; } + +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; } + .pagination > li { + display: inline; } + .pagination > li > a, + .pagination > li > span { + position: relative; + float: left; + padding: 10px 9px; + line-height: 1.42857; + text-decoration: none; + color: #337ab7; + background-color: #fff; + border: 1px solid #ddd; + margin-left: -1px; } + .pagination > li:first-child > a, + .pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; } + .pagination > li:last-child > a, + .pagination > li:last-child > span { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; } + .pagination > li > a:hover, .pagination > li > a:focus, + .pagination > li > span:hover, + .pagination > li > span:focus { + z-index: 2; + color: #23527c; + background-color: #eeeeee; + border-color: #ddd; } + .pagination > .active > a, .pagination > .active > a:hover, .pagination > .active > a:focus, + .pagination > .active > span, + .pagination > .active > span:hover, + .pagination > .active > span:focus { + z-index: 3; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; + cursor: default; } + .pagination > .disabled > span, + .pagination > .disabled > span:hover, + .pagination > .disabled > span:focus, + .pagination > .disabled > a, + .pagination > .disabled > a:hover, + .pagination > .disabled > a:focus { + color: #a6a8a9; + background-color: #fff; + border-color: #ddd; + cursor: not-allowed; } + +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33333; } +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; } +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-bottom-right-radius: 6px; + border-top-right-radius: 6px; } + +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; } +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; } +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } + +.pager { + padding-left: 0; + margin: 20px 0; + list-style: none; + text-align: center; } + .pager:before, .pager:after { + content: " "; + display: table; } + .pager:after { + clear: both; } + .pager li { + display: inline; } + .pager li > a, + .pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; } + .pager li > a:hover, + .pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; } + .pager .next > a, + .pager .next > span { + float: right; } + .pager .previous > a, + .pager .previous > span { + float: left; } + .pager .disabled > a, + .pager .disabled > a:hover, + .pager .disabled > a:focus, + .pager .disabled > span { + color: #a6a8a9; + background-color: #fff; + cursor: not-allowed; } + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; } + .label:empty { + display: none; } + .btn .label { + position: relative; + top: -1px; } + +a.label:hover, a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; } + +.label-default { + background-color: #a6a8a9; } + .label-default[href]:hover, .label-default[href]:focus { + background-color: #8c8f90; } + +.label-primary { + background-color: #2a81cb; } + .label-primary[href]:hover, .label-primary[href]:focus { + background-color: #2166a1; } + +.label-success { + background-color: #3ca21a; } + .label-success[href]:hover, .label-success[href]:focus { + background-color: #2c7613; } + +.label-info { + background-color: #5bc0de; } + .label-info[href]:hover, .label-info[href]:focus { + background-color: #31b0d5; } + +.label-warning { + background-color: #f0ad4e; } + .label-warning[href]:hover, .label-warning[href]:focus { + background-color: #ec971f; } + +.label-danger { + background-color: #e74924; } + .label-danger[href]:hover, .label-danger[href]:focus { + background-color: #c33615; } + +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + color: #fff; + line-height: 1; + vertical-align: middle; + white-space: nowrap; + text-align: center; + background-color: #a6a8a9; + border-radius: 10px; } + .badge:empty { + display: none; } + .btn .badge { + position: relative; + top: -1px; } + .btn-xs .badge, .btn-group-xs > .btn .badge, .btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; } + .list-group-item.active > .badge, .nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; } + .list-group-item > .badge { + float: right; } + .list-group-item > .badge + .badge { + margin-right: 5px; } + .nav-pills > li > a > .badge { + margin-left: 3px; } + +a.badge:hover, a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; } + +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eeeeee; } + .jumbotron h1, + .jumbotron .h1 { + color: inherit; } + .jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; } + .jumbotron > hr { + border-top-color: #d5d5d5; } + .container .jumbotron, .container-fluid .jumbotron { + border-radius: 6px; + padding-left: 15px; + padding-right: 15px; } + .jumbotron .container { + max-width: 100%; } + @media screen and (min-width: 880px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; } + .container .jumbotron, .container-fluid .jumbotron { + padding-left: 60px; + padding-right: 60px; } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; } } + +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border 0.2s ease-in-out; + -o-transition: border 0.2s ease-in-out; + transition: border 0.2s ease-in-out; } + .thumbnail > img, + .thumbnail a > img { + display: block; + max-width: 100%; + height: auto; + margin-left: auto; + margin-right: auto; } + .thumbnail .caption { + padding: 9px; + color: #333333; } + +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; } + +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; } + .alert h4 { + margin-top: 0; + color: inherit; } + .alert .alert-link { + font-weight: bold; } + .alert > p, + .alert > ul { + margin-bottom: 0; } + .alert > p + p { + margin-top: 5px; } + +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; } + .alert-dismissable .close, + .alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; } + +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #3ca21a; } + .alert-success hr { + border-top-color: #c9e2b3; } + .alert-success .alert-link { + color: #2c7613; } + +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #2a81cb; } + .alert-info hr { + border-top-color: #a6e1ec; } + .alert-info .alert-link { + color: #2166a1; } + +.alert-warning { + background-color: #fcf8e3; + border-color: #faebcc; + color: #8a6d3b; } + .alert-warning hr { + border-top-color: #f7e1b5; } + .alert-warning .alert-link { + color: #66512c; } + +.alert-danger { + background-color: #f2dede; + border-color: #ebccd1; + color: #e74924; } + .alert-danger hr { + border-top-color: #e4b9c0; } + .alert-danger .alert-link { + color: #c33615; } + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; } + to { + background-position: 0 0; } } +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; } + to { + background-position: 0 0; } } +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); } + +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; } + +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; } + +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; } + +.progress-bar-success { + background-color: #3ca21a; } + .progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } + +.progress-bar-info { + background-color: #2a81cb; } + .progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } + +.progress-bar-warning { + background-color: #f0ad4e; } + .progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } + +.progress-bar-danger { + background-color: #e74924; } + .progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } + +.media { + margin-top: 15px; } + .media:first-child { + margin-top: 0; } + +.media, +.media-body { + zoom: 1; + overflow: hidden; } + +.media-body { + width: 10000px; } + +.media-object { + display: block; } + .media-object.img-thumbnail { + max-width: none; } + +.media-right, +.media > .pull-right { + padding-left: 10px; } + +.media-left, +.media > .pull-left { + padding-right: 10px; } + +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; } + +.media-middle { + vertical-align: middle; } + +.media-bottom { + vertical-align: bottom; } + +.media-heading { + margin-top: 0; + margin-bottom: 5px; } + +.media-list { + padding-left: 0; + list-style: none; } + +.list-group { + margin-bottom: 20px; + padding-left: 0; } + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; } + .list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; } + .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; } + +a.list-group-item, +button.list-group-item { + color: #555; } + a.list-group-item .list-group-item-heading, + button.list-group-item .list-group-item-heading { + color: #333; } + a.list-group-item:hover, a.list-group-item:focus, + button.list-group-item:hover, + button.list-group-item:focus { + text-decoration: none; + color: #555; + background-color: #f5f5f5; } + +button.list-group-item { + width: 100%; + text-align: left; } + +.list-group-item.disabled, .list-group-item.disabled:hover, .list-group-item.disabled:focus { + background-color: #eeeeee; + color: #a6a8a9; + cursor: not-allowed; } + .list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading { + color: inherit; } + .list-group-item.disabled .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text { + color: #a6a8a9; } +.list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; } + .list-group-item.active .list-group-item-heading, + .list-group-item.active .list-group-item-heading > small, + .list-group-item.active .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading, + .list-group-item.active:hover .list-group-item-heading > small, + .list-group-item.active:hover .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading, + .list-group-item.active:focus .list-group-item-heading > small, + .list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; } + .list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text { + color: #c7ddef; } + +.list-group-item-success { + color: #3ca21a; + background-color: #dff0d8; } + +a.list-group-item-success, +button.list-group-item-success { + color: #3ca21a; } + a.list-group-item-success .list-group-item-heading, + button.list-group-item-success .list-group-item-heading { + color: inherit; } + a.list-group-item-success:hover, a.list-group-item-success:focus, + button.list-group-item-success:hover, + button.list-group-item-success:focus { + color: #3ca21a; + background-color: #d0e9c6; } + a.list-group-item-success.active, a.list-group-item-success.active:hover, a.list-group-item-success.active:focus, + button.list-group-item-success.active, + button.list-group-item-success.active:hover, + button.list-group-item-success.active:focus { + color: #fff; + background-color: #3ca21a; + border-color: #3ca21a; } + +.list-group-item-info { + color: #2a81cb; + background-color: #d9edf7; } + +a.list-group-item-info, +button.list-group-item-info { + color: #2a81cb; } + a.list-group-item-info .list-group-item-heading, + button.list-group-item-info .list-group-item-heading { + color: inherit; } + a.list-group-item-info:hover, a.list-group-item-info:focus, + button.list-group-item-info:hover, + button.list-group-item-info:focus { + color: #2a81cb; + background-color: #c4e3f3; } + a.list-group-item-info.active, a.list-group-item-info.active:hover, a.list-group-item-info.active:focus, + button.list-group-item-info.active, + button.list-group-item-info.active:hover, + button.list-group-item-info.active:focus { + color: #fff; + background-color: #2a81cb; + border-color: #2a81cb; } + +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; } + +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; } + a.list-group-item-warning .list-group-item-heading, + button.list-group-item-warning .list-group-item-heading { + color: inherit; } + a.list-group-item-warning:hover, a.list-group-item-warning:focus, + button.list-group-item-warning:hover, + button.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; } + a.list-group-item-warning.active, a.list-group-item-warning.active:hover, a.list-group-item-warning.active:focus, + button.list-group-item-warning.active, + button.list-group-item-warning.active:hover, + button.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; } + +.list-group-item-danger { + color: #e74924; + background-color: #f2dede; } + +a.list-group-item-danger, +button.list-group-item-danger { + color: #e74924; } + a.list-group-item-danger .list-group-item-heading, + button.list-group-item-danger .list-group-item-heading { + color: inherit; } + a.list-group-item-danger:hover, a.list-group-item-danger:focus, + button.list-group-item-danger:hover, + button.list-group-item-danger:focus { + color: #e74924; + background-color: #ebcccc; } + a.list-group-item-danger.active, a.list-group-item-danger.active:hover, a.list-group-item-danger.active:focus, + button.list-group-item-danger.active, + button.list-group-item-danger.active:hover, + button.list-group-item-danger.active:focus { + color: #fff; + background-color: #e74924; + border-color: #e74924; } + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; } + +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; } + +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); } + +.panel-body { + padding: 15px; } + .panel-body:before, .panel-body:after { + content: " "; + display: table; } + .panel-body:after { + clear: both; } + +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; } + .panel-heading > .dropdown .dropdown-toggle { + color: inherit; } + +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; } + .panel-title > a, + .panel-title > small, + .panel-title > .small, + .panel-title > small > a, + .panel-title > .small > a { + color: inherit; } + +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; } + +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; } + .panel > .list-group .list-group-item, + .panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; } + .panel > .list-group:first-child .list-group-item:first-child, + .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-right-radius: 3px; + border-top-left-radius: 3px; } + .panel > .list-group:last-child .list-group-item:last-child, + .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; } +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; } + +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; } + +.list-group + .panel-footer { + border-top-width: 0; } + +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; } + .panel > .table caption, + .panel > .table-responsive > .table caption, + .panel > .panel-collapse > .table caption { + padding-left: 15px; + padding-right: 15px; } +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: 3px; + border-top-left-radius: 3px; } + .panel > .table:first-child > thead:first-child > tr:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, + .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; } + .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, + .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, + .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, + .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; } +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; } + .panel > .table:last-child > tbody:last-child > tr:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; } + .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, + .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; } + .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, + .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; } +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; } +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; } +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; } + .panel > .table-bordered > thead > tr > th:first-child, + .panel > .table-bordered > thead > tr > td:first-child, + .panel > .table-bordered > tbody > tr > th:first-child, + .panel > .table-bordered > tbody > tr > td:first-child, + .panel > .table-bordered > tfoot > tr > th:first-child, + .panel > .table-bordered > tfoot > tr > td:first-child, + .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, + .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, + .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, + .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; } + .panel > .table-bordered > thead > tr > th:last-child, + .panel > .table-bordered > thead > tr > td:last-child, + .panel > .table-bordered > tbody > tr > th:last-child, + .panel > .table-bordered > tbody > tr > td:last-child, + .panel > .table-bordered > tfoot > tr > th:last-child, + .panel > .table-bordered > tfoot > tr > td:last-child, + .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, + .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, + .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, + .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; } + .panel > .table-bordered > thead > tr:first-child > td, + .panel > .table-bordered > thead > tr:first-child > th, + .panel > .table-bordered > tbody > tr:first-child > td, + .panel > .table-bordered > tbody > tr:first-child > th, + .panel > .table-responsive > .table-bordered > thead > tr:first-child > td, + .panel > .table-responsive > .table-bordered > thead > tr:first-child > th, + .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, + .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; } + .panel > .table-bordered > tbody > tr:last-child > td, + .panel > .table-bordered > tbody > tr:last-child > th, + .panel > .table-bordered > tfoot > tr:last-child > td, + .panel > .table-bordered > tfoot > tr:last-child > th, + .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, + .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, + .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, + .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; } +.panel > .table-responsive { + border: 0; + margin-bottom: 0; } + +.panel-group { + margin-bottom: 20px; } + .panel-group .panel { + margin-bottom: 0; + border-radius: 4px; } + .panel-group .panel + .panel { + margin-top: 5px; } + .panel-group .panel-heading { + border-bottom: 0; } + .panel-group .panel-heading + .panel-collapse > .panel-body, + .panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; } + .panel-group .panel-footer { + border-top: 0; } + .panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; } + +.panel-default { + border-color: #ddd; } + .panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #ddd; } + .panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; } + .panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333333; } + .panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; } + +.panel-primary { + border-color: #337ab7; } + .panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; } + .panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; } + .panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; } + .panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; } + +.panel-success { + border-color: #d6e9c6; } + .panel-success > .panel-heading { + color: #3ca21a; + background-color: #dff0d8; + border-color: #d6e9c6; } + .panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; } + .panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3ca21a; } + .panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; } + +.panel-info { + border-color: #bce8f1; } + .panel-info > .panel-heading { + color: #2a81cb; + background-color: #d9edf7; + border-color: #bce8f1; } + .panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; } + .panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #2a81cb; } + .panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; } + +.panel-warning { + border-color: #faebcc; } + .panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; } + .panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; } + .panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; } + .panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; } + +.panel-danger { + border-color: #ebccd1; } + .panel-danger > .panel-heading { + color: #e74924; + background-color: #f2dede; + border-color: #ebccd1; } + .panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; } + .panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #e74924; } + .panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; } + +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; } + .embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { + position: absolute; + top: 0; + left: 0; + bottom: 0; + height: 100%; + width: 100%; + border: 0; } + +.embed-responsive-16by9 { + padding-bottom: 56.25%; } + +.embed-responsive-4by3 { + padding-bottom: 75%; } + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); } + .well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); } + +.well-lg { + padding: 24px; + border-radius: 6px; } + +.well-sm { + padding: 9px; + border-radius: 3px; } + +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: 0.2; + filter: alpha(opacity=20); } + .close:hover, .close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); } + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; } + +.modal-open { + overflow: hidden; } + +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + -webkit-overflow-scrolling: touch; + outline: 0; } + .modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; } + .modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); } + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; } + +.modal-dialog { + position: relative; + width: auto; + margin: 10px; } + +.modal-content { + position: relative; + background-color: #fff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; + outline: 0; } + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; } + .modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); } + .modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); } + +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; } + .modal-header:before, .modal-header:after { + content: " "; + display: table; } + .modal-header:after { + clear: both; } + +.modal-header .close { + margin-top: -2px; } + +.modal-title { + margin: 0; + line-height: 1.42857; } + +.modal-body { + position: relative; + padding: 15px; } + +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; } + .modal-footer:before, .modal-footer:after { + content: " "; + display: table; } + .modal-footer:after { + clear: both; } + .modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; } + .modal-footer .btn-group .btn + .btn { + margin-left: -1px; } + .modal-footer .btn-block + .btn-block { + margin-left: 0; } + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; } + +@media (min-width: 880px) { + .modal-dialog { + width: 600px; + margin: 30px auto; } + + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); } + + .modal-sm { + width: 300px; } } +@media (min-width: 1210px) { + .modal-lg { + width: 900px; } } +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.42857; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 12px; + opacity: 0; + filter: alpha(opacity=0); } + .tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); } + .tooltip.top { + margin-top: -3px; + padding: 5px 0; } + .tooltip.right { + margin-left: 3px; + padding: 0 5px; } + .tooltip.bottom { + margin-top: 3px; + padding: 5px 0; } + .tooltip.left { + margin-left: -3px; + padding: 0 5px; } + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px; } + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; } + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; } +.tooltip.top-left .tooltip-arrow { + bottom: 0; + right: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; } +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; } +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; } +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; } +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; } +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; } +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; } + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.42857; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 14px; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); } + .popover.top { + margin-top: -10px; } + .popover.right { + margin-left: 10px; } + .popover.bottom { + margin-top: 10px; } + .popover.left { + margin-left: -10px; } + +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; } + +.popover-content { + padding: 9px 14px; } + +.popover > .arrow, .popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; } + +.popover > .arrow { + border-width: 11px; } + +.popover > .arrow:after { + border-width: 10px; + content: ""; } + +.popover.top > .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; } + .popover.top > .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #fff; } +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); } + .popover.right > .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #fff; } +.popover.bottom > .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; } + .popover.bottom > .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #fff; } +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); } + .popover.left > .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #fff; + bottom: -10px; } + +.carousel { + position: relative; } + +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; } + .carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; } + .carousel-inner > .item > img, + .carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; + line-height: 1; } + @media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + -moz-transition: -moz-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + -moz-perspective: 1000px; + perspective: 1000px; } + .carousel-inner > .item.next, .carousel-inner > .item.active.right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + left: 0; } + .carousel-inner > .item.prev, .carousel-inner > .item.active.left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; } + .carousel-inner > .item.next.left, .carousel-inner > .item.prev.right, .carousel-inner > .item.active { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + left: 0; } } + .carousel-inner > .active, + .carousel-inner > .next, + .carousel-inner > .prev { + display: block; } + .carousel-inner > .active { + left: 0; } + .carousel-inner > .next, + .carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; } + .carousel-inner > .next { + left: 100%; } + .carousel-inner > .prev { + left: -100%; } + .carousel-inner > .next.left, + .carousel-inner > .prev.right { + left: 0; } + .carousel-inner > .active.left { + left: -100%; } + .carousel-inner > .active.right { + left: 100%; } + +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 15%; + opacity: 0.5; + filter: alpha(opacity=50); + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + background-color: transparent; } + .carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); } + .carousel-control.right { + left: auto; + right: 0; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); } + .carousel-control:hover, .carousel-control:focus { + outline: 0; + color: #fff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); } + .carousel-control .icon-prev, + .carousel-control .icon-next, + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + margin-top: -10px; + z-index: 5; + display: inline-block; } + .carousel-control .icon-prev, + .carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; } + .carousel-control .icon-next, + .carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; } + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 20px; + height: 20px; + line-height: 1; + font-family: serif; } + .carousel-control .icon-prev:before { + content: '\2039'; } + .carousel-control .icon-next:before { + content: '\203a'; } + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; } + .carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid #fff; + border-radius: 10px; + cursor: pointer; + background-color: #000 \9; + background-color: transparent; } + .carousel-indicators .active { + margin: 0; + width: 12px; + height: 12px; + background-color: #fff; } + +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); } + .carousel-caption .btn { + text-shadow: none; } + +@media screen and (min-width: 880px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; } + + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; } + + .carousel-indicators { + bottom: 20px; } } +.clearfix:before, .clearfix:after { + content: " "; + display: table; } +.clearfix:after { + clear: both; } + +.center-block { + display: block; + margin-left: auto; + margin-right: auto; } + +.pull-right { + float: right !important; } + +.pull-left { + float: left !important; } + +.hide { + display: none !important; } + +.show { + display: block !important; } + +.invisible { + visibility: hidden; } + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; } + +.hidden { + display: none !important; } + +.affix { + position: fixed; } + +@-ms-viewport { + width: device-width; } +.visible-xs { + display: none !important; } + +.visible-sm { + display: none !important; } + +.visible-md { + display: none !important; } + +.visible-lg { + display: none !important; } + +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; } + +@media (max-width: 879px) { + .visible-xs { + display: block !important; } + + table.visible-xs { + display: table !important; } + + tr.visible-xs { + display: table-row !important; } + + th.visible-xs, + td.visible-xs { + display: table-cell !important; } } +@media (max-width: 879px) { + .visible-xs-block { + display: block !important; } } + +@media (max-width: 879px) { + .visible-xs-inline { + display: inline !important; } } + +@media (max-width: 879px) { + .visible-xs-inline-block { + display: inline-block !important; } } + +@media (min-width: 880px) and (max-width: 1209px) { + .visible-sm { + display: block !important; } + + table.visible-sm { + display: table !important; } + + tr.visible-sm { + display: table-row !important; } + + th.visible-sm, + td.visible-sm { + display: table-cell !important; } } +@media (min-width: 880px) and (max-width: 1209px) { + .visible-sm-block { + display: block !important; } } + +@media (min-width: 880px) and (max-width: 1209px) { + .visible-sm-inline { + display: inline !important; } } + +@media (min-width: 880px) and (max-width: 1209px) { + .visible-sm-inline-block { + display: inline-block !important; } } + +@media (min-width: 1210px) and (max-width: 1399px) { + .visible-md { + display: block !important; } + + table.visible-md { + display: table !important; } + + tr.visible-md { + display: table-row !important; } + + th.visible-md, + td.visible-md { + display: table-cell !important; } } +@media (min-width: 1210px) and (max-width: 1399px) { + .visible-md-block { + display: block !important; } } + +@media (min-width: 1210px) and (max-width: 1399px) { + .visible-md-inline { + display: inline !important; } } + +@media (min-width: 1210px) and (max-width: 1399px) { + .visible-md-inline-block { + display: inline-block !important; } } + +@media (min-width: 1400px) { + .visible-lg { + display: block !important; } + + table.visible-lg { + display: table !important; } + + tr.visible-lg { + display: table-row !important; } + + th.visible-lg, + td.visible-lg { + display: table-cell !important; } } +@media (min-width: 1400px) { + .visible-lg-block { + display: block !important; } } + +@media (min-width: 1400px) { + .visible-lg-inline { + display: inline !important; } } + +@media (min-width: 1400px) { + .visible-lg-inline-block { + display: inline-block !important; } } + +@media (max-width: 879px) { + .hidden-xs { + display: none !important; } } +@media (min-width: 880px) and (max-width: 1209px) { + .hidden-sm { + display: none !important; } } +@media (min-width: 1210px) and (max-width: 1399px) { + .hidden-md { + display: none !important; } } +@media (min-width: 1400px) { + .hidden-lg { + display: none !important; } } +.visible-print { + display: none !important; } + +@media print { + .visible-print { + display: block !important; } + + table.visible-print { + display: table !important; } + + tr.visible-print { + display: table-row !important; } + + th.visible-print, + td.visible-print { + display: table-cell !important; } } +.visible-print-block { + display: none !important; } + @media print { + .visible-print-block { + display: block !important; } } + +.visible-print-inline { + display: none !important; } + @media print { + .visible-print-inline { + display: inline !important; } } + +.visible-print-inline-block { + display: none !important; } + @media print { + .visible-print-inline-block { + display: inline-block !important; } } + +@media print { + .hidden-print { + display: none !important; } } +.navbar .navbar-collapse li > a { + color: #fff; + font: 18px/20px "RobotoLight"; } + +.no-logo .default-logo { + width: 365px; + height: 329px; + background-size: 365px 329px !important; } + +.retina.headquarter { + width: 260px; + height: 82px; + background-size: 260px 82px !important; } + +.page-header .maintenance-mode { + font: 26px/28px "RobotoLight"; + color: #3f3f3f; + margin-bottom: 22px; } + +.get-interviewer-app, .cancelable-progress .wrapper-progress > span, .table thead, .dataTables_paginate { + font: 12px/14px "TrebuchetMSBold"; + text-transform: uppercase; + letter-spacing: 0.13em; } + +.btn-link, .table tbody tr td.parameters span, .breadcrumb > li:after, .breadcrumb li a { + color: #a6a8a9; + font: 11px/13px "TrebuchetMSBold"; + letter-spacing: 1px; + text-transform: uppercase; } + +.filters { + height: auto; + overflow: auto; + top: 0; + left: 0; + bottom: 0; + margin-top: 70px; + padding-bottom: 50px; + overflow: auto; + position: fixed; + background-color: #fff; + z-index: 5; + -webkit-transition: left 0.3s linear 0s; + -moz-transition: left 0.3s linear 0s; + -ms-transition: left 0.3s linear 0s; + -o-transition: left 0.3s linear 0s; + transition: left 0.3s linear 0s; } + +input.wb-checkbox ~ label .tick, .radio input.wb-radio ~ label .tick, input.radio-row ~ label .tick { + display: inline-block; + width: 18px; + height: 18px; + background: transparent url("../img/questionnaire-sprite.png") no-repeat; + vertical-align: middle; + background-size: 793px 18px; + background-position: 4px 2px; + margin-right: 12px; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + input.wb-checkbox ~ label .tick, .radio input.wb-radio ~ label .tick, input.radio-row ~ label .tick { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/questionnaire-sprite2k.png"); + background-size: 793px 18px; } } + +.combo-box input:checked ~ .btn-clear, .answered > .btn-clear, .field.answered .btn-clear, .field.has-error .btn-clear, .active-search .search .btn-clear, .combo-box .btn-clear, .aside-menu.open > .dropdown-menu, .dataTables_wrapper .dataTables_filter label.active input { + visibility: visible; + opacity: 1; + filter: alpha(opacity=100); } + +.btn-clear, .search .btn-clear, .aside-menu .dropdown-menu, .dataTables_wrapper .dataTables_filter label input { + opacity: 0; + filter: alpha(opacity=0); + visibility: hidden; } + +.search .btn-clear:hover, .search .form-control:hover, .search .btn-clear:focus, .search .form-control:focus, .search .btn-clear:active, .search .form-control:active, .search .active.btn-clear:focus, .search .active.form-control:focus { + box-shadow: none; } + +.dataTables_processing, .loading { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 100; + width: 100%; + text-align: center; + height: 100%; + background: rgba(0, 0, 0, 0.1); } + .dataTables_processing div, .loading div { + background-color: white; + padding: 30px 40px; + display: inline-block; + font: 24px/26px "RobotoLight"; + margin-top: 10px; + box-shadow: 9px 9px 3px rgba(0, 0, 0, 0.1), 0 0 3px #a6a8a9; } + +.combo-box .dropdown-toggle:hover, .field .field-to-fill:hover, .combo-box .dropdown-toggle:focus, .field .field-to-fill:focus, .combo-box .dropdown-toggle:active, .field .field-to-fill:active, .form-control:hover, .form-control:focus, .form-control:active, .form-control:active:focus, .has-error .information-block .form-control:hover, .has-error .information-block .form-control:focus, .has-error .information-block .form-control:active, .has-error .information-block .form-control:active:focus, .bootstrap-select.btn-group .dropdown-toggle:hover, .bootstrap-select.btn-group .dropdown-toggle:focus, .bootstrap-select.btn-group .dropdown-toggle:active, .bootstrap-select.btn-group .dropdown-toggle:active:focus, .bootstrap-select.btn-group.open .dropdown-toggle, .btn-input .dropdown-toggle:hover, .btn-input .dropdown-toggle:focus, .btn-input .dropdown-toggle:active, .btn-input .dropdown-toggle:active:focus, .btn-input.open .dropdown-toggle { + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); } + +.combo-box .dropdown-toggle, .field .field-to-fill { + width: 100%; + padding: 11px 12px; + border: none; + font-size: 14px; + line-height: 18px; + font-weight: bold; + padding-right: 38px; + border-radius: 5px; } + .combo-box .dropdown-toggle:hover, .field .field-to-fill:hover, .combo-box .dropdown-toggle:focus, .field .field-to-fill:focus, .combo-box .dropdown-toggle:active, .field .field-to-fill:active, .combo-box .dropdown-toggle:active:focus, .field .field-to-fill:active:focus { + outline: none; } + +.combo-box .dropdown-toggle { + height: 40px; + padding: 11px 38px 11px 10px; } + .combo-box .dropdown-toggle span { + position: static; + font: 14px/18px Arial, sans-serif; + font-weight: bold; + letter-spacing: normal; + text-transform: none; + color: #3f3f3f; } + .combo-box .dropdown-toggle span.gray-text { + color: #a6a8a9; + font-weight: normal; + font-style: italic; } + .combo-box .dropdown-toggle:hover, .combo-box .dropdown-toggle:focus, .combo-box .dropdown-toggle:active { + z-index: 0; } +.combo-box .btn-input.open > .dropdown-menu { + width: 100%; + padding: 5px 10px; } + .combo-box .btn-input.open > .dropdown-menu li { + border-bottom: 1px solid #dbdfe2; } + .combo-box .btn-input.open > .dropdown-menu li > input { + width: 100%; + border: none; + padding: 7px 10px; } + .combo-box .btn-input.open > .dropdown-menu li:last-child { + border: none; } +@media (max-width: 1210px) { + .combo-box .btn-input.open > .dropdown-menu { + width: 100%; } } + +.filters-container > *, .preset-filters-container > * { + margin-left: 10px; } +.filters-container > .block-filter, .preset-filters-container > .block-filter { + margin-left: 0; } + .filters-container > .block-filter > *, .preset-filters-container > .block-filter > * { + margin-left: 10px; } + .filters-container > .block-filter .btn-group.bootstrap-select, .preset-filters-container > .block-filter .btn-group.bootstrap-select, .filters-container > .block-filter .combo-box, .preset-filters-container > .block-filter .combo-box, .filters-container > .block-filter .input-group, .preset-filters-container > .block-filter .input-group, .filters-container > .block-filter .field, .preset-filters-container > .block-filter .field { + margin-left: 0 !important; } + +.btn { + font: 12px/14px "TrebuchetMSBold"; + text-transform: uppercase; + letter-spacing: 0.13em; + -webkit-transition: background 0.2s linear 0s; + -moz-transition: background 0.2s linear 0s; + -ms-transition: background 0.2s linear 0s; + -o-transition: background 0.2s linear 0s; + transition: background 0.2s linear 0s; + word-break: break-word; } + .btn:disabled, .btn.disabled { + border-color: #d7d7d7 !important; + color: #a6a8a9 !important; + cursor: not-allowed; + background-image: -webkit-linear-gradient(-45deg, #d7d7d7 15%, #fff 15%, #fff 50%, #d7d7d7 50%, #d7d7d7 65%, #fff 65%, #fff); + background-image: -o-linear-gradient(-45deg, #d7d7d7 15%, #fff 15%, #fff 50%, #d7d7d7 50%, #d7d7d7 65%, #fff 65%, #fff); + background-image: -moz-linear-gradient(-45deg, #d7d7d7 15%, #fff 15%, #fff 50%, #d7d7d7 50%, #d7d7d7 65%, #fff 65%, #fff); + background-image: linear-gradient(-45deg, #d7d7d7 15%, #fff 15%, #fff 50%, #d7d7d7 50%, #d7d7d7 65%, #fff 65%, #fff); + background-size: 8px 8px; } + .btn:disabled.btn-clear, .btn.disabled.btn-clear { + background: none; + border-color: transparent !important; } + .btn:disabled:hover, .btn:disabled:focus, .btn.disabled:hover, .btn.disabled:focus { + border-color: #d7d7d7; + outline: none; + box-shadow: none !important; } + +a.disabled { + pointer-events: none; + cursor: not-allowed; } + a.disabled.btn { + background-color: #f3f3f3; } + +.btn-link { + color: #2a81cb; } + .btn-link:hover, .btn-link:focus { + text-decoration: none; + color: #1d598c; } + +.foldback-button { + display: none; + width: 50px; + height: 46px; + cursor: pointer; + position: absolute; + top: 5px; + right: 0; + border-radius: 4px; + z-index: 3; } + .foldback-button:hover span.arrow, .foldback-button:focus span.arrow { + background-color: black; } + .foldback-button:hover .glyphicon, .foldback-button:focus .glyphicon { + color: black; } + .foldback-button span.arrow { + display: inline-block; + width: 20px; + height: 2px; + background-color: rgba(0, 0, 0, 0.5); + position: absolute; + top: 28px; + right: 10px; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); } + .foldback-button span.arrow:first-of-type { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); + top: 15.33333px; } + .foldback-button .glyphicon { + display: none; + color: rgba(0, 0, 0, 0.5); + font-size: 18px; + top: 15.33333px; + left: 10px; } + +.humburger-foldback-button { + border-radius: 4px; + position: absolute; + top: 0; + left: 20px; + display: block; + width: 42px; + height: 32px; + cursor: pointer; + z-index: 3; + top: calc(50% - 18px); + display: block; } + .humburger-foldback-button:before, .humburger-foldback-button:after { + content: ""; + display: block; + width: 22px; + height: 2px; + position: absolute; + top: 24px; + right: 10px; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + background-color: rgba(255, 255, 255, 0.8); } + .humburger-foldback-button span { + display: block; + width: 22px; + height: 2px; + background-color: rgba(255, 255, 255, 0.8); + position: absolute; + top: 16px; + left: 10px; + visibility: hidden; } + .humburger-foldback-button:after { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); + top: 9px; } + .humburger-foldback-button:hover span, .humburger-foldback-button:focus span, .humburger-foldback-button:active span { + background-color: white; } + .humburger-foldback-button:hover:before, .humburger-foldback-button:hover:after, .humburger-foldback-button:focus:before, .humburger-foldback-button:focus:after, .humburger-foldback-button:active:before, .humburger-foldback-button:active:after { + background-color: white; } + +@media only screen and (max-width: 615px) { + .humburger-foldback-button { + left: 0; } } +@media (max-width: 880px) { + .humburger-foldback-button:before, .humburger-foldback-button:after { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); } + .humburger-foldback-button:after { + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); } } +.btn-default.btn-gray { + color: #fff; + padding: 12px; + background-color: #a6a8a9; + border: none; } + .btn-default.btn-gray:hover, .btn-default.btn-gray:focus { + border: none; + background-color: #8c8f90; } +.btn-default.btn-post-comment { + padding: 12px; + background-color: #fff; + color: #a6a8a9; + border-color: #dbdfe2; + border-radius: 5px; } + .btn-default.btn-post-comment:hover, .btn-default.btn-post-comment:focus, .btn-default.btn-post-comment:active, .btn-default.btn-post-comment.comment-added { + color: #2a81cb; + border-color: #2a81cb; + background-color: transparent; } + .btn-default.btn-post-comment:active { + background-color: #dfeaf4; + box-shadow: none; } + +.comment .input-group .input-group-btn { + padding-left: 5px; } + +.input-group .input-group-btn .btn.btn-post-comment { + padding: 12px; + color: #a6a8a9; + background-color: #fff; + border-color: #dbdfe2; + border-radius: 5px; + border-left: 1px solid #dbdfe2; } + .input-group .input-group-btn .btn.btn-post-comment:hover, .input-group .input-group-btn .btn.btn-post-comment:focus, .input-group .input-group-btn .btn.btn-post-comment:active, .input-group .input-group-btn .btn.btn-post-comment.comment-added { + color: #2a81cb; + border-color: #2a81cb; + background-color: #fff; } + .input-group .input-group-btn .btn.btn-post-comment:active { + background-color: #dfeaf4; + box-shadow: none; } + .input-group .input-group-btn .btn.btn-post-comment:disabled { + background-image: -webkit-linear-gradient(-45deg, #dbdfe2 15%, #fff 15%, #fff 50%, #dbdfe2 50%, #dbdfe2 65%, #fff 65%, #fff); + background-image: -o-linear-gradient(-45deg, #dbdfe2 15%, #fff 15%, #fff 50%, #dbdfe2 50%, #dbdfe2 65%, #fff 65%, #fff); + background-image: -moz-linear-gradient(-45deg, #dbdfe2 15%, #fff 15%, #fff 50%, #dbdfe2 50%, #dbdfe2 65%, #fff 65%, #fff); + background-image: linear-gradient(-45deg, #dbdfe2 15%, #fff 15%, #fff 50%, #dbdfe2 50%, #dbdfe2 65%, #fff 65%, #fff); + background-size: 8px 8px; } + +.back-link { + text-transform: uppercase; + font: 12.5px/14px "TrebuchetMSBold"; + letter-spacing: 0.13em; + display: inline-block; } + +#hidden-links { + display: none; } + +.cancel { + border: none; + background-color: transparent; + width: 24px; + height: 24px; + position: relative; + margin: 0; + opacity: 0.5; + filter: alpha(opacity=50); + display: block; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; } + .cancel:before, .cancel:after { + display: block; + content: ""; + width: 24px; + height: 2px; + background-color: #a6a8a9; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: relative; + top: 11px; + -webkit-transition: background 0.2s linear 0s; + -moz-transition: background 0.2s linear 0s; + -ms-transition: background 0.2s linear 0s; + -o-transition: background 0.2s linear 0s; + transition: background 0.2s linear 0s; } + .cancel:after { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); + top: 9px; } + .cancel:hover:before, .cancel:hover:after, .cancel:focus:before, .cancel:focus:after, .cancel:active:before, .cancel:active:after { + background-color: #595c5d; } + +.button-flag, .flag:before { + display: inline-block; + width: 19px; + height: 22px; + background: transparent url("../img/flags.png") no-repeat; + background-size: 75px 22px; + background-position: -38px 0; + border: none; + outline: none; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + .button-flag, .flag:before { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/flags2k.png"); + background-size: 75px 22px; } } + .button-flag:hover, .flag:hover:before, .button-flag:focus, .flag:focus:before { + background-position: -57px 0; } + +.reject { + border-width: 3px; + border-color: #e74924; + padding-top: 8px; + padding-bottom: 8px; + background-color: #fff; + color: #e74924; } + .reject:focus, .reject.focus, .reject:hover { + color: #c33615; + border-color: #c33615; } + +.btn-clear { + position: absolute; + top: 0; + right: 0; } + .btn-clear:active span:before, .btn-clear:active span:after, .btn-clear:active:focus span:before, .btn-clear:active:focus span:after, .btn-clear:focus span:before, .btn-clear:focus span:after { + background-color: #000; + opacity: 1; + filter: alpha(opacity=100); } + .btn-clear span { + background-color: transparent; + width: 18px; + height: 18px; + position: relative; + margin: 0; + opacity: 0.5; + filter: alpha(opacity=50); + display: block; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; } + .btn-clear span:before, .btn-clear span:after { + display: block; + content: ""; + width: 18px; + height: 2px; + background-color: #a6a8a9; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: relative; + top: 8px; + -webkit-transition: background 0.2s linear 0s; + -moz-transition: background 0.2s linear 0s; + -ms-transition: background 0.2s linear 0s; + -o-transition: background 0.2s linear 0s; + transition: background 0.2s linear 0s; } + .btn-clear span:after { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); + top: 6px; } + .btn-clear span:hover:before, .btn-clear span:hover:after, .btn-clear span:focus:before, .btn-clear span:focus:after, .btn-clear span:active:before, .btn-clear span:active:after { + background-color: #595c5d; } + +.btn-action-questionnaire { + background-color: #fff; + border-color: transparent; + color: #a6a8a9; + border-radius: 5px; + text-transform: none; + letter-spacing: 0.5px; + font: 14px/18px Arial, sans-serif; + font-style: italic; } + .btn-action-questionnaire:hover, .btn-action-questionnaire:focus, .btn-action-questionnaire:active { + background-color: #ececec; + border-color: #8c8f90; + color: #737576; } + +.btn-plus { + background-color: transparent; + width: 14px; + height: 14px; + position: relative; + margin: 0; + opacity: 0.5; + filter: alpha(opacity=50); + display: block; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + opacity: 1; + filter: alpha(opacity=100); } + .btn-plus:before, .btn-plus:after { + display: block; + content: ""; + width: 14px; + height: 2px; + background-color: #a6a8a9; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: relative; + top: 6px; + -webkit-transition: background 0.2s linear 0s; + -moz-transition: background 0.2s linear 0s; + -ms-transition: background 0.2s linear 0s; + -o-transition: background 0.2s linear 0s; + transition: background 0.2s linear 0s; } + .btn-plus:after { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); + top: 4px; } + .btn-plus:hover:before, .btn-plus:hover:after, .btn-plus:focus:before, .btn-plus:focus:after, .btn-plus:active:before, .btn-plus:active:after { + background-color: #595c5d; } + .btn-plus:before, .btn-plus:after { + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + top: 0; } + .btn-plus:after { + top: -2px; } + .btn-plus.collapsed:after { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); } + +.btn-roster-section { + letter-spacing: normal; + font: 14px/16px "RobotoBold"; + width: 100%; + text-transform: none; + padding: 11px 15px; + text-align: left; + white-space: normal; } + +.btn-back { + display: table; + padding-left: 15px; + background-color: transparent; + border-width: 3px; + border-radius: 4px; + font: 14px/16px "TrebuchetMSBold"; + letter-spacing: 0.05em; + text-transform: uppercase; } + .btn-back:before { + content: ""; + display: block; + float: left; + width: 22.5px; + height: 33.75px; + margin-right: 15px; } + .btn-back span { + display: table-cell; + vertical-align: middle; } + .btn-back.btn-success { + color: #3ca21a; + border-color: #3ca21a; } + .btn-back.btn-success:before { + background: url("../img/back-to-parrent-1-no-animation-2.png") no-repeat; + background-size: 22.5px 33.75px; } + .btn-back.btn-success:active:focus { + background-color: #afef99; + color: #3ca21a; + border-color: #2c7613; } + .btn-back.btn-success:hover, .btn-back.btn-success:focus { + background-color: #afef99; + color: #3ca21a; + border-color: #2c7613; } + .btn-back.btn-danger { + color: #f05a26; + border-color: #f05a26; } + .btn-back.btn-danger:before { + background: url("../img/back-to-parrent-1-no-animation-3.png") no-repeat; + background-size: 22.5px 33.75px; } + .btn-back.btn-danger:active:focus { + background-color: #fdebe5; + color: #f05a26; + border-color: #d4420f; } + .btn-back.btn-danger:hover, .btn-back.btn-danger:focus { + background-color: #fdebe5; + color: #f05a26; + border-color: #d4420f; } + .btn-back.btn-primary { + color: #2a81cb; + border-color: #2a81cb; } + .btn-back.btn-primary:before { + background: url("../img/back-to-parrent-1-no-animation-1.png") no-repeat; + background-size: 22.5px 33.75px; } + .btn-back.btn-primary:active:focus { + background-color: #cce2f5; + color: #2a81cb; + border-color: #2166a1; } + .btn-back.btn-primary:hover, .btn-back.btn-primary:focus { + background-color: #cce2f5; + color: #2a81cb; + border-color: #2166a1; } + .btn-back.btn-success.disabled, .btn-back.btn-primary.disabled, .btn-back.btn-danger.disabled { + color: transparent; + border-color: transparent; } + .btn-back.btn-success.disabled:before, .btn-back.btn-primary.disabled:before, .btn-back.btn-danger.disabled:before { + background: url("../img/back-to-parrent-1-no-animation-4.png") no-repeat; + background-size: 22.5px 33.75px; } + .btn-back.btn-success.disabled:active:focus, .btn-back.btn-primary.disabled:active:focus, .btn-back.btn-danger.disabled:active:focus { + background-color: rgba(102, 102, 102, 0); + color: transparent; + border-color: transparent; } + .btn-back.btn-success.disabled:hover, .btn-back.btn-success.disabled:focus, .btn-back.btn-primary.disabled:hover, .btn-back.btn-primary.disabled:focus, .btn-back.btn-danger.disabled:hover, .btn-back.btn-danger.disabled:focus { + background-color: rgba(102, 102, 102, 0); + color: transparent; + border-color: transparent; } + +.section-blocker { + border: none; + margin: 0; + padding: 0; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + background-color: transparent; + z-index: 2; } + +.btn-looks-like-link { + padding: 0; + text-transform: none; + font: 16px/18px Arial, sans-serif; + letter-spacing: normal; } + .btn-looks-like-link:hover, .btn-looks-like-link:focus, .btn-looks-like-link:active { + text-decoration: underline; } + +.btn-strips { + border-radius: 0; + display: block; + padding: 0; + background-color: transparent; + width: 16px; + height: 16px; + position: relative; + border: none; } + .btn-strips span { + display: block; + height: 100%; + width: 2px; + background-color: #2a81cb; + position: absolute; + top: 0; + left: calc(50% - 1px); } + .btn-strips:before, .btn-strips:after { + content: ""; + display: block; + position: absolute; + top: 0; + right: 0; + height: 100%; + width: 2px; + background-color: #2a81cb; } + .btn-strips:after { + right: auto; + left: 0; } + .btn-strips span, .btn-strips:before, .btn-strips:after { + opacity: 0.5; + filter: alpha(opacity=50); } + .btn-strips:hover span, .btn-strips:hover:before, .btn-strips:hover:after, .btn-strips:focus span, .btn-strips:focus:before, .btn-strips:focus:after, .btn-strips:active span, .btn-strips:active:before, .btn-strips:active:after { + opacity: 1; + filter: alpha(opacity=100); } + +.btn-history { + background-color: #fff; + width: 36px; + height: 36px; + border-color: #a6a8a9; + border-width: 2px; + border-radius: 100%; + padding: 0; + position: relative; } + .btn-history:after { + position: absolute; + top: 5px; + right: 9px; + content: ""; + display: block; + width: 15px; + height: 10px; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + border-bottom: 2px solid #a6a8a9; + border-right: 2px solid #a6a8a9; } + .btn-history:active:after { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + right: 5px; } + .btn-history:hover, .btn-history:focus, .btn-history:active { + background-color: #e6e6e6; + border-color: #8c8f90; } + +.get-interviewer-app { + width: 248px; + background: url("../img/HQ-login-mobile-get-button-logo.png") no-repeat; + background-size: 55px; + margin-bottom: 25px; + text-decoration: none; + color: #3f3f3f; + background-position: 15px 13px; + text-decoration: none; + padding: 10px 27px 10px 85px; + text-align: left; + border-radius: 10px; + border: 2px solid #dbdfe2; + display: block; } + .get-interviewer-app:hover, .get-interviewer-app:focus { + text-decoration: none; + border-color: #a6a8a9; + color: #000; } + .get-interviewer-app span { + display: block; + letter-spacing: 0.05em; } + .get-interviewer-app span.version { + text-transform: none; + font-style: italic; + margin-top: 5px; + color: #3f3f3f; } + +.btn-horizontal-hamburger { + display: inline-block; + position: relative; + text-align: center; + width: 40px; + height: 0px; } + +.btn-horizontal-hamburger span { + vertical-align: middle; + display: inline-block; + width: 5px; + height: 5px; + border-radius: 100%; + background-color: rgba(0, 0, 0, 0.85); + -webkit-transition: background 0.3s linear 0s; + transition: background 0.3s linear 0s; } + .btn-horizontal-hamburger span:before, .btn-horizontal-hamburger span:after { + content: ""; + display: block; + position: relative; + left: -8px; + width: 5px; + height: 5px; + border-radius: 100%; + background-color: rgba(0, 0, 0, 0.85); + -webkit-transition: background 0.3s linear 0s; + transition: background 0.3s linear 0s; } + .btn-horizontal-hamburger span:after { + left: 8px; + top: -5px; } + +.gray-link-underline { + color: #a6a8a9; + text-decoration: underline; } + .gray-link-underline:hover, .gray-link-underline:focus, .gray-link-underline:active { + text-decoration: none; + color: #a6a8a9; } + +.navbar { + min-width: 360px; + min-height: 70px; + margin-bottom: 0; } + .navbar .container, .navbar .container-fluid { + padding: 0 45px 0 45px; } + .navbar .navbar-header .navbar-brand { + position: relative; + margin-left: 0; + padding: 0; } + .navbar .navbar-header .navbar-brand .brand-name { + float: left; + font: 18px/20px "RobotoBold"; + padding: 24px 10px; + color: #fff; } + .navbar .navbar-header .navbar-brand .brand-name:hover, .navbar .navbar-header .navbar-brand .brand-name:focus { + text-decoration: none; } + .navbar .navbar-header .navbar-brand .brand-name::after { + display: block; + font-family: "RobotoBold"; + content: attr(title); + height: 1px; + color: transparent; + overflow: hidden; + visibility: hidden; + margin-bottom: -1px; } + .navbar .navbar-header .navbar-brand .logo { + float: left; + margin-top: 15px; + margin-right: 20px; + width: 15px; + height: 41px; + background: url(../img/logo.png) no-repeat; + background-size: 15px 41px; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + .navbar .navbar-header .navbar-brand .logo { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/logo-retina.png"); + background-size: 15px 41px; } } + .navbar .navbar-collapse li { + position: relative; } + .navbar .navbar-collapse li.active > a { + font-family: "RobotoBold"; } + .navbar .navbar-collapse li.active > a span { + font-family: "RobotoLight"; } + .navbar .navbar-collapse li.active > a > .caret { + border-top-color: #fff; } + .navbar .navbar-collapse li > a { + padding: 24px 5px; + text-align: center; } + .navbar .navbar-collapse li > a.notifications { + padding-left: 45px; } + .navbar .navbar-collapse li > a:hover, .navbar .navbar-collapse li > a:focus { + font-family: "RobotoBold"; } + .navbar .navbar-collapse li > a:hover span, .navbar .navbar-collapse li > a:focus span { + font-family: "RobotoLight"; } + .navbar .navbar-collapse li > a:hover > .caret, .navbar .navbar-collapse li > a:focus > .caret { + border-top-color: #fff; } + .navbar .navbar-collapse li > a .caret { + position: absolute; + top: 31px; + right: 10px; + margin-left: 0; + border-top: 8px solid rgba(255, 255, 255, 0.7); + border-right: 5px solid transparent; + border-left: 5px solid transparent; } + .navbar .navbar-collapse li > a::after { + display: block; + font-family: "RobotoBold"; + content: attr(title); + height: 1px; + color: transparent; + overflow: hidden; + visibility: hidden; + margin-bottom: -1px; + padding: 0 5px; } + .navbar .navbar-collapse li.dropdown > a { + padding-right: 20px; } + .navbar .navbar-collapse li .dropdown-menu { + margin-top: 1px; } + .navbar .navbar-collapse li .dropdown-menu li.active a { + color: #fff; + font-family: "RobotoLight"; + border-radius: 0; } + .navbar .navbar-collapse li .dropdown-menu li.active a:hover, .navbar .navbar-collapse li .dropdown-menu li.active a:focus { + background-color: #2a81cb; } + .navbar .navbar-collapse li .dropdown-menu li a { + padding: 10px; + text-align: left; + color: #3f3f3f; } + .navbar .navbar-collapse li .dropdown-menu li a:hover, .navbar .navbar-collapse li .dropdown-menu li a:focus { + background-color: #ececec; + font-family: "RobotoLight"; } + .navbar .navbar-collapse li.glow-animate > a:after { + display: none; } + .navbar .btn-icon { + padding: 0; + margin: 21px 5px; + color: #7e898f; } + .navbar .btn-icon .glyphicon { + font-size: 22px; + line-height: 22px; } + .navbar .btn-icon:hover, .navbar .btn-icon:focus, .navbar .btn-icon:active { + color: #fff; + background: transparent; + border-color: transparent; } + +.navbar-default .navbar-collapse ul li a, .navbar-default .navbar-header .navbar-brand { + color: #3f3f3f; } +.navbar-default .navbar-collapse li:hover a .caret, .navbar-default .navbar-collapse li:focus a .caret { + border-top-color: #3f3f3f; } +.navbar-default .navbar-collapse li a .caret { + border-top-color: #a6a8a9; } + +.badge.badge_nav { + background-color: #2a81cb; + border-radius: 100%; + padding: 9px 0; + position: absolute; + top: 15px; + left: 5px; + font-size: 16px; + line-height: 20px; + min-width: 38px; + overflow: hidden; + text-align: center; } + +.navbar-header { + text-align: center; } + .navbar-header .badge.badge_nav, + .navbar-header .btn-icon, + .navbar-header .number-of-synchronized-interviews { + display: none; } + +.active-page { + display: none; + color: #fff; + font-family: "RobotoBold"; + font-size: 18px; + line-height: 50px; + white-space: nowrap; + max-width: 55%; + overflow: hidden; + text-overflow: ellipsis; } + +.interview-ID:hover, .interview-ID:focus, .interview-ID:active, .active-page:hover, .active-page:focus, .active-page:active { + color: white; + text-decoration: none; } + +.navbar .navbar-text, .navbar .interview-ID { + font: 18px/20px "RobotoBold" !important; + padding: 24px 9px; } + +.interview-ID { + color: #fff; + display: inline-block; } + +.navbar-header > .interview-ID { + display: none; } + +.navbar-web-interview .navbar-header > .interview-ID { + display: none; } +.navbar-web-interview .nav.navbar-left { + max-width: 120px; + overflow: hidden; } + .navbar-web-interview .nav.navbar-left li { + max-width: 100%; } + .navbar-web-interview .nav.navbar-left li .interview-ID { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } +.navbar-web-interview .nav.navbar-right { + max-width: 560px; + min-width: 220px; } + .navbar-web-interview .nav.navbar-right > li { + float: right; } + .navbar-web-interview .nav.navbar-right > li.help-link { + max-width: 120px; } + .navbar-web-interview .nav.navbar-right > li > a { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + +.navbar-text { + white-space: nowrap; + margin-bottom: 0; + margin-top: 0; + max-width: calc(100% - 730px); + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + +.navbar-inverse .navbar-text { + color: #fff; } + +.language { + background: url("../img/language.png") 0 15px no-repeat; + padding-left: 40px; + max-width: 300px; + min-width: 120px; } + .language > a { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + .language .dropdown-menu { + max-width: 350px; } + .language .dropdown-menu a { + white-space: normal; } + +.navbar-web-interview .in .nav.navbar-right { + max-width: 100%; } + +@media screen and (max-width: 1350px) { + .navbar-web-interview .navbar-text { + max-width: calc(100% - 550px); } + .navbar-web-interview .nav.navbar-right { + max-width: 380px; } + .navbar-web-interview .language { + max-width: 55%; } } +@media (max-width: 1210px) { + .navbar .container, .navbar .container-fluid { + padding: 0 20px 0 35px; } + + .wide-navbar .navbar { + min-height: 60px; } + .wide-navbar .navbar .container, .wide-navbar .navbar .container-fluid { + width: 100%; + padding: 0 20px 0 35px; } + .wide-navbar .navbar .navbar-text { + display: none; } + .wide-navbar .navbar .navbar-header { + margin: 0; + padding-top: 5px; } + .wide-navbar .navbar .navbar-header .active-page { + display: inline-block; } + .wide-navbar .navbar .navbar-header .navbar-brand .logo { + min-height: 41px; + min-width: 15px; + padding: 0; + transform: rotate(270deg); } + .wide-navbar .navbar .navbar-header .navbar-brand .brand-name { + display: none; } + .wide-navbar .navbar .navbar-header .navbar-brand .brand-name:after { + display: none; } + .wide-navbar .navbar .navbar-header .badge.badge_nav { + display: block; + float: right; + position: relative; + top: 0; + left: 0; + margin: 5px 15px 5px 10px; } + .wide-navbar .navbar .navbar-header .number-of-synchronized-interviews { + display: block; + float: right; + padding: 15px 10px; + color: #fff; } + .wide-navbar .navbar .navbar-header .number-of-synchronized-interviews:hover, .wide-navbar .navbar .navbar-header .number-of-synchronized-interviews:focus { + text-decoration: none; + color: white; } + .wide-navbar .navbar .navbar-toggle { + z-index: 25; + margin-right: 0; } + .wide-navbar .navbar.navbar-fixed-top .navbar-collapse { + max-height: 100%; + top: 0; + left: 0; + z-index: 10; + display: none; + position: fixed; + width: 100%; + height: 100%; + background: black; + margin: 0; + padding: 40px 5%; } + .wide-navbar .navbar.navbar-fixed-top .navbar-collapse li.active a { + color: white; } + .wide-navbar .navbar.navbar-fixed-top .navbar-collapse li.active a:hover, .wide-navbar .navbar.navbar-fixed-top .navbar-collapse li.active a:focus { + background-color: rgba(255, 255, 255, 0.4); } + .wide-navbar .navbar.navbar-fixed-top .navbar-collapse li > a { + border-radius: 5px; + padding: 15px 10px; + text-align: left; + color: #a6a8a9; } + .wide-navbar .navbar.navbar-fixed-top .navbar-collapse li > a:hover, .wide-navbar .navbar.navbar-fixed-top .navbar-collapse li > a:focus { + color: white; } + .wide-navbar .navbar.navbar-fixed-top .navbar-collapse li a .caret { + top: 0; + left: 0; + position: relative; + margin: 0; + margin-left: 10px; } + .wide-navbar .navbar.navbar-fixed-top .navbar-collapse li .dropdown-menu li a { + padding: 15px 10px; } + .wide-navbar .navbar.navbar-fixed-top .navbar-collapse li .dropdown-menu li a:hover, .wide-navbar .navbar.navbar-fixed-top .navbar-collapse li .dropdown-menu li a:focus { + font-family: "RobotoBold"; } + .wide-navbar .navbar.navbar-fixed-top .navbar-collapse li .dropdown-menu li.active a { + border-radius: 5px; + background-color: rgba(42, 129, 203, 0.5); } + .wide-navbar .navbar.navbar-fixed-top .navbar-collapse li .dropdown-menu li.active a:hover, .wide-navbar .navbar.navbar-fixed-top .navbar-collapse li .dropdown-menu li.active a:focus { + font-family: "RobotoBold"; + background-color: #2a81cb; } + .wide-navbar .navbar.navbar-fixed-top .navbar-right .badge.badge_nav { + top: 0; + left: 0; + position: relative; + margin-right: 10px; } + .wide-navbar .navbar.navbar-fixed-top .navbar-nav > .active > a, + .wide-navbar .navbar.navbar-fixed-top .navbar-nav > .active > a:hover, + .wide-navbar .navbar.navbar-fixed-top .navbar-nav > .active > a:focus { + background-color: #333; } + .wide-navbar .icon-bar { + -webkit-transition: all 0.5s linear 0s; + -moz-transition: all 0.5s linear 0s; + -ms-transition: all 0.5s linear 0s; + -o-transition: all 0.5s linear 0s; + transition: all 0.5s linear 0s; } + .wide-navbar .navbar-inverse .navbar-toggle { + background-color: transparent; + border: none; } + .wide-navbar .top-animate { + -webkit-transform: rotate(225deg); + -ms-transform: rotate(225deg); + -o-transform: rotate(225deg); + transform: rotate(225deg); + position: relative; + top: 6px; } + .wide-navbar .mid-animate { + opacity: 0; } + .wide-navbar .bottom-animate { + bottom: 6px; + position: relative; + -webkit-transform: rotate(-225deg); + -ms-transform: rotate(-225deg); + -o-transform: rotate(-225deg); + transform: rotate(-225deg); } } +@media (max-width: 1210px) { + .wide-navbar .navbar-header { + float: none; } + .wide-navbar .navbar-header .navbar-brand .logo { + margin-top: 5px; + transform: rotate(270deg); } + .wide-navbar .navbar-left, .wide-navbar .navbar-right { + float: none !important; } + .wide-navbar .navbar-toggle { + display: block; } + .wide-navbar .navbar-collapse.collapse { + display: none !important; } + .wide-navbar .navbar-nav { + float: none !important; } + .wide-navbar .navbar-nav > li { + float: none; } + .wide-navbar .collapse.in { + display: block !important; + height: 100% !important; } + .wide-navbar .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; } + .wide-navbar .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .wide-navbar .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; } } +@media (max-width: 879px) { + .navbar-web-interview .nav.navbar-right > li, + .navbar-web-interview .nav.navbar-right > li.help-link, + .navbar-web-interview .nav.navbar-left { + width: 100%; + max-width: 100%; + text-align: left; } + + .language .dropdown-menu { + max-width: 80%; } + + .navbar { + min-height: 60px; } + .navbar .container, .navbar .container-fluid { + width: 100%; + padding: 0 20px 0 35px; } + .navbar .navbar-text { + display: none; } + .navbar .interview-ID { + padding: 15px 9px; } + .navbar .navbar-header { + margin: 0; + padding-top: 5px; } + .navbar .navbar-header > .interview-ID { + padding: 15px 9px; + display: inline-block; } + .navbar .navbar-header .btn-icon, + .navbar .navbar-header .badge.badge_nav { + display: block; + float: right; + position: relative; + top: 0; + left: 0; + margin: 10px; } + .navbar .navbar-header .active-page { + display: inline-block; } + .navbar .navbar-header .navbar-brand .logo { + margin-top: 5px; + transform: rotate(270deg); } + .navbar .navbar-header .navbar-brand .brand-name { + display: none; } + .navbar .navbar-header .navbar-brand .brand-name:after { + display: none; } + .navbar .navbar-header .badge.badge_nav { + margin: 5px 15px 5px 10px; } + .navbar .navbar-header .number-of-synchronized-interviews { + display: block; + float: right; + padding: 15px 10px; + color: #fff; } + .navbar .navbar-header .number-of-synchronized-interviews:hover, .navbar .navbar-header .number-of-synchronized-interviews:focus { + text-decoration: none; + color: white; } + .navbar .navbar-toggle { + z-index: 25; + margin-right: 0; } + .navbar.navbar-fixed-top .navbar-collapse { + max-height: 100%; + top: 0; + left: 0; + z-index: 10; + display: none; + position: fixed; + width: 100%; + height: 100%; + background: black; + margin: 0; + padding: 40px 5%; } + .navbar.navbar-fixed-top .navbar-collapse li.active a { + color: white; } + .navbar.navbar-fixed-top .navbar-collapse li.active a:hover, .navbar.navbar-fixed-top .navbar-collapse li.active a:focus { + background-color: rgba(255, 255, 255, 0.4); } + .navbar.navbar-fixed-top .navbar-collapse li > a { + border-radius: 5px; + padding: 15px 10px; + text-align: left; + color: #a6a8a9; } + .navbar.navbar-fixed-top .navbar-collapse li > a:hover, .navbar.navbar-fixed-top .navbar-collapse li > a:focus { + color: white; } + .navbar.navbar-fixed-top .navbar-collapse li a .caret { + top: 0; + left: 0; + position: relative; + margin: 0; + margin-left: 10px; } + .navbar.navbar-fixed-top .navbar-collapse li .dropdown-menu li a { + padding: 15px 10px; } + .navbar.navbar-fixed-top .navbar-collapse li .dropdown-menu li a:hover, .navbar.navbar-fixed-top .navbar-collapse li .dropdown-menu li a:focus { + font-family: "RobotoBold"; } + .navbar.navbar-fixed-top .navbar-collapse li .dropdown-menu li.active a { + border-radius: 5px; + background-color: rgba(42, 129, 203, 0.5); } + .navbar.navbar-fixed-top .navbar-collapse li .dropdown-menu li.active a:hover, .navbar.navbar-fixed-top .navbar-collapse li .dropdown-menu li.active a:focus { + font-family: "RobotoBold"; + background-color: #2a81cb; } + .navbar.navbar-fixed-top .navbar-collapse li .btn-icon { + margin: 21px 12px; } + .navbar.navbar-fixed-top .navbar-right .badge.badge_nav { + top: 0; + left: 0; + position: relative; + margin-right: 10px; } + .navbar.navbar-fixed-top .navbar-nav > .active > a, + .navbar.navbar-fixed-top .navbar-nav > .active > a:hover, + .navbar.navbar-fixed-top .navbar-nav > .active > a:focus { + background-color: #333; } + + .icon-bar { + -webkit-transition: all 0.5s linear 0s; + -moz-transition: all 0.5s linear 0s; + -ms-transition: all 0.5s linear 0s; + -o-transition: all 0.5s linear 0s; + transition: all 0.5s linear 0s; } + + .navbar-inverse .navbar-toggle { + background-color: transparent; + border: none; } + + .top-animate { + -webkit-transform: rotate(225deg); + -ms-transform: rotate(225deg); + -o-transform: rotate(225deg); + transform: rotate(225deg); + position: relative; + top: 6px; } + + .mid-animate { + opacity: 0; } + + .bottom-animate { + bottom: 6px; + position: relative; + -webkit-transform: rotate(-225deg); + -ms-transform: rotate(-225deg); + -o-transform: rotate(-225deg); + transform: rotate(-225deg); } + + .language { + background-position-y: 5px; } } +@media (max-width: 481px) { + .navbar .navbar-header .active-page { + max-width: 30%; } } +/* Progress bar */ +.progress { + height: 10px; + background-color: #dbdbdb; } + .progress .progress-bar:only-child, .progress .progress-bar:last-of-type { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; } + +.progress.question-progress { + height: 5px; + background-color: transparent; + box-shadow: none; + position: absolute; + right: 0; + bottom: 0; + left: 0; + margin: 0; } + +.progress .progress-bar-info { + background-color: #a6a8a9; } + +.cancelable-progress { + position: relative; + overflow: hidden; } + .cancelable-progress .progress { + width: 65%; + float: left; + background-color: #dbdfe2; + margin: 0; + margin-right: 20px; } + .cancelable-progress .btn-link { + float: left; + padding: 0; + line-height: 11px; + width: auto !important; + position: relative; } + .cancelable-progress .wrapper-progress { + float: left; + width: 70%; } + .cancelable-progress .wrapper-progress > span { + display: block; + margin-bottom: 7px; + color: #a6a8a9; } + .cancelable-progress .wrapper-progress > span.error-text { + color: #e74924; } + .cancelable-progress .wrapper-progress > span.success-text { + color: #2fc507; } + .cancelable-progress .wrapper-progress > span.default-text { + color: #dbdfe2; } + .cancelable-progress .wrapper-progress .progress { + float: none; + width: 100%; + margin-right: 10px; } + .cancelable-progress .wrapper-progress + .btn-link { + top: 7px; } + +@media (max-width: 481px) { + .cancelable-progress .progress { + width: 80%; + margin-bottom: 15px; + margin-right: 15px; } } +/* Forms */ +.form-control { + border-color: #dbdfe2; + box-shadow: none; } + .form-control.with-clear-btn { + padding-right: 40px; } + +.input-group .form-control:hover, .input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:active:focus { + z-index: 3; } + +.has-error .form-control, .has-error .field-to-fill { + box-shadow: inset 0 0 3px rgba(231, 73, 36, 0.6); } + .has-error .form-control:hover, .has-error .form-control:focus, .has-error .form-control:active, .has-error .form-control:active:focus, .has-error .field-to-fill:hover, .has-error .field-to-fill:focus, .has-error .field-to-fill:active, .has-error .field-to-fill:active:focus { + border-color: #c33615; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), inset 0 0 6px #f19580; } + +.has-error .information-block .form-control { + box-shadow: none; } + .has-error .information-block .form-control:hover, .has-error .information-block .form-control:focus, .has-error .information-block .form-control:active, .has-error .information-block .form-control:active:focus { + border-color: #dbdfe2; } + +.field { + position: relative; } + +::-webkit-input-placeholder { + font-weight: normal !important; + font-style: italic; + color: #a6a8a9 !important; } + +:-moz-placeholder { + font-weight: normal !important; + font-style: italic; + color: #a6a8a9 !important; } + +::-moz-placeholder { + font-weight: normal !important; + font-style: italic; + color: #a6a8a9 !important; } + +:-ms-input-placeholder { + font-weight: normal !important; + font-style: italic; + color: #a6a8a9 !important; } + +input.wb-checkbox, +input.checkbox-filter, +input.double-checkbox, +input.double-checkbox-white, +.radio input.wb-radio, +input.radio-row { + display: block; + position: absolute; + left: -999999px; } + +input.wb-checkbox ~ label:hover .tick, input.wb-checkbox:focus ~ label .tick, input.wb-checkbox ~ label:focus .tick { + background-position: -37px 2px; } +input.wb-checkbox:checked ~ label .tick { + background-position: -78px 2px; } +input.wb-checkbox:checked ~ label:hover .tick, input.wb-checkbox:checked ~ label:focus .tick, input.wb-checkbox:checked:focus ~ label .tick { + background-position: -119px 2px; } +input.wb-checkbox:disabled ~ label .tick { + background-position: -160px 2px; } +input.wb-checkbox:disabled ~ label:hover .tick, input.wb-checkbox:disabled ~ label:focus .tick { + background-position: -201px 2px; } +input.wb-checkbox:checked:disabled ~ label .tick { + background-position: -242px 2px; } +input.wb-checkbox:checked:disabled ~ label:hover .tick, input.wb-checkbox:checked:disabled ~ label:focus .tick { + background-position: -283px 2px; } + +input.checkbox-filter ~ label { + position: relative; + padding-left: 30px; + cursor: pointer; } +input.checkbox-filter ~ label .tick { + display: inline-block; + width: 25px; + height: 20px; + vertical-align: middle; + position: absolute; + top: 0; + left: -5px; + background: transparent url("../img/chekboxes.png") no-repeat; + background-size: 68px 350px; + background-position: 0 0; + margin-right: 10px; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + input.checkbox-filter ~ label .tick { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/chekboxes2k.png"); + background-size: 68px 350px; } } +input.checkbox-filter:focus ~ label .tick, input.checkbox-filter ~ label:hover .tick, input.checkbox-filter ~ label:focus .tick { + background-position: 0px -36px; } +input.checkbox-filter:checked ~ label .tick { + background-position: 0px -72px; } +input.checkbox-filter:checked ~ label:hover .tick, input.checkbox-filter:checked ~ label:focus .tick, input.checkbox-filter:checked:focus ~ label .tick { + background-position: 0px -108px; } +input.checkbox-filter:disabled ~ label .tick, input.checkbox-filter:checked:disabled ~ label .tick { + background-position: 0px -144px; } +input.checkbox-filter:disabled ~ label:hover .tick, input.checkbox-filter:checked:disabled ~ label:hover .tick, input.checkbox-filter:disabled ~ label:focus .tick, input.checkbox-filter:checked:disabled ~ label:focus .tick { + background-position: 0px -180px; } + +input.double-checkbox ~ label { + position: relative; + cursor: pointer; + margin: 0; } +input.double-checkbox ~ label .tick { + display: inline-block; + width: 25px; + height: 20px; + vertical-align: middle; + background: transparent url("../img/chekboxes.png") no-repeat; + background-size: 68px 350px; + background-position: 0 -216px; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + input.double-checkbox ~ label .tick { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/chekboxes2k.png"); + background-size: 68px 350px; } } +input.double-checkbox ~ label:hover .tick, input.double-checkbox:focus ~ label .tick, input.double-checkbox ~ label:focus .tick { + background-position: 0px -254px; } +input.double-checkbox:checked ~ label .tick { + background-position: 0px -292px; } +input.double-checkbox:checked ~ label:hover .tick, input.double-checkbox:checked ~ label:focus .tick, input.double-checkbox:checked:focus ~ label .tick { + background-position: 0px -330px; } + +input.double-checkbox-white ~ label { + position: relative; + cursor: pointer; + margin: 0; } +input.double-checkbox-white ~ label .tick { + display: inline-block; + width: 25px; + height: 20px; + vertical-align: middle; + background: transparent url("../img/chekboxes.png") no-repeat; + background-size: 68px 350px; + background-position: -44px -216px; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + input.double-checkbox-white ~ label .tick { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/chekboxes2k.png"); + background-size: 68px 350px; } } +input.double-checkbox-white:focus ~ label .tick, input.double-checkbox-white ~ label:hover .tick, input.double-checkbox-white ~ label:focus .tick { + background-position: -44px -254px; } +input.double-checkbox-white:checked ~ label .tick { + background-position: -44px -292px; } +input.double-checkbox-white:checked ~ label:hover .tick, input.double-checkbox-white:checked ~ label:focus .tick, input.double-checkbox-white:checked:focus ~ label .tick { + background-position: -44px -330px; } + +.radio { + margin: 0; } + .radio label { + color: #a6a8a9; + font-weight: normal; + padding: 7px 0; } + .radio input.wb-radio:checked + label { + color: #3f3f3f; + font-weight: bold; } + .radio input.wb-radio + label .tick { + background-position: -326px 2px; } + .radio input.wb-radio + label:hover .tick, .radio input.wb-radio:focus + label .tick, .radio input.wb-radio + label:focus .tick { + background-position: -367px 2px; } + .radio input.wb-radio:checked + label .tick { + background-position: -408px 2px; } + .radio input.wb-radio:checked + label:hover .tick, .radio input.wb-radio:checked + label:focus .tick, .radio input.wb-radio:checked:focus + label .tick { + background-position: -449px 2px; } + .radio input.wb-radio:disabled + label .tick { + background-position: -572px 2px; } + .radio input.wb-radio:disabled + label:hover .tick, .radio input.wb-radio:disabled + label:focus .tick { + background-position: -613px 2px; } + .radio input.wb-radio:checked:disabled + label .tick { + background-position: -490px 2px; } + .radio input.wb-radio:checked:disabled + label:hover .tick, .radio input.wb-radio:checked:disabled + label:focus .tick { + background-position: -531px 2px; } + +input.radio-row + label, input.radio-row + label .format-data { + font-family: "RobotoRegular"; + font-weight: normal; } +input.radio-row:checked + label, input.radio-row:checked + label .format-data { + color: #3f3f3f; + font-family: "RobotoBold"; } +input.radio-row + label .tick { + background-position: -326px 2px; } +input.radio-row + label:hover .tick, input.radio-row:focus + label .tick, input.radio-row + label:focus .tick { + background-position: -367px 2px; } +input.radio-row:checked + label .tick { + background-position: -735px 2px; } +input.radio-row:checked + label:hover .tick, input.radio-row:checked + label:focus .tick, input.radio-row:checked:focus + label .tick { + background-position: -449px 2px; } + +.control-label { + font-size: 14px; + line-height: 16px; + display: block; + margin-bottom: 15px; } + +.input-group { + width: 295px; } + .input-group.date { + box-shadow: none; } + .input-group input:focus, .input-group input:active, .input-group input:active:focus { + outline: none; } + .input-group .form-control { + border-color: #dbdfe2; + border-right: none; } + .input-group .form-control input ul { + width: 100%; + top: 34px; + left: 0px; } + .input-group .input-group-btn .btn { + height: 40px; + border-color: #dbdfe2; + border-left: none; } + .input-group .input-group-btn .btn:hover, .input-group .input-group-btn .btn:focus, .input-group .input-group-btn .btn:active { + background-color: transparent; } + .input-group .input-group-btn .btn:disabled, .input-group .input-group-btn .btn.disabled { + background: #dbdfe2; + opacity: 1; } + .input-group .input-group-btn .btn span { + background-color: transparent; + width: 16px; + height: 16px; + position: relative; + margin: 0; + opacity: 0.5; + filter: alpha(opacity=50); + display: block; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + padding: 1px 0; } + .input-group .input-group-btn .btn span:before, .input-group .input-group-btn .btn span:after { + display: block; + content: ""; + width: 16px; + height: 2px; + background-color: #a6a8a9; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: relative; + top: 7px; + -webkit-transition: background 0.2s linear 0s; + -moz-transition: background 0.2s linear 0s; + -ms-transition: background 0.2s linear 0s; + -o-transition: background 0.2s linear 0s; + transition: background 0.2s linear 0s; } + .input-group .input-group-btn .btn span:after { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); + top: 5px; } + .input-group .input-group-btn .btn span:hover:before, .input-group .input-group-btn .btn span:hover:after, .input-group .input-group-btn .btn span:focus:before, .input-group .input-group-btn .btn span:focus:after, .input-group .input-group-btn .btn span:active:before, .input-group .input-group-btn .btn span:active:after { + background-color: #595c5d; } + .input-group .input-group-btn .btn span:before { + top: 6px; } + .input-group .input-group-btn .btn span:after { + top: 4px; } + +.bootstrap-select.btn-group { + width: 295px !important; } + .bootstrap-select.btn-group .dropdown-toggle { + box-shadow: none; + background-color: transparent; + text-transform: none; + letter-spacing: normal; + font-size: 14px; + line-height: 20px; + font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; + border-color: #dbdfe2; + height: 40px; } + .bootstrap-select.btn-group .dropdown-toggle:hover, .bootstrap-select.btn-group .dropdown-toggle:focus, .bootstrap-select.btn-group .dropdown-toggle:active, .bootstrap-select.btn-group .dropdown-toggle:active:focus { + outline: none !important; + background-color: transparent; + border-color: #dbdfe2; } + .bootstrap-select.btn-group .dropdown-toggle .filter-option { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + .bootstrap-select.btn-group .dropdown-toggle .bs-caret .caret { + right: 10px; + top: 39%; + width: 0; + height: 0; + display: block; + border-top: 12px solid #a6a8a9; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-bottom: none; } + .bootstrap-select.btn-group .dropdown-menu { + width: 100%; } + .bootstrap-select.btn-group .dropdown-menu > li > a { + padding: 10px; + white-space: normal; } + .bootstrap-select.btn-group .dropdown-menu > li > a span.text { + display: block !important; } + .bootstrap-select.btn-group .dropdown-menu > li > a:hover, .bootstrap-select.btn-group .dropdown-menu > li > a:focus, .bootstrap-select.btn-group .dropdown-menu > li > a:active { + color: #000; } + .bootstrap-select.btn-group.open .bs-caret .caret { + border-top: none; + border-bottom: 12px solid #a6a8a9; } + +ul.typeahead.dropdown-menu { + width: 100%; } + ul.typeahead.dropdown-menu li a { + padding: 10px; } + ul.typeahead.dropdown-menu > .active > a, ul.typeahead.dropdown-menu > .active > a:focus, ul.typeahead.dropdown-menu > .active > a:hover { + color: #000; + background-color: #f5f5f5; } + +.btn-input { + display: block; } + .btn-input .dropdown-toggle { + background-color: transparent; + box-shadow: none; + border: 1px solid #dbdfe2; + border-radius: 4px; + width: 295px; + text-align: left; + padding: 7px 12px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + .btn-input .dropdown-toggle span:first-child { + left: 10px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + position: absolute; + right: 30px; } + .btn-input .dropdown-toggle .caret-large { + margin-top: -1px; + position: absolute; + right: 10px; + top: 35%; + width: 0; + height: 0; + display: block; + border-top: 12px solid #a6a8a9; + border-right: 7px solid transparent; + border-left: 7px solid transparent; } + .btn-input .dropdown-menu > li > a { + white-space: pre-wrap; + padding: 7px 10px; + color: #3f3f3f; } + .btn-input .dropdown-menu > li > a:hover, .btn-input .dropdown-menu > li > a:focus { + background-color: #ececec; } + .btn-input.open .caret-large { + border-top: none; + border-bottom: 12px solid #a6a8a9; } + .btn-input.open > .dropdown-menu { + display: block; + width: 295px; + padding: 5px; + border: 1px solid #dbdfe2; + overflow: auto; + max-height: 300px; + border-radius: 4px; } + +.search { + min-width: 30px; + display: block; + position: absolute; + top: 0; + left: 0; + background-color: #fff; + border: 1px solid transparent; + border-radius: 3px; + margin-left: 10px; } + .search .btn-search { + position: absolute; + top: 0; + left: 0; + border: none; + height: 35px; + display: inline-block; + padding: 10px; + background: url("../img/search.png") no-repeat; + background-position: 0 8px; + background-size: 80px 20px; + cursor: pointer; + -webkit-transition: none 0.5s linear 0s; + -moz-transition: none 0.5s linear 0s; + -ms-transition: none 0.5s linear 0s; + -o-transition: none 0.5s linear 0s; + transition: none 0.5s linear 0s; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + .search .btn-search { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/search2k.png"); + background-size: 80px 20px; } } + .search .btn-search:hover { + background-position: -40px 8px; } + .search .btn-clear { + position: absolute; + top: 0; + right: 0; + right: -37px; + padding: 6px; + transition: none; + background-color: #fff; } + .search .btn-clear:active span:before, .search .btn-clear:active span:after, .search .btn-clear:active:focus span:before, .search .btn-clear:active:focus span:after, .search .btn-clear:focus span:before, .search .btn-clear:focus span:after { + background-color: #000; + opacity: 1; + filter: alpha(opacity=100); } + .search .btn-clear span { + background-color: transparent; + width: 22px; + height: 22px; + position: relative; + margin: 0; + opacity: 0.5; + filter: alpha(opacity=50); + display: block; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; } + .search .btn-clear span:before, .search .btn-clear span:after { + display: block; + content: ""; + width: 22px; + height: 2px; + background-color: #a6a8a9; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: relative; + top: 10px; + -webkit-transition: background 0.2s linear 0s; + -moz-transition: background 0.2s linear 0s; + -ms-transition: background 0.2s linear 0s; + -o-transition: background 0.2s linear 0s; + transition: background 0.2s linear 0s; } + .search .btn-clear span:after { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); + top: 8px; } + .search .btn-clear span:hover:before, .search .btn-clear span:hover:after, .search .btn-clear span:focus:before, .search .btn-clear span:focus:after, .search .btn-clear span:active:before, .search .btn-clear span:active:after { + background-color: #595c5d; } + .search .form-control { + height: 35px; + width: 0; + display: inline-block; + padding-right: 0; + padding-left: 0; + border: none; } + +.active-search { + color: transparent; } + .active-search:after { + border-color: transparent !important; } + .active-search .search { + z-index: 4; + border-color: #dbdfe2; + width: calc(100% - 36px - 10px); + max-width: 315px; } + .active-search .search .form-control { + width: calc(100% - 36px); + padding-left: 10px; + padding-right: 10px; + font-family: "RobotoRegular"; } + .active-search .search .btn-search { + left: auto; + right: 0; + margin: 0 10px; + background-position: -40px 10px; } + .active-search .search .btn-search:hover { + background-position: -60px 10px; } + +.block-filter .btn-group.bootstrap-select, .block-filter .combo-box, .block-filter .input-group, .block-filter .field { + margin-left: 0; } +.block-filter .field { + width: 295px; } + +.combo-box { + position: relative; + width: 295px; } + .combo-box .btn-input .dropdown-toggle { + padding: 10px 38px 10px 10px; } + .combo-box .btn-input .dropdown-toggle span { + position: static !important; } + .combo-box .btn-input .dropdown-toggle .dropdown-menu { + z-index: 3; } + @media (max-width: 1210px) { + .combo-box .btn-clear { + right: 0; } } + +.form-date.answered .form-control { + padding-right: 35px; } +.form-date.answered .btn-clear { + z-index: 5; + right: 40px; } + +ul.dropdown-menu li, ul.dropdown-menu li * { + word-wrap: break-word; + overflow-wrap: break-word; } + +.form-date .input-group.date .form-control { + z-index: 0; } + +.profile .form-control, .profile .input-group, .profile .btn-input, .contain-input .form-control, .contain-input .input-group, .contain-input .btn-input { + margin-left: -10px; } + .profile .form-control + .btn-clear, .profile .input-group + .btn-clear, .profile .btn-input + .btn-clear, .contain-input .form-control + .btn-clear, .contain-input .input-group + .btn-clear, .contain-input .btn-input + .btn-clear { + right: 10px; } +.profile .input-group .form-control, .profile .btn-input .form-control, .contain-input .input-group .form-control, .contain-input .btn-input .form-control { + margin-left: 0; + width: 295px; } +.profile .help-block, .contain-input .help-block { + margin: 0; } +.profile .separate-line, .contain-input .separate-line { + max-width: 500px; } +.profile .block-filter:last-of-type, .contain-input .block-filter:last-of-type { + margin-bottom: 25px; } +.profile .block-filter h5, .profile .block-filter .preset-filters-container a, .preset-filters-container .profile .block-filter a, .profile .block-filter .preset-filters-container .export-queue, .preset-filters-container .profile .block-filter .export-queue, .contain-input .block-filter h5, .contain-input .block-filter .preset-filters-container a, .preset-filters-container .contain-input .block-filter a, .contain-input .block-filter .preset-filters-container .export-queue, .preset-filters-container .contain-input .block-filter .export-queue { + margin-top: 5px; } +.profile .block-filter label, .contain-input .block-filter label { + font-size: 14px; + line-height: 16px; + margin-bottom: 2px; } +.profile .block-filter .form-group .field, .contain-input .block-filter .form-group .field { + float: left; + margin-right: 20px; } +.profile .block-filter .form-group .help-block, .contain-input .block-filter .form-group .help-block { + float: left; + max-width: 400px; + display: flex; + align-items: center; + min-height: 40px; } +.profile .block-filter .form-group:after, .contain-input .block-filter .form-group:after { + display: block; + content: ""; + clear: both; } +.profile .block-filter .form-group .single-checkbox + label, .contain-input .block-filter .form-group .single-checkbox + label { + font-weight: bold; } +.profile h2, .contain-input h2 { + margin-bottom: 15px; } + +.contain-input .block-filter .form-group .single-checkbox + label { + margin-top: 10px; } + +@media (max-width: 1210px) { + .profile .separate-line { + margin-left: -10px !important; } } +@media only screen and (max-width: 780px) { + .profile .block-filter .form-group .field { + float: none; + margin-right: 0; } + .profile .block-filter .form-group .help-block { + float: none; + margin-top: 10px; + max-width: 280px; } } +.input-group.hidden-input-group-addon-inside .form-control { + border-right: 1px solid #dbdfe2; + border-top-right-radius: 4px !important; + border-bottom-right-radius: 4px !important; } + +.input-group-addon { + background-color: transparent; + border-color: #dbdfe2; + border-left: none; + border-bottom-right-radius: 4px !important; + border-top-right-radius: 4px !important; + padding: 3px 10px; + cursor: pointer; + color: #a6a8a9; + -webkit-transition: color 0.2s linear 0s; + -moz-transition: color 0.2s linear 0s; + -ms-transition: color 0.2s linear 0s; + -o-transition: color 0.2s linear 0s; + transition: color 0.2s linear 0s; } + .input-group-addon:hover, .input-group-addon:focus, .input-group-addon:active { + color: #595c5d; } + +.compulsory-field { + position: relative; } + .compulsory-field:before { + display: block; + content: "*"; + color: #e74924; + position: absolute; + top: 0; + left: -10px; + font-size: 20px; } + +textarea.field-to-fill { + resize: none; + max-height: 500px; + display: block; + height: 40px; } + +.aside-menu { + position: absolute; + top: 5px; + right: 10px; + z-index: 1; } + .aside-menu button { + display: inline-block; + position: relative; + text-align: center; + width: 40px; + height: 45px; } + .aside-menu button:focus span, .aside-menu button:hover span, .aside-menu button:active span, .aside-menu button:active:focus span { + background-color: #bfc6cb; } + .aside-menu button:focus span:before, .aside-menu button:focus span:after, .aside-menu button:hover span:before, .aside-menu button:hover span:after, .aside-menu button:active span:before, .aside-menu button:active span:after, .aside-menu button:active:focus span:before, .aside-menu button:active:focus span:after { + background-color: #bfc6cb; } + .aside-menu button span { + vertical-align: middle; + display: inline-block; + width: 5px; + height: 5px; + border-radius: 100%; + background-color: #dbdfe2; + -webkit-transition: background 0.3s linear 0s; + -moz-transition: background 0.3s linear 0s; + -ms-transition: background 0.3s linear 0s; + -o-transition: background 0.3s linear 0s; + transition: background 0.3s linear 0s; } + .aside-menu button span:before, .aside-menu button span:after { + content: ""; + display: block; + position: relative; + top: -8px; + width: 5px; + height: 5px; + border-radius: 100%; + background-color: #dbdfe2; + -webkit-transition: background 0.3s linear 0s; + -moz-transition: background 0.3s linear 0s; + -ms-transition: background 0.3s linear 0s; + -o-transition: background 0.3s linear 0s; + transition: background 0.3s linear 0s; } + .aside-menu button span:after { + top: 3px; } + .aside-menu.open button span { + border-radius: 0; + background-color: transparent; + width: 20px; + height: 20px; + position: relative; + margin: 0; + opacity: 0.5; + filter: alpha(opacity=50); + display: block; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + background-color: transparent; } + .aside-menu.open button span:before, .aside-menu.open button span:after { + display: block; + content: ""; + width: 20px; + height: 2px; + background-color: #a6a8a9; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: relative; + top: 9px; + -webkit-transition: background 0.2s linear 0s; + -moz-transition: background 0.2s linear 0s; + -ms-transition: background 0.2s linear 0s; + -o-transition: background 0.2s linear 0s; + transition: background 0.2s linear 0s; } + .aside-menu.open button span:after { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); + top: 7px; } + .aside-menu.open button span:hover:before, .aside-menu.open button span:hover:after, .aside-menu.open button span:focus:before, .aside-menu.open button span:focus:after, .aside-menu.open button span:active:before, .aside-menu.open button span:active:after { + background-color: #595c5d; } + .aside-menu.open button span:before, .aside-menu.open button span:after { + border-radius: 0; } + .aside-menu.open button:focus span:before, .aside-menu.open button:focus span:after, .aside-menu.open button:hover span:before, .aside-menu.open button:hover span:after, .aside-menu.open button:active span:before, .aside-menu.open button:active span:after { + background-color: #a3adb4; } + .aside-menu .dropdown-menu { + z-index: 2; + left: auto; + right: 35px; + top: 10px; + -webkit-transform-origin: top; + -moz-transform-origin: top; + -ms-transform-origin: top; + transform-origin: top; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-transform: scale(1, 0); + -ms-transform: scale(1, 0); + -o-transform: scale(1, 0); + transform: scale(1, 0); + -webkit-transition: all 0.2s linear 0s; + -moz-transition: all 0.2s linear 0s; + -ms-transition: all 0.2s linear 0s; + -o-transition: all 0.2s linear 0s; + transition: all 0.2s linear 0s; + display: block; } + .aside-menu.open > .dropdown-menu { + -webkit-transform: scale(1, 1); + -ms-transform: scale(1, 1); + -o-transform: scale(1, 1); + transform: scale(1, 1); } + +.dropdown-backdrop { + z-index: 1; } + +.field .combo-box { + width: 100%; } + +.filters { + width: 282px; + border-right: 3px solid #ececec; + padding: 30px 5px 50px 5px; + border-left: 12px solid #dbdfe2; } + .filters .input-group.date { + margin-left: 0 !important; } + .filters .bootstrap-select.btn-group { + width: 100% !important; } + .filters .input-group, .filters .combo-box, .filters .btn-input .dropdown-toggle { + width: 100%; } + .filters .open > .dropdown-menu { + width: 100%; } + +.filters .checkbox-block h5, .filters .checkbox-block .preset-filters-container a, .preset-filters-container .filters .checkbox-block a, .filters .checkbox-block .preset-filters-container .export-queue, .preset-filters-container .filters .checkbox-block .export-queue { + margin-bottom: 10px; } +.filters input.checkbox-filter ~ label { + font-weight: normal; + color: #a6a8a9; } + .filters input.checkbox-filter ~ label:hover, .filters input.checkbox-filter ~ label:focus { + color: #6b6b6b; } + .filters input.checkbox-filter ~ label .tick { + left: -5px; } +.filters input.checkbox-filter:checked ~ label { + color: #3f3f3f; } + +.filters-container { + color: #3f3f3f; + padding: 0 15px 20px 15px; } + .filters-container h2 { + margin-bottom: 10px; } + +.block-filter { + margin-bottom: 15px; } + .block-filter h5, .block-filter .preset-filters-container a, .preset-filters-container .block-filter a, .block-filter .preset-filters-container .export-queue, .preset-filters-container .block-filter .export-queue { + margin-bottom: 2px; } + .block-filter h5 label, .block-filter .preset-filters-container a label, .preset-filters-container .block-filter a label, .block-filter .preset-filters-container .export-queue label, .preset-filters-container .block-filter .export-queue label { + margin-bottom: 0; } + .block-filter select { + border-color: #dbdfe2; + max-width: 90%; } + .block-filter select option { + width: 200px; } + .block-filter .form-group { + margin-bottom: 5px; } + .block-filter .form-group label { + font-size: 14px; + line-height: 20px; + font-family: inherit; + margin: 0; } + .block-filter .form-group:last-of-type { + margin-bottom: 0; } + +.form-date { + margin-bottom: 15px; + max-width: 275px; } + .form-date .input-group.date { + width: 100%; } + .form-date .input-group.date label { + display: table-cell; + vertical-align: middle; + font-size: 14px; + line-height: 16px; + font-family: inherit; + width: 50px; + font-weight: normal; } + .form-date.input-group { + max-width: none; } + .form-date .form-control { + cursor: pointer; + border-right: none; + border-color: #dbdfe2; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; } + +.calendar { + width: 21px; + height: 20px; + display: inline-block; + background: url("../img/calendar.png") no-repeat; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + .calendar { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/calendar2k.png"); + background-size: 21px 20px; } } + +.preset-filters-container { + border-top: 3px solid #ececec; + padding: 30px 15px 20px 15px; } + .preset-filters-container a, .preset-filters-container .export-queue { + color: #2a81cb; + display: block; } + +.filters .help-block { + margin-top: 10px; } + +@media only screen and (max-width: 1300px) { + .foldback-button { + display: block; } + + .fullscreen-hidden-filters .filters { + left: -282px; + overflow: visible; } + .fullscreen-hidden-filters .filters .foldback-button { + right: -50px; + background-color: #dbdfe2; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; } + .fullscreen-hidden-filters .filters .foldback-button span.arrow { + right: 2px; + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); } + .fullscreen-hidden-filters .filters .foldback-button span.arrow:first-of-type { + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); } + .fullscreen-hidden-filters .filters .foldback-button .glyphicon { + display: inline-block; } + .fullscreen-hidden-filters .filters .foldback-button { + right: -50px; } } +@media (max-width: 1210px) { + .filters { + margin-top: 60px; } } +@media (max-width: 880px) { + .filters { + left: -282px; + overflow: visible; } + .filters .foldback-button { + right: -50px; + background-color: #dbdfe2; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; } + .filters .foldback-button span.arrow { + right: 2px; + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); } + .filters .foldback-button span.arrow:first-of-type { + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); } + .filters .foldback-button .glyphicon { + display: inline-block; } + + .fullscreen-hidden-filters .filters { + margin-left: 0; + position: absolute; + top: 0px; + right: 0; + bottom: 0; + left: 0; + width: 100%; + overflow: auto; + height: auto; } + .fullscreen-hidden-filters .filters .foldback-button { + right: 10px; + background-color: transparent; } + .fullscreen-hidden-filters .filters .foldback-button span.arrow { + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); } + .fullscreen-hidden-filters .filters .foldback-button span.arrow:first-of-type { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); } + .fullscreen-hidden-filters .filters .foldback-button .glyphicon { + display: none; } + .fullscreen-hidden-filters .filters .foldback-button { + right: 10px; } + .fullscreen-hidden-filters .filters .filters-container, .fullscreen-hidden-filters .filters .preset-filters-container { + display: block; + width: 300px; + margin: 0 auto; + border-color: #dbdfe2; + opacity: 1; + filter: alpha(opacity=100); + visibility: visible; } + .fullscreen-hidden-filters .export-types { + display: none; } } +body > .ui-pnotify { + z-index: 100050; } + +.ui-pnotify-modal-overlay, .modal-backdrop { + background-color: rgba(0, 0, 0, 0.2); } + +.ui-pnotify, .context-menu { + background: #fff; + box-shadow: 9px 9px 3px rgba(0, 0, 0, 0.1), 0 0 3px #323232; + border-radius: 0; } + +.ui-pnotify { + width: 500px !important; } + .ui-pnotify .alert { + font-family: "RobotoRegular"; + margin: 0; + border-top: none !important; + padding: 20px; } + .ui-pnotify .alert.alert-warning { + border-top: 10px solid #2a81cb; + color: #2a81cb; } + .ui-pnotify .alert.alert-success { + border-top: 10px solid #3ca21a; + color: #3ca21a; } + .ui-pnotify .alert.alert-info { + border-top: 10px solid #2a81cb; + color: #2a81cb; } + .ui-pnotify .alert.alert-danger { + border-top: 10px solid #ed2c39; + color: #ed2c39; } + .ui-pnotify .alert .ui-pnotify-closer { + visibility: visible !important; } + .ui-pnotify .alert .ui-pnotify-title { + font: 18px/20px "RobotoRegular"; + color: #3f3f3f; + margin-bottom: 20px; } + .ui-pnotify .alert .ui-pnotify-icon { + display: none; } + .ui-pnotify .alert .ui-pnotify-text { + font: 14px/16px Arial, sans-serif; + color: #3f3f3f; } + .ui-pnotify .alert .ui-pnotify-action-bar { + margin-top: 25px !important; + text-align: left !important; } + .ui-pnotify .alert .ui-pnotify-action-bar .btn { + border-color: transparent; + color: #2a81cb; + padding: 0; + margin-right: 20px; } + .ui-pnotify .alert .ui-pnotify-action-bar .btn:last-of-type { + margin-right: 0; } + .ui-pnotify .alert .ui-pnotify-action-bar .btn:hover, .ui-pnotify .alert .ui-pnotify-action-bar .btn:focus, .ui-pnotify .alert .ui-pnotify-action-bar .btn:active { + background-color: transparent; + text-decoration: underline; } + .ui-pnotify .alert .ui-pnotify-closer span { + background-color: transparent; + width: 16px; + height: 16px; + position: relative; + margin: 0; + opacity: 0.5; + filter: alpha(opacity=50); + display: block; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; } + .ui-pnotify .alert .ui-pnotify-closer span:before, .ui-pnotify .alert .ui-pnotify-closer span:after { + display: block; + content: ""; + width: 16px; + height: 2px; + background-color: #a6a8a9; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: relative; + top: 7px; + -webkit-transition: background 0.2s linear 0s; + -moz-transition: background 0.2s linear 0s; + -ms-transition: background 0.2s linear 0s; + -o-transition: background 0.2s linear 0s; + transition: background 0.2s linear 0s; } + .ui-pnotify .alert .ui-pnotify-closer span:after { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); + top: 5px; } + .ui-pnotify .alert .ui-pnotify-closer span:hover:before, .ui-pnotify .alert .ui-pnotify-closer span:hover:after, .ui-pnotify .alert .ui-pnotify-closer span:focus:before, .ui-pnotify .alert .ui-pnotify-closer span:focus:after, .ui-pnotify .alert .ui-pnotify-closer span:active:before, .ui-pnotify .alert .ui-pnotify-closer span:active:after { + background-color: #595c5d; } + .ui-pnotify.loading-indicator { + border-radius: 0; } + .ui-pnotify.loading-indicator .ui-pnotify-container { + border-radius: 0; + box-shadow: 9px 9px 3px rgba(0, 0, 0, 0.1); } + .ui-pnotify.loading-indicator .ui-pnotify-container.alert { + padding: 30px 40px; + border-top: none; } + .ui-pnotify.loading-indicator .ui-pnotify-title { + font: 24px/26px "RobotoLight"; + padding: 0; + margin: 0; } + .ui-pnotify.centered-modal { + position: fixed; + left: 50% !important; + top: 50% !important; + transform: translate(-50%, -51%); + -ms-transform: translate3d(-50%, -51%, 0); + margin: 0; } + +@media only screen and (max-width: 840px) { + #statusHistoryModal .modal-dialog, + .statusHistoryModal .modal-dialog { + width: calc(100% - 40px) !important; + margin: 20px; } } +@media only screen and (max-width: 680px) { + .modal-dialog { + width: calc(100% - 40px) !important; + margin: 20px; } } +@media only screen and (min-width: 880px) { + .modal:before { + display: inline-block; + vertical-align: middle; + content: " "; + height: 100%; } } +.modal { + text-align: center; + padding-right: 0 !important; } + .modal .table td .comment { + padding-top: 10px; } + .modal .table td .comment h4 { + margin-bottom: 5px; } + .modal .table td, .modal .table th { + padding: 10px; } + .modal .table td:first-child, .modal .table th:first-child { + min-width: 160px; } + .modal .table th { + border-top: none !important; } + .modal .title-row, .modal .interviewer { + color: #3f3f3f; } + .modal .title-row:hover, .modal .interviewer:hover, .modal .title-row:focus, .modal .interviewer:focus, .modal .title-row:active, .modal .interviewer:active { + color: #2a81cb; + text-decoration: none; } + .modal .template, .modal .tetle-row { + font-size: 16px; + line-height: 18px; } + .modal .title-row { + font-size: 16px; + line-height: 18px; } + +#statusHistoryModal .modal-dialog, +.statusHistoryModal .modal-dialog { + width: 800px; } + +.modal-dialog { + display: inline-block; + text-align: left; + vertical-align: middle; + width: 660px; } + +.modal-content { + padding: 20px; + border: none; + box-shadow: none; + font-size: 14px; + line-height: 16px; } + .modal-content h3 { + font-size: 14px; + line-height: 16px; } + .modal-content p + h3 { + margin-top: 25px; } + .modal-content .modal-header { + border: none; + padding: 0; + margin-bottom: 25px; } + .modal-content .modal-header .close { + position: relative; + opacity: 0.5; + filter: alpha(opacity=50); } + .modal-content .modal-header .close span { + background-color: transparent; + width: 20px; + height: 20px; + position: relative; + margin: 0; + opacity: 0.5; + filter: alpha(opacity=50); + display: block; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; } + .modal-content .modal-header .close span:before, .modal-content .modal-header .close span:after { + display: block; + content: ""; + width: 20px; + height: 2px; + background-color: #a6a8a9; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: relative; + top: 9px; + -webkit-transition: background 0.2s linear 0s; + -moz-transition: background 0.2s linear 0s; + -ms-transition: background 0.2s linear 0s; + -o-transition: background 0.2s linear 0s; + transition: background 0.2s linear 0s; } + .modal-content .modal-header .close span:after { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); + top: 7px; } + .modal-content .modal-header .close span:hover:before, .modal-content .modal-header .close span:hover:after, .modal-content .modal-header .close span:focus:before, .modal-content .modal-header .close span:focus:after, .modal-content .modal-header .close span:active:before, .modal-content .modal-header .close span:active:after { + background-color: #595c5d; } + .modal-content .modal-body { + padding: 0 0 10px; } + .modal-content .modal-body .bootbox-body h3 { + font: 18px/20px RobotoRegular; } + .modal-content .modal-body .bootbox-body p:last-child { + margin: 0; } + .modal-content .modal-body ul li { + margin-bottom: 5px; } + .modal-content .modal-body ul li label { + font: 14px/16px "RobotoRegular"; + font-weight: normal; } + .modal-content .modal-body ul li input:checked + label { + color: #3f3f3f; } + .modal-content .modal-body ul li input + label { + color: #a6a8a9; } + .modal-content .modal-body .table-striped td { + border-right: 1px solid #dbdfe2; } + .modal-content .modal-body .table-striped td:last-child { + border: none; } + .modal-content .modal-footer { + border: none; + text-align: left; + padding-left: 0; + padding-right: 0; } + .modal-content .modal-footer .btn-link { + padding: 0; + margin-right: 20px; } + +.modal-dropdown { + width: 315px; + max-height: none; + overflow-y: visible; } + +.context-menu { + width: 280px; + padding: 15px 10px; } + .context-menu h3 { + font: 14px/16px "RobotoBold"; + margin-bottom: 20px; + margin-left: 10px; } + .context-menu li a { + padding: 10px; } + .context-menu li a:hover, .context-menu li a:focus, .context-menu li a:active { + background-color: #eff4f8; } + .context-menu li span { + display: inline-block; + padding: 10px; + color: #a6a8a9; } + +.audio-question .modal .modal-dialog { + max-width: 450px; } +.audio-question .modal .modal-header { + margin-bottom: 10px; } + .audio-question .modal .modal-header h5, .audio-question .modal .modal-header .preset-filters-container a, .preset-filters-container .audio-question .modal .modal-header a, .audio-question .modal .modal-header .preset-filters-container .export-queue, .preset-filters-container .audio-question .modal .modal-header .export-queue { + padding: 0; + line-height: 18px; } + .audio-question .modal .modal-header .modal-title { + margin-bottom: 5px; } +.audio-question .modal .modal-body canvas { + display: block; + margin: 0 auto; } +.audio-question .modal .modal-footer { + padding-bottom: 0; } + .audio-question .modal .modal-footer .recordign-time { + float: left; + font: 24px/36px "RobotoLight"; } + .audio-question .modal .modal-footer button { + float: right; + padding: 10px; + margin: 0 10px 0 0; } + +@media (max-width: 481px) { + .ui-pnotify { + width: 300px !important; } + .ui-pnotify .input-group { + width: 100%; } } +.table { + color: #3f3f3f; + width: 100% !important; + font: 14px/16px Arial, sans-serif; } + .table td.type-numeric { + text-align: right; } + .table tr .without-break { + white-space: nowrap; + max-width: 300px; + text-overflow: clip; + overflow: hidden; + position: relative; } + .table tr .without-break:before { + display: block; + position: absolute; + top: 0; + right: 0; + content: ""; + height: 100%; + width: 30px; + background-image: -webkit-linear-gradient(left, transparent 0%, #fff 70%); + background-image: -o-linear-gradient(left, transparent 0%, #fff 70%); + background-image: linear-gradient(to right, transparent 0%, #fff 70%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#FFFFFFFF', GradientType=1); } + .table tr.selected { + background-color: #e1e3e3 !important; } + .table tr.selected input.checkbox-filter ~ label .tick { + background-position: -43px 0; } + .table tr.selected input.checkbox-filter ~ label:hover .tick, .table tr.selected input.checkbox-filter ~ label:focus .tick { + background-position: -43px -36px; } + .table tr.selected input.checkbox-filter:checked ~ label .tick { + background-position: -43px -72px; } + .table tr.selected input.checkbox-filter:checked ~ label:hover .tick, .table tr.selected input.checkbox-filter:checked ~ label:focus .tick { + background-position: -43px -108px; } + .table tr.selected input.checkbox-filter:disabled ~ label .tick, .table tr.selected input.checkbox-filter:checked:disabled ~ label .tick { + background-position: -43px -144px; } + .table tr.selected input.checkbox-filter:disabled ~ label:hover .tick, .table tr.selected input.checkbox-filter:checked:disabled ~ label:hover .tick, .table tr.selected input.checkbox-filter:disabled ~ label:focus .tick, .table tr.selected input.checkbox-filter:checked:disabled ~ label:focus .tick { + background-position: -43px -180px; } + .table tr td { + word-wrap: break-word; + overflow-wrap: break-word; } + .table tr th.with-search { + padding-left: 40px; + min-width: 150px; } + .table tr.disabled { + background: repeating-linear-gradient(-45deg, #dbdfe2, #dbdfe2 2px, transparent 2px, transparent 6px); } + .table tr.disabled a, .table tr.disabled label, .table tr.disabled input, .table tr.disabled button { + cursor: not-allowed; + pointer-events: none; } + .table tr.disabled td:hover a, .table tr.disabled td:hover a:hover, .table tr.disabled td:hover a:focus, .table tr.disabled td:hover a:active, .table tr.disabled td:focus a, .table tr.disabled td:focus a:hover, .table tr.disabled td:focus a:focus, .table tr.disabled td:focus a:active, .table tr.disabled td:active a, .table tr.disabled td:active a:hover, .table tr.disabled td:active a:focus, .table tr.disabled td:active a:active { + color: #3f3f3f !important; } + .table thead { + letter-spacing: 0.5px; + color: #a6a8a9; } + .table thead tr th { + padding: 15px; + font-weight: normal; + vertical-align: top; } + .table thead tr th.vertical-align-middle { + vertical-align: middle; } + .table thead tr th.vertical-align-middle:after { + top: calc(50% - 8px); } + .table tbody tr td { + border-bottom: none; + border-top: none; + padding: 15px; + vertical-align: middle; + height: 35px; } + .table tbody tr td.date { + font: 14px/16px "Trebuchet MS", Helvetica, sans-serif; + white-space: nowrap; } + .table tbody tr td.parameters { + font-family: "TrebuchetMSBold"; + color: #6b6b6b; } + .table tbody tr td.parameters span { + text-transform: none; } + .table tbody tr td.title-row { + font-size: 18px; + line-height: 20px; } + .table tbody tr td.title-row a, .table tbody tr td.title-row span { + font-size: 18px; + line-height: 20px; } + .table tbody tr td.centered-italic { + text-align: center; + font-style: italic; } + .table tbody tr td span { + color: #a6a8a9; } + .table tbody tr td .pull-right .glyphicon-remove, .table tbody tr td .caret { + color: #fff; } + .table tbody tr td a { + text-overflow: ellipsis; + color: #3f3f3f; } + .table tbody tr td:hover a, .table tbody tr td:hover a:hover, .table tbody tr td:hover a:focus, .table tbody tr td:hover a:active, .table tbody tr td:focus a, .table tbody tr td:focus a:hover, .table tbody tr td:focus a:focus, .table tbody tr td:focus a:active, .table tbody tr td:active a, .table tbody tr td:active a:hover, .table tbody tr td:active a:focus, .table tbody tr td:active a:active { + color: #2a81cb !important; + text-decoration: none; } + .table tfoot tr { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; } + .table tfoot tr td, .table tfoot tr th { + border-top: none; + padding: 15px; + height: 35px; } + .table tfoot tr td.title-row, .table tfoot tr th.title-row { + font-size: 18px; + line-height: 20px; } + .table tfoot tr td.title-row a, .table tfoot tr td.title-row span, .table tfoot tr th.title-row a, .table tfoot tr th.title-row span { + font-size: 18px; + line-height: 20px; } + .table tfoot tr td.type-numeric, .table tfoot tr th.type-numeric { + text-align: right; } + .table tfoot tr td:hover a, .table tfoot tr td:hover a:hover, .table tfoot tr td:hover a:focus, .table tfoot tr td:hover a:active, .table tfoot tr td:focus a, .table tfoot tr td:focus a:hover, .table tfoot tr td:focus a:focus, .table tfoot tr td:focus a:active, .table tfoot tr td:active a, .table tfoot tr td:active a:hover, .table tfoot tr td:active a:focus, .table tfoot tr td:active a:active, .table tfoot tr th:hover a, .table tfoot tr th:hover a:hover, .table tfoot tr th:hover a:focus, .table tfoot tr th:hover a:active, .table tfoot tr th:focus a, .table tfoot tr th:focus a:hover, .table tfoot tr th:focus a:focus, .table tfoot tr th:focus a:active, .table tfoot tr th:active a, .table tfoot tr th:active a:hover, .table tfoot tr th:active a:focus, .table tfoot tr th:active a:active { + color: #2a81cb !important; + text-decoration: none; } + .table tfoot tr td a, .table tfoot tr th a { + text-overflow: ellipsis; + color: #3f3f3f; } + .table .total-row { + border-top: 2px solid #ddd; + border-bottom: 2px solid #ddd; } + .table .total-row td { + font-weight: bold; } + +.table-striped tbody tr { + background-color: #f8f9f9; } + .table-striped tbody tr td.without-break:before { + background-image: -webkit-linear-gradient(left, transparent 0%, #f8f9f9 70%); + background-image: -o-linear-gradient(left, transparent 0%, #f8f9f9 70%); + background-image: linear-gradient(to right, transparent 0%, #f8f9f9 70%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#FFF8F9F9', GradientType=1); } +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #edeff0; } + .table-striped > tbody > tr:nth-of-type(odd).selected td.without-break:before { + background-image: -webkit-linear-gradient(left, transparent 0%, #cad1d7 70%); + background-image: -o-linear-gradient(left, transparent 0%, #cad1d7 70%); + background-image: linear-gradient(to right, transparent 0%, #cad1d7 70%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#FFCAD1D7', GradientType=1); } + .table-striped > tbody > tr:nth-of-type(odd) td.without-break:before { + background-image: -webkit-linear-gradient(left, transparent 0%, #edeff0 70%); + background-image: -o-linear-gradient(left, transparent 0%, #edeff0 70%); + background-image: linear-gradient(to right, transparent 0%, #edeff0 70%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#FFEDEFF0', GradientType=1); } + +.table-bordered { + border: none; } + .table-bordered > thead > tr > td, .table-bordered > thead > tr > th, .table-bordered > tbody > tr > td, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > td, .table-bordered > tfoot > tr > th { + border-bottom: none; + border-right: none; + border-left: 1px solid #f8f9f9; } + .table-bordered > thead > tr > td:first-child, .table-bordered > thead > tr > th:first-child, .table-bordered > tbody > tr > td:first-child, .table-bordered > tbody > tr > th:first-child, .table-bordered > tfoot > tr > td:first-child, .table-bordered > tfoot > tr > th:first-child { + border-left: none; } + +.table-ordered thead tr th { + padding-right: 25px !important; + position: relative; + cursor: pointer; } + .table-ordered thead tr th.sorting_disabled.sorting_desc, .table-ordered thead tr th.sorting_disabled.sorting_asc { + color: #a6a8a9; } + .table-ordered thead tr th.sorting_disabled:after { + display: none !important; } + .table-ordered thead tr th:focus, .table-ordered thead tr th:hover, .table-ordered thead tr th:active:focus { + outline: none; } + .table-ordered thead tr th:after { + display: inline-block; + content: ""; + width: 0; + height: 0; + border-top: 10px solid #dbdfe2; + border-right: 6px solid transparent; + border-left: 6px solid transparent; + position: absolute; + top: 17px; + right: 10px; } + .table-ordered thead tr th.sorting_asc { + color: #2a81cb; } + .table-ordered thead tr th.sorting_asc:after { + border-top: none; + border-bottom: 10px solid #2a81cb; } + .table-ordered thead tr th.sorting_desc { + color: #2a81cb; } + .table-ordered thead tr th.sorting_desc:after { + border-top-color: #2a81cb; } +.table-ordered thead th.padding-left-slide:first-child { + padding-left: 365px; } + +.table thead tr th.sorting { + padding-right: 25px !important; + position: relative; + cursor: pointer; } + .table thead tr th.sorting:after { + display: inline-block; + content: ""; + position: absolute; + top: 17px; + right: 10px; + width: 0; + height: 0; + border-top: 10px solid #dbdfe2; + border-right: 6px solid transparent; + border-left: 6px solid transparent; } + .table thead tr th.sorting.sorting-up { + color: #2a81cb; } + .table thead tr th.sorting.sorting-up:after { + border-top-color: #2a81cb; } + .table thead tr th.sorting.sorting-down { + color: #2a81cb; } + .table thead tr th.sorting.sorting-down:after { + border-top: none; + border-bottom: 10px solid #2a81cb; } + +.table-hover tbody tr:hover, .table-hover tbody tr:focus { + background-color: #eff4f8; } + .table-hover tbody tr:hover a, .table-hover tbody tr:focus a { + color: #000; } + .table-hover tbody tr:hover td.without-break:before, .table-hover tbody tr:focus td.without-break:before { + background-image: -webkit-linear-gradient(left, transparent 0%, #eff4f8 70%); + background-image: -o-linear-gradient(left, transparent 0%, #eff4f8 70%); + background-image: linear-gradient(to right, transparent 0%, #eff4f8 70%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#FFEFF4F8', GradientType=1); } + +.table-with-checkboxes thead tr td.checkbox-cell, .table-with-checkboxes thead tr th.checkbox-cell, .table-with-checkboxes tbody tr td.checkbox-cell, .table-with-checkboxes tbody tr th.checkbox-cell { + text-align: center; + padding: 15px 3px 15px 10px; + outline: none; } +.table-with-checkboxes thead tr th.checkbox-cell, .table-with-checkboxes tbody tr th.checkbox-cell { + padding-top: 12px; + padding-right: 0 !important; } +.table-with-checkboxes tbody tr td label { + padding: 0; + margin: 0; } + .table-with-checkboxes tbody tr td label .tick { + position: relative; + margin: 0; } + +.table-with-scroll { + overflow-x: auto; + margin-bottom: 10px; } + +.dataTables_wrapper { + position: relative; } + .dataTables_wrapper .dataTables_filter { + position: absolute; + top: -65px; + right: -10px; + z-index: 2; } + .dataTables_wrapper .dataTables_filter label { + font-size: 0; + color: transparent; + margin-bottom: 0; + min-height: 30px; } + .dataTables_wrapper .dataTables_filter label:after { + position: absolute; + top: 10px; + right: 10px; + display: block; + content: ""; + width: 20px; + height: 20px; + background: url("../img/search.png") no-repeat; + background-position: 0 0; + background-size: 80px 20px; + cursor: pointer; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + .dataTables_wrapper .dataTables_filter label:after { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/search2k.png"); + background-size: 80px 20px; } } + .dataTables_wrapper .dataTables_filter label:hover:after { + background-position: -20px 0; } + .dataTables_wrapper .dataTables_filter label.active:after { + background-position: -40px 0; } + .dataTables_wrapper .dataTables_filter label.active:hover:after { + background-position: -60px 0; } + .dataTables_wrapper .dataTables_filter label.active input { + border: 1px solid #dbdfe2; + width: 300px; + padding: 5px 10px; } + .dataTables_wrapper .dataTables_filter label input { + height: 40px; + width: 0; + margin-right: 40px; + font-size: 13px; + line-height: 15px; + color: #3f3f3f; + border-radius: 5px; + outline: none; + padding: 5px 0; } + +.dataTables_wrapper .dataTables_info, .dataTables_wrapper .download-report { + clear: both; + float: right; + padding-top: 0.755em; + padding-bottom: 10px; + font: 13px/15px "TrebuchetMSBold"; + padding-left: 20px; + text-align: right; } +.dataTables_wrapper .download-report { + padding-top: 5px; } + +.dataTables_paginate { + position: relative; + padding: 40px 0 10px 0; + overflow: hidden; + font-size: 14px; + line-height: 16px; } + .dataTables_paginate > span { + display: block; + position: absolute; + top: 10px; + left: 0; } + .dataTables_paginate .paginate_button { + padding: 6px 12px; + cursor: pointer; } + .dataTables_paginate .paginate_button.disabled, .dataTables_paginate .paginate_button.disabled:hover, .dataTables_paginate .paginate_button.disabled:active { + color: #a6a8a9; + text-decoration: none; + cursor: not-allowed; } + .dataTables_paginate .paginate_button.current, .dataTables_paginate .paginate_button.current:hover { + color: #a6a8a9 !important; } + .dataTables_paginate > .paginate_button { + float: left; + padding: 5px 12px; } + +.dataTables_processing.error { + background: rgba(100, 0, 0, 0.1); } + +.dataTables_scroll { + overflow-x: auto; } + .dataTables_scroll .dataTables_scrollHead .table { + margin-top: 0; + margin-bottom: 0; } + .dataTables_scroll .dataTables_scrollBody th { + border-top: none !important; } + .dataTables_scroll .dataTables_scrollBody th * { + display: none; } + .dataTables_scroll .dataTables_scrollBody th:after { + display: none !important; } + +@media only screen and (max-width: 1450px) { + .table-ordered thead tr th:after { + border-top: 8px solid #dbdfe2; } + .table-ordered thead tr th.sorting_desc:after { + border-top: 8px solid #2a81cb; } + .table-ordered thead tr th.sorting_asc:after { + border-bottom-width: 8px; } + + .table { + font-size: 14px; + line-height: 16px; } + .table thead tr th { + font-size: 10px; + line-height: 12px; } + .table thead tr th.sorting:after { + border-top: 8px solid #dbdfe2; } + .table thead tr th.sorting.sorting-down:after { + border-bottom: 8px solid #2a81cb; } } +@media (max-width: 1210px) { + .dataTables_wrapper .dataTables_filter { + right: 0; } + .dataTables_wrapper .dataTables_filter label.active input { + width: 200px; } + + .table-ordered thead th.padding-left-slide:first-child { + padding-left: 265px; } + + .table-wrapper .dataTables_paginate { + margin-bottom: 0; } + + .table tr td.for-md-screen, .table tr th.for-md-screen { + display: none; } } +@media (max-width: 880px) { + .table-mobile-devices { + width: 100%; } + .table-mobile-devices .version { + max-width: 100%; } + .table-mobile-devices tr .without-break { + max-width: 100%; } + .table-mobile-devices thead { + display: none; } + .table-mobile-devices tr:nth-of-type(2n) { + background-color: inherit; } + .table-mobile-devices tr { + border-bottom: 2px solid #ddd !important; } + .table-mobile-devices .total-row .title-row { + text-align: right; } + .table-mobile-devices .total-row td[data-th*="version"], .table-mobile-devices .total-row th[data-th*="version"] { + display: none; } + .table-mobile-devices tbody tr td, .table-mobile-devices tfoot tr th { + overflow: hidden; + height: auto; + font-size: 12px; + line-height: 14px; + display: block; + position: relative; + text-align: left; + border-bottom: 1px solid #ddd !important; + white-space: normal !important; } + .table-mobile-devices tbody tr td a, .table-mobile-devices tfoot tr th a { + float: left; + width: 50%; + text-align: right; } + .table-mobile-devices tbody tr td:before, .table-mobile-devices tfoot tr th:before { + content: attr(data-th); + display: block; + height: 100%; + text-align: left; + padding-right: 10px; + text-transform: uppercase; + font-family: "TrebuchetMSBold"; + letter-spacing: 0.5px; + float: left; + clear: both; + width: 50%; } + .table-mobile-devices tbody tr td.without-break, .table-mobile-devices tfoot tr th.without-break { + text-overflow: initial; } + .table-mobile-devices tbody tr td.without-break:before, .table-mobile-devices tfoot tr th.without-break:before { + float: left; + background-image: none !important; + content: attr(data-th); + position: relative; + height: 100%; + width: 50%; } + .table-mobile-devices tfoot tr th { + text-align: center; } + .table-mobile-devices tfoot tr th:nth-of-type(2):before, .table-mobile-devices tfoot tr th:first-of-type:before { + display: none; } + + .table tr td.for-tablets, .table tr th.for-tablets { + display: none; } + + .dataTables_wrapper .dataTables_filter { + text-align: right; + position: relative; + top: -5px; } + .dataTables_wrapper .dataTables_filter label:after { + top: 10px; } + .dataTables_wrapper .dataTables_filter label.active { + width: 100%; } + .dataTables_wrapper .dataTables_filter label.active input { + width: 50%; } + + .table-ordered thead th.padding-left-slide:first-child { + padding-left: 10px; } + .table-ordered thead tr th.column-questionnaire-title { + padding-left: 10px; } } +@media (max-width: 481px) { + .dataTables_wrapper .dataTables_info { + float: none; + margin-bottom: 10px; + text-align: left; } + .dataTables_wrapper .download-report { + float: none; + padding-top: 0; + text-align: left; } + .dataTables_wrapper .dataTables_paginate { + float: none; } + + .dataTables_wrapper .dataTables_filter label.active { + width: 100%; } + .dataTables_wrapper .dataTables_filter label.active input { + width: 80%; } + + .table tr td.for-mobile-devices, .table tr th.for-mobile-devices { + display: none; } + .table tbody tr td:first-child { + padding-left: 10px; } + .table thead tr th { + font-size: 8px; + line-height: 10px; } + .table thead tr th.sorting:after { + border-width: 4px; + border-top: 6px solid #dbdfe2; } + .table thead tr th.sorting.sorting-down:after { + border-bottom: 6px solid #2a81cb; } + + .table-ordered thead tr th:after { + border-width: 4px; + border-top: 6px solid #dbdfe2; } + .table-ordered thead tr th.sorting_desc:after { + border-top: 6px solid #2a81cb; } + .table-ordered thead tr th.sorting_asc:after { + border-bottom-width: 6px; } } +.table.history td .comment { + padding-top: 10px; } + .table.history td .comment h4 { + margin-bottom: 5px; } + .table.history td .comment p:last-of-type { + margin: 0; } +.table.history td, .table.history th { + padding: 10px; } + .table.history td:first-child, .table.history th:first-child { + min-width: 160px; } + +.uploaded-to-hq { + min-width: 150px; } + +.table .interviewer, .table .supervisor { + padding-left: 0; } + +.table.timestamps-table td { + vertical-align: top; + padding: 5px 10px 5px 0; + height: auto; } + .table.timestamps-table td:first-child { + width: 70px; } +.table.timestamps-table .app-oppened { + background-image: -webkit-linear-gradient(top, #dbdfe2 0%, #dbdfe2 100%); + background-image: -o-linear-gradient(top, #dbdfe2 0%, #dbdfe2 100%); + background-image: linear-gradient(to bottom, #dbdfe2 0%, #dbdfe2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDBDFE2', endColorstr='#FFDBDFE2', GradientType=0); + background-size: 250px 1px; + background-repeat: no-repeat; + background-position: 0 100%; } + .table.timestamps-table .app-oppened:last-child { + background-image: none; } + +@font-face { + font-family: "RobotoRegular"; + src: url("../fonts/RobotoRegular.woff2") format("woff2"), url("../fonts/RobotoRegular.woff") format("woff"), url("../fonts/RobotoRegular.ttf") format("truetype"), url("../fonts/RobotoRegular.svg#RobotoRegular") format("svg"); + font-display: swap; } +@font-face { + font-family: "RobotoLight"; + src: url("../fonts/RobotoLight.woff2") format("woff2"), url("../fonts/RobotoLight.woff") format("woff"), url("../fonts/RobotoLight.ttf") format("truetype"), url("../fonts/RobotoLight.svg#RobotoLight") format("svg"); + font-display: swap; } +@font-face { + font-family: "RobotoBold"; + src: url("../fonts/RobotoBold.woff2") format("woff2"), url("../fonts/RobotoBold.woff") format("woff"), url("../fonts/RobotoBold.ttf") format("truetype"), url("../fonts/RobotoBold.svg#RobotoBold") format("svg"); + font-display: swap; } +@font-face { + font-family: "TrebuchetMSBold"; + src: url("../fonts/TrebuchetMSBold.woff2") format("woff2"), url("../fonts/TrebuchetMSBold.woff") format("woff"), url("../fonts/TrebuchetMSBold.ttf") format("truetype"), url("../fonts/TrebuchetMSBold.svg#TrebuchetMSBold") format("svg"); + font-display: swap; } +input[type=number] { + -moz-appearance: textfield; + appearance: textfield; + margin: 0; } + +input[type=number]::-webkit-inner-spin-button, +input[type=number]::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; } + +input::-ms-clear { + display: none; } + +a { + color: #2a81cb; } + a:hover, a:focus { + color: #2a81cb; } + +.btn:hover, .btn:focus, .btn:active, .btn:active:focus, a:hover, a:focus, a:active, a:active:focus { + outline: none; } + +html { + position: relative; + min-height: 100%; + height: 100%; } + html body { + min-height: 100%; + position: relative; + color: #3f3f3f; + min-width: 360px; + padding: 70px 0 100px; + font: 16px/18px Arial, sans-serif; + background-image: -webkit-linear-gradient(left, #dbdfe2 0%, #dbdfe2 100%); + background-image: -o-linear-gradient(left, #dbdfe2 0%, #dbdfe2 100%); + background-image: linear-gradient(to right, #dbdfe2 0%, #dbdfe2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDBDFE2', endColorstr='#FFDBDFE2', GradientType=1); + background-repeat: repeat-y; + background-size: 12px 100%; } + html body.gray-background { + background-color: #f8f8f8; } + html body .footer { + position: absolute; + bottom: 0; + width: 100%; + height: 100px; + padding-top: 40px; + text-align: right; + color: #a6a8a9; + font-size: 12px; + line-height: 16px; + font-family: inherit; + -webkit-transition: padding 0.3s linear 0s; + -moz-transition: padding 0.3s linear 0s; + -ms-transition: padding 0.3s linear 0s; + -o-transition: padding 0.3s linear 0s; + transition: padding 0.3s linear 0s; } + html body .footer a { + color: #a6a8a9; + text-decoration: underline; } + html body .footer a:hover { + text-decoration: none; } + +.container, .container-fluid { + padding: 0 45px 0 90px; } + +main .container { + margin-left: 0; + margin-right: 0; } + main .container.center-block { + margin-left: auto; + margin-right: auto; } + +h1 { + font: 26px/28px "RobotoLight"; + margin: 0; + color: #3f3f3f; + padding: 0 0 15px; } + +h2 { + font: 26px/28px "RobotoLight"; + font-weight: normal; + margin-top: 0; + margin-bottom: 25px; } + +h3 { + font: 19px/21px "RobotoBold"; + margin-top: 0; } + +h4 { + font: 22px/24px "RobotoLight"; + margin-bottom: 20px; } + +h5, .preset-filters-container a, .preset-filters-container .export-queue { + margin-bottom: 10px; + font: 14px/16px "RobotoBold"; } + +.hold-transition * { + -webkit-transition: none !important; + -moz-transition: none !important; + -ms-transition: none !important; + -o-transition: none !important; } + +.breadcrumb { + background-color: transparent; + margin: 0; + padding: 0; } + .breadcrumb > li + li:before { + display: none; } + .breadcrumb > li:after { + content: "/ "; + padding: 0 5px; } + +.page-header { + padding-bottom: 0; + margin: 0; + border: none; + padding-top: 35px; + padding-bottom: 15px; } + .page-header h1 + .maintenance-mode { + margin-top: 15px; } + .page-header .neighbor-block-to-search { + padding-right: 365px; } + .page-header .neighbor-block-to-search.row-without-padding { + padding-right: 0; } + .page-header .topic-with-button { + overflow: hidden; } + .page-header .topic-with-button h1 { + float: left; + margin-right: 30px; } + .page-header .topic-with-button .btn { + float: left; + padding: 8px; + margin-bottom: 10px; } + .page-header p { + font-family: "RobotoRegular"; } + .page-header ul { + font-size: 14px; + line-height: 16px; } + .page-header ul li { + padding-bottom: 3px; } + .page-header ul li::last-child { + padding-bottom: 0; } + +.row .page-header { + padding-left: 15px; } + +.alert { + margin-bottom: 20px; + background-color: transparent; + padding: 0; + border: none; } + .alert p { + margin-bottom: 10px; + color: #e74924; } + .alert.alert-danger, .alert .help-block { + color: #e74924; } + .alert.alert-success { + color: #22c015; } + .alert.alert-info { + color: #2a81cb; } + .alert div ul li { + margin: 10px 0; } + +.alerts .alert { + margin: 20px 0 0; + padding: 15px; + border-radius: 5px; + border: 1px solid #dbdfe2; + background-color: #f8f8f8; + word-wrap: break-word; + overflow-wrap: break-word; } + .alerts .alert .close { + color: inherit; } + .alerts .alert .close:hover, .alerts .alert .close:focus, .alerts .alert .close:active { + opacity: 1; } + .alerts .alert.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #3ca21a; } + .alerts .alert.alert-success hr { + border-top-color: #c9e2b3; } + .alerts .alert.alert-success .alert-link { + color: #2c7613; } + .alerts .alert.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #2a81cb; } + .alerts .alert.alert-info hr { + border-top-color: #a6e1ec; } + .alerts .alert.alert-info .alert-link { + color: #2166a1; } + .alerts .alert.alert-warning { + background-color: #fcf8e3; + border-color: #faebcc; + color: #8a6d3b; } + .alerts .alert.alert-warning hr { + border-top-color: #f7e1b5; } + .alerts .alert.alert-warning .alert-link { + color: #66512c; } + .alerts .alert.alert-danger { + background-color: #f2dede; + border-color: #ebccd1; + color: #e74924; } + .alerts .alert.alert-danger hr { + border-top-color: #e4b9c0; } + .alerts .alert.alert-danger .alert-link { + color: #c33615; } + .alerts .alert.alert-dismissible { + padding-right: 35px; } + +.panel-heading .alerts .alert { + margin: 0; } + +.error-text { + color: #e74924 !important; } + +.success-text { + color: #3ca21a !important; } + +.default-text { + color: #dbdfe2 !important; } + +.gray-font { + color: #a6a8a9; } + +.primary-text { + color: #2a81cb !important; } + +.gray-uppercase { + font: 12px/14px "Trebuchet MS", Helvetica, sans-serif !important; + text-transform: uppercase; + letter-spacing: 0.13em; + color: #6b6b6b; + margin: 0 0 20px; } + +.info-block { + font: 14px/16px "RobotoRegular"; + margin-bottom: 20px; } + .info-block p { + margin-bottom: 20px; } + .info-block p:last-of-type { + margin-bottom: 0px; } + .info-block p:only-of-type { + margin-bottom: 20px; } + +.table .highlight { + background-color: #ff8; + color: #3f3f3f; + border-radius: 0.28571429rem; } + +table tr th:first-child .census-icon, table tr td:first-child .census-icon { + margin-right: 5px; + margin-left: 0; } +table tr th .census-icon, table tr td .census-icon { + margin-left: 5px; } + +.table tbody tr td span.census-icon { + color: #fff; } + +.census-icon { + display: inline-block; + width: 20px; + height: 20px; + border-radius: 100%; + background-color: #2a81cb; + position: relative; + bottom: -2px; } + .census-icon:after { + content: "C"; + display: block; + font: 12px/12px Arial, sans-serif; + font-style: italic; + font-weight: bold; + position: absolute; + top: 4px; + right: 6px; + color: #fff !important; } + .census-icon:hover, .census-icon:focus, .census-icon:active { + color: #fff !important; } + +.flag { + font-size: 14px; + line-height: 24px; + color: #dbdfe2; + display: block; + font-weight: bold; + padding-left: 35px; + position: relative; + -webkit-transition: color 0.2s linear 0s; + -moz-transition: color 0.2s linear 0s; + -ms-transition: color 0.2s linear 0s; + -o-transition: color 0.2s linear 0s; + transition: color 0.2s linear 0s; } + .flag:before { + content: ""; + position: absolute; + top: 0; + left: 0; } + .flag.flagged { + color: #3f3f3f; } + .flag.flagged:before { + background-position: 1px 0; } + .flag:hover, .flag:focus, .flag:active { + color: #a6a8a9; + text-decoration: none; } + .flag:hover:hover:before, .flag:hover:focus:before, .flag:focus:hover:before, .flag:focus:focus:before, .flag:active:hover:before, .flag:active:focus:before { + background-position: -57px 0; } + .flag:hover:before, .flag:focus:before, .flag:active:before { + background-position: -57px 0; } + .flag.flagged:hover, .flag.flagged:focus { + color: #3f3f3f; + text-decoration: none; } + .flag.flagged:hover:before, .flag.flagged:focus:before { + background-position: -18px 0; } + +.view-mode { + border: none; + position: fixed; + top: 70px; + z-index: 20; + width: 100%; + text-align: center; + color: #8a6d3b; + margin: 0; + border-radius: 0; } + .view-mode .panel-warning.panel-heading { + border-width: 2px; + padding: 5px; + background-color: #ff8; } + .view-mode .panel-heading { + padding: 0; + border-width: 0px; } + .view-mode .panel-heading .alerts { + margin: 0; } + .view-mode .panel-heading .alerts .alert { + border-radius: 0; } + +.extra-margin-bottom { + margin-bottom: 30px; } + +.position-relative { + position: relative; } + +.empty { + width: 20px; + height: 2px; + background-color: #a6a8a9; + display: inline-block; + vertical-align: middle; } + +.loading { + position: fixed; + top: 15px; + z-index: 2000; } + +.toast .container-fluid { + padding: 0; } + .toast .container-fluid h1 { + font: 24px/26px "RobotoLight"; + color: #fff; + margin: 10px 0; } + .toast .container-fluid h2 { + font: 18px/20px "RobotoLight"; + margin-bottom: 10px; } + +.break-line { + word-break: break-all; } + +.interviewer { + font-size: 14px; + line-height: 16px; + font-weight: normal; + color: #3f3f3f; + padding-left: 5px; + white-space: nowrap; } + .interviewer:before { + display: inline-block; + content: ""; + position: relative; + top: 2px; + margin-right: 3px; + width: 11px; + height: 14px; + background: transparent url("../img/icon-tablet.png") no-repeat; + opacity: 0.3; + filter: alpha(opacity=30); + background-size: 11px 14px; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + .interviewer:before { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/icon-tablet2k.png"); + background-size: 11px 14px; } } + +a.interviewer:hover, a.interviewer:focus, a.interviewer:active, a.supervisor:hover, a.supervisor:focus, a.supervisor:active { + color: #2a81cb; + text-decoration: none; } + +.supervisor { + color: #3f3f3f !important; + font-weight: normal; + padding-left: 5px; + white-space: nowrap; } + .supervisor:before { + display: inline-block; + content: ""; + position: relative; + top: 2px; + margin-right: 3px; + width: 11px; + height: 14px; + background: transparent url("../img/icon-supervisor.png") no-repeat; + background-size: 11px 14px; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + .supervisor:before { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/icon-supervisor2k.png"); + background-size: 11px 14px; } } + +.screen-small-resolution { + display: none; } + +.gray-text { + color: #a6a8a9; + font-weight: normal; + font-style: italic; } + +.separate-line { + border-top: 3px solid #dbdfe2; + margin-left: -25px !important; + padding-bottom: 20px; } + +#interviewChart { + width: 100%; + height: 600px; + padding: 10px; } + +table.jqplot-table-legend { + width: 90%; + border: none; } + +td.jqplot-table-legend.jqplot-table-legend-swatch.jqplot-seriesToggle { + width: 20px; } + +div.jqplot-table-legend-swatch-outline { + border: none; } + +.jqplot-table-legend-swatch { + border-width: 10px; } + +.block-filter .logo-wrapper { + max-width: 300px; + max-height: 300px; } + .block-filter .logo-wrapper .logo { + display: block; + max-width: 100%; + height: auto; } + +figcaption { + font-weight: bold; + margin-bottom: 2px; + font-size: 14px; + line-height: 16px; } + +main.hidden.display-block { + display: block !important; } + +.download-report-as { + font: 13px/15px "TrebuchetMSBold"; + text-align: right; + clear: both; } + +.pointer { + cursor: pointer; } + +.short-row { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; } + +.add-transition, .foldback-button, .humburger-foldback-button, .btn-default.btn-post-comment, .input-group .input-group-btn .btn.btn-post-comment, .btn-plus:before, .btn-plus:after, .btn-strips span, .btn-strips:before, .btn-strips:after, .get-interviewer-app, .navbar .navbar-collapse li.active > a, .navbar .navbar-collapse li > a, .navbar .navbar-collapse li .dropdown-menu li a, .table tr, .table tbody tr td a, .table tfoot tr td a, .table tfoot tr th a, .dataTables_wrapper .dataTables_filter label input { + -webkit-transition: all 0.2s linear 0s; + -moz-transition: all 0.2s linear 0s; + -ms-transition: all 0.2s linear 0s; + -o-transition: all 0.2s linear 0s; + transition: all 0.2s linear 0s; } + +@media (max-width: 1210px) { + html body { + padding-top: 70px; } + + html body.wide-navbar { + padding-top: 60px; } + + .container, .container-fluid { + padding: 0 20px 0 35px; } + + .wide-navbar .view-mode { + top: 60px; } + + .view-mode { + top: 70px; } + + .main-information-no-filter { + padding: 0 10px; } + + .page-header .neighbor-block-to-search { + padding-right: 255px; } } +@media (max-width: 880px) { + html body { + padding-top: 60px; } + + main .container { + width: auto; + margin-left: auto; + margin-right: auto; } + + .view-mode { + top: 60px; } + + .interviews-large-screen { + display: none; } + + .page-header .neighbor-block-to-search { + padding-right: 0; } + + .screen-small-resolution { + display: block; + font: 14px/16px Arial, sans-serif; } + .screen-small-resolution .row-unit { + padding: 20px 15px; + background-color: #f8f9f9; + border-bottom: 2px solid #dbdfe2; } + .screen-small-resolution .row-unit.selected { + background-color: #e5e9e9; } + .screen-small-resolution .row-unit:last-of-type { + border-bottom: none; } + .screen-small-resolution .header-unit { + position: relative; + margin-bottom: 15px; } + .screen-small-resolution .header-unit input.checkbox-filter ~ label .tick { + left: -5px; } + .screen-small-resolution .header-unit label { + padding-right: 60px; } + .screen-small-resolution .header-unit .title-row { + font-weight: normal; + font-size: 18px; + line-height: 20px; + display: block; + margin-bottom: 5px; } + .screen-small-resolution .header-unit .comment-icon { + position: absolute; + top: 0; + right: 50px; } + .screen-small-resolution ul { + margin-bottom: 15px; } + .screen-small-resolution ul li { + margin-bottom: 5px; } + .screen-small-resolution .table-min-wrapper .table-min, .screen-small-resolution .table-min-wrapper .table-min .table-row .table-td { + width: 50%; + margin-right: 3px; } + .screen-small-resolution .table-min-wrapper .table-min:nth-child(2), .screen-small-resolution .table-min-wrapper .table-min .table-row .table-td:nth-child(2) { + margin-right: 0; } + .screen-small-resolution .table-min-wrapper { + display: flex; + flex-direction: row; + align-items: stretch; } + .screen-small-resolution .table-min-wrapper .table-min { + justify-content: space-between; + display: flex; + flex-direction: column; } + .screen-small-resolution .table-min-wrapper .table-min .table-row { + min-height: 45px; + display: flex; } + .screen-small-resolution .table-min-wrapper .table-min .table-row .table-td { + padding: 10px 20px; + line-height: 24px; + background-color: #edeff0; } + .screen-small-resolution .table-min-wrapper .table-min .table-row .table-td:hover a, .screen-small-resolution .table-min-wrapper .table-min .table-row .table-td:active a, .screen-small-resolution .table-min-wrapper .table-min .table-row .table-td:focus a { + color: #2a81cb; } + .screen-small-resolution .table-min-wrapper .table-min .table-row .table-td a { + color: #3f3f3f; + text-decoration: none; } + .screen-small-resolution .table-min-wrapper .table-min .table-row .table-td .flag { + padding-left: 25px; } + .screen-small-resolution .table-min-wrapper .table-min .table-row .table-td.table-header { + padding-left: 0; + color: #a6a8a9; + font: 11px/13px "TrebuchetMSBold"; + letter-spacing: 1px; + text-transform: uppercase; + background-color: transparent; } } +@media (max-width: 481px) { + .screen-small-resolution .table-min-wrapper { + flex-direction: column; } + .screen-small-resolution .table-min-wrapper .table-min { + width: 100%; } + .screen-small-resolution .header-unit .comment-icon { + right: 0; } + .screen-small-resolution .header-unit label { + padding-right: 30px; } + + .download-report-as { + text-align: left; + margin-left: 10px; } + + .breadcrumb li a, .breadcrumb > li + li:before { + padding: 0 2px; + font-size: 10px; + line-height: 12px; } + + .main-information-no-filter { + padding: 0 5px; } } +.reset-margin { + margin: 0 !important; } + +dl dt { + font-weight: normal; + font-family: "RobotoBold"; + float: left; + margin-right: 5px; } +dl dd:after { + display: block; + clear: both; + content: ""; } + +.warning-message { + font-family: "RobotoBold"; } + +.underlined-link { + text-decoration: underline; } + .underlined-link:hover, .underlined-link:focus, .underlined-link:active { + text-decoration: none; } + +.gray-text-row { + font-style: normal; + text-transform: uppercase; + font: 14px/16px "Trebuchet MS", Helvetica, sans-serif; + letter-spacing: 1px; + color: #a6a8a9; } + +.gray-action-unit { + color: #a6a8a9; } + .gray-action-unit:hover, .gray-action-unit:focus, .gray-action-unit:active { + color: #6b6b6b !important; } + +.green-action-unit { + color: #3ca21a; } + .green-action-unit:hover, .green-action-unit:focus, .green-action-unit:active { + color: #2c7613; } + +.action-block { + margin-top: 30px; } + +.always-visible-scroll { + overflow-y: scroll; } + +.padding-left-100 { + padding-left: 100px; } + +.fade-enter-active, .fade-leave-active { + transition: opacity 0.5s; } + +.fade-enter, .fade-leave-to { + opacity: 0; } + +.left-column #log-in { + text-align: left; } + +#import-log-in .form-group:first-of-type::before { + display: block; + content: ""; + width: 100%; + height: 1px; } + +img#placeholder { + max-width: 365px; + font-size: 0; + line-height: 0; + position: relative; + display: block; } + +.default-logo { + display: none; } + +.no-logo .default-logo { + display: block; + background: #fff url("../img/HQ-login-3_05.png") no-repeat; } +.no-logo #placeholder { + display: none; } + +.navbar .flex-row { + margin: 0 0 0 5px; + background-color: white; } +.navbar .help { + margin-top: 20px; + float: right; + padding: 5px 15px; + background-color: #ececec; + border-radius: 5px; + text-transform: uppercase; + font-size: 12px; + line-height: 14px; + letter-spacing: 0.5px; + -webkit-transition: all 0.5s linear 0s; + -moz-transition: all 0.5s linear 0s; + -ms-transition: all 0.5s linear 0s; + -o-transition: all 0.5s linear 0s; + transition: all 0.5s linear 0s; } + .navbar .help:hover, .navbar .help:focus { + background-color: #a6a8a9; } + +.retina.headquarter { + background: url("../img/headquarter_logo.png") no-repeat 0 0; + margin-bottom: 25px; + font-size: 0; + line-height: 0; } + @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { + .retina.headquarter { + /* on retina, use image that's scaled by 2 */ + background-image: url("../img/headquarter_logo-retina.png"); + background-size: 100% 100%; } } + +.interviewer-app { + display: none; + border-top: 3px solid #ececec; + padding-top: 30px; } + .interviewer-app label { + font-weight: normal; } + +@media (max-width: 880px) { + img#placeholder, .no-logo .default-logo { + display: none; } + + .retina.headquarter { + display: inline-block; } + + .navbar .retina-world-bank { + width: 135px; + height: 26.5px; } + + .interviewer-app { + display: block; } + + html body main .two-columns-form .log-in .form-group .form-control { + width: 100%; } } +.two-columns-form, .flex-row { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; } + +.form-inside { + min-height: 500px; } + +.two-columns-form { + width: 810px; + position: absolute; + top: 50%; + left: 50%; + margin-top: 0; + margin-bottom: 0; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + -o-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); } + .two-columns-form label { + font-weight: normal; } + .two-columns-form .left-column { + padding: 10px 40px 10px 0px; + text-align: center; } + .two-columns-form .left-column img { + margin-bottom: 25px; } + .two-columns-form .left-column p { + font-size: 17px; + line-height: 22px; + font-family: inherit; + color: #a6a8a9; + margin-bottom: 0; } + .two-columns-form .left-column p a { + color: #a6a8a9; + text-decoration: underline; } + .two-columns-form .left-column p a:hover, .two-columns-form .left-column p a:focus { + text-decoration: none; } + .two-columns-form .right-column { + padding: 10px 0 10px 40px; + border-left: 2px solid #dbdfe2; } + .two-columns-form .log-in .alert-danger p { + color: #e74924; } + .two-columns-form .log-in .form-group { + margin-bottom: 10px; } + .two-columns-form .log-in .form-group label { + font-size: 13px; + line-height: 15px; + font-family: inherit; + padding-top: 6px; + font-weight: normal; } + .two-columns-form .log-in .form-group label span { + color: #2a81cb; + font-family: "Lucida Console", Monaco, monospace; } + .two-columns-form .log-in .form-group .form-control { + width: 100%; + height: 42px; + max-width: 395px; + border-width: 2px; + border-color: #dbdfe2; } + .two-columns-form .log-in .form-group .form-control::-webkit-input-placeholder { + /* Chrome/Opera/Safari */ + font-style: italic; } + .two-columns-form .log-in .form-group .form-control::-moz-placeholder { + /* Firefox 19+ */ + font-style: italic; } + .two-columns-form .log-in .form-group .form-control:-ms-input-placeholder { + /* IE 10+ */ + font-style: italic; } + .two-columns-form .log-in .form-group .form-control:-moz-placeholder { + /* Firefox 18- */ + font-style: italic; } + +.centered-box-table { + display: table; + width: 100%; + height: 100%; } + .centered-box-table .centered-box-table-cell { + display: table-cell; + vertical-align: middle; } + +@media (max-width: 880px) { + html body main .flex-row, html body main .two-columns-form { + display: block; + margin-top: 30px; } + html body main .flex-row .right-column, html body main .flex-row .left-column, html body main .two-columns-form .right-column, html body main .two-columns-form .left-column { + padding: 10px 3%; + border: none; } + html body main .flex-row .log-in .form-group .form-control, html body main .two-columns-form .log-in .form-group .form-control { + width: 75%; + display: inline-block; } + html body main .two-columns-form { + width: auto; + position: relative; + top: 0; + left: 0; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); } + html body main .centered-box-table { + text-align: center; } } +.login { + height: 100%; } + .login main { + height: 100%; } + +.hq-apps-wrapper, .interviewer-app { + font-size: 14px; + line-height: 16px; + color: #6b6b6b; } + +.additional-info-block a { + color: #6b6b6b; + text-decoration: underline; } + .additional-info-block a:hover, .additional-info-block a:focus { + text-decoration: none; } + +@media only screen and (max-width: 800px) { + .two-columns-form { + margin-top: 30px; + width: auto; + position: relative; + top: 0; + left: 0; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); } } +@media (max-width: 880px) { + .log-in, main .two-columns-form .left-column p, .hq-apps-wrapper, .interviewer-app, .two-columns-form form .form-group { + text-align: left; + max-width: 350px; + margin: 0 auto; } } +.validation-summary-errors ul { + list-style-type: none; } + +.control-label.required:before { + content: '*'; + color: #DA4F49; + padding-right: 5px; } + +/*# sourceMappingURL=markup.css.map */ diff --git a/customer/en/portal/articles/2464651-registration-and-signing-in-/index.html b/customer/en/portal/articles/2464651-registration-and-signing-in-/index.html new file mode 100644 index 00000000..52c1c73f --- /dev/null +++ b/customer/en/portal/articles/2464651-registration-and-signing-in-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/registration-and-signing-in/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2464651/index.html b/customer/en/portal/articles/2464651/index.html new file mode 100644 index 00000000..52c1c73f --- /dev/null +++ b/customer/en/portal/articles/2464651/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/registration-and-signing-in/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2464762-questionnaire-designer-homepage/index.html b/customer/en/portal/articles/2464762-questionnaire-designer-homepage/index.html new file mode 100644 index 00000000..4d0c26cc --- /dev/null +++ b/customer/en/portal/articles/2464762-questionnaire-designer-homepage/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/questionnaire-designer-homepage/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2464762/index.html b/customer/en/portal/articles/2464762/index.html new file mode 100644 index 00000000..4d0c26cc --- /dev/null +++ b/customer/en/portal/articles/2464762/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/questionnaire-designer-homepage/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2465740-questionnaire-edit-screen/index.html b/customer/en/portal/articles/2465740-questionnaire-edit-screen/index.html new file mode 100644 index 00000000..7c5da2f7 --- /dev/null +++ b/customer/en/portal/articles/2465740-questionnaire-edit-screen/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/questionnaire-edit-screen/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2465740/index.html b/customer/en/portal/articles/2465740/index.html new file mode 100644 index 00000000..7c5da2f7 --- /dev/null +++ b/customer/en/portal/articles/2465740/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/questionnaire-edit-screen/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2465868-panel-of-advanced-instruments/index.html b/customer/en/portal/articles/2465868-panel-of-advanced-instruments/index.html new file mode 100644 index 00000000..c8a12c0d --- /dev/null +++ b/customer/en/portal/articles/2465868-panel-of-advanced-instruments/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/panel-of-advanced-instruments/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2465868/index.html b/customer/en/portal/articles/2465868/index.html new file mode 100644 index 00000000..c8a12c0d --- /dev/null +++ b/customer/en/portal/articles/2465868/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/panel-of-advanced-instruments/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2465929-settings/index.html b/customer/en/portal/articles/2465929-settings/index.html new file mode 100644 index 00000000..f6563768 --- /dev/null +++ b/customer/en/portal/articles/2465929-settings/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/settings/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2465929/index.html b/customer/en/portal/articles/2465929/index.html new file mode 100644 index 00000000..f6563768 --- /dev/null +++ b/customer/en/portal/articles/2465929/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/settings/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2466057-recent-changes-to-the-questionnaire/index.html b/customer/en/portal/articles/2466057-recent-changes-to-the-questionnaire/index.html new file mode 100644 index 00000000..21b6df32 --- /dev/null +++ b/customer/en/portal/articles/2466057-recent-changes-to-the-questionnaire/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/recent-changes-to-the-questionnaire/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2466057/index.html b/customer/en/portal/articles/2466057/index.html new file mode 100644 index 00000000..21b6df32 --- /dev/null +++ b/customer/en/portal/articles/2466057/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/recent-changes-to-the-questionnaire/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2466061-compile/index.html b/customer/en/portal/articles/2466061-compile/index.html new file mode 100644 index 00000000..3b09bfc7 --- /dev/null +++ b/customer/en/portal/articles/2466061-compile/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/compile/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2466061/index.html b/customer/en/portal/articles/2466061/index.html new file mode 100644 index 00000000..3b09bfc7 --- /dev/null +++ b/customer/en/portal/articles/2466061/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/compile/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2466173-questionnaire-attachments/index.html b/customer/en/portal/articles/2466173-questionnaire-attachments/index.html new file mode 100644 index 00000000..33459b81 --- /dev/null +++ b/customer/en/portal/articles/2466173-questionnaire-attachments/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/questionnaire-attachments/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2466173/index.html b/customer/en/portal/articles/2466173/index.html new file mode 100644 index 00000000..33459b81 --- /dev/null +++ b/customer/en/portal/articles/2466173/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/questionnaire-attachments/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2466213-macros/index.html b/customer/en/portal/articles/2466213-macros/index.html new file mode 100644 index 00000000..e871015c --- /dev/null +++ b/customer/en/portal/articles/2466213-macros/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/macros/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2466213/index.html b/customer/en/portal/articles/2466213/index.html new file mode 100644 index 00000000..e871015c --- /dev/null +++ b/customer/en/portal/articles/2466213/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/macros/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2466827-changing-the-interface-language/index.html b/customer/en/portal/articles/2466827-changing-the-interface-language/index.html new file mode 100644 index 00000000..d867cea3 --- /dev/null +++ b/customer/en/portal/articles/2466827-changing-the-interface-language/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/changing-the-interface-language/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2466827/index.html b/customer/en/portal/articles/2466827/index.html new file mode 100644 index 00000000..d867cea3 --- /dev/null +++ b/customer/en/portal/articles/2466827/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/changing-the-interface-language/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2466966-lookup-tables/index.html b/customer/en/portal/articles/2466966-lookup-tables/index.html new file mode 100644 index 00000000..0974b068 --- /dev/null +++ b/customer/en/portal/articles/2466966-lookup-tables/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/lookup-tables/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2466966/index.html b/customer/en/portal/articles/2466966/index.html new file mode 100644 index 00000000..0974b068 --- /dev/null +++ b/customer/en/portal/articles/2466966/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/lookup-tables/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2467041-questionnaire-components-/index.html b/customer/en/portal/articles/2467041-questionnaire-components-/index.html new file mode 100644 index 00000000..6e965152 --- /dev/null +++ b/customer/en/portal/articles/2467041-questionnaire-components-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/questionnaire-components-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2467041/index.html b/customer/en/portal/articles/2467041/index.html new file mode 100644 index 00000000..6e965152 --- /dev/null +++ b/customer/en/portal/articles/2467041/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/questionnaire-components-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2467280-create-and-modify-components-/index.html b/customer/en/portal/articles/2467280-create-and-modify-components-/index.html new file mode 100644 index 00000000..4620fd21 --- /dev/null +++ b/customer/en/portal/articles/2467280-create-and-modify-components-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/create-and-modify-components-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2467280/index.html b/customer/en/portal/articles/2467280/index.html new file mode 100644 index 00000000..4620fd21 --- /dev/null +++ b/customer/en/portal/articles/2467280/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/create-and-modify-components-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2467364-variables/index.html b/customer/en/portal/articles/2467364-variables/index.html new file mode 100644 index 00000000..7519eb8b --- /dev/null +++ b/customer/en/portal/articles/2467364-variables/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/variables/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2467364/index.html b/customer/en/portal/articles/2467364/index.html new file mode 100644 index 00000000..7519eb8b --- /dev/null +++ b/customer/en/portal/articles/2467364/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/variables/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2467518-general-component-properties/index.html b/customer/en/portal/articles/2467518-general-component-properties/index.html new file mode 100644 index 00000000..043284fd --- /dev/null +++ b/customer/en/portal/articles/2467518-general-component-properties/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/general-component-properties/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2467518/index.html b/customer/en/portal/articles/2467518/index.html new file mode 100644 index 00000000..043284fd --- /dev/null +++ b/customer/en/portal/articles/2467518/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/general-component-properties/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2468340-question-scope-/index.html b/customer/en/portal/articles/2468340-question-scope-/index.html new file mode 100644 index 00000000..e4435b7a --- /dev/null +++ b/customer/en/portal/articles/2468340-question-scope-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/question-scope-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2468340/index.html b/customer/en/portal/articles/2468340/index.html new file mode 100644 index 00000000..e4435b7a --- /dev/null +++ b/customer/en/portal/articles/2468340/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/question-scope-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2468455-text-question/index.html b/customer/en/portal/articles/2468455-text-question/index.html new file mode 100644 index 00000000..8d7dd9ea --- /dev/null +++ b/customer/en/portal/articles/2468455-text-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/text-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2468455/index.html b/customer/en/portal/articles/2468455/index.html new file mode 100644 index 00000000..8d7dd9ea --- /dev/null +++ b/customer/en/portal/articles/2468455/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/text-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2468719-numeric-question/index.html b/customer/en/portal/articles/2468719-numeric-question/index.html new file mode 100644 index 00000000..b9010111 --- /dev/null +++ b/customer/en/portal/articles/2468719-numeric-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/numeric-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2468719/index.html b/customer/en/portal/articles/2468719/index.html new file mode 100644 index 00000000..b9010111 --- /dev/null +++ b/customer/en/portal/articles/2468719/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/numeric-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2469077-date-question/index.html b/customer/en/portal/articles/2469077-date-question/index.html new file mode 100644 index 00000000..f424c0a7 --- /dev/null +++ b/customer/en/portal/articles/2469077-date-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/date-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2469077/index.html b/customer/en/portal/articles/2469077/index.html new file mode 100644 index 00000000..f424c0a7 --- /dev/null +++ b/customer/en/portal/articles/2469077/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/date-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2469082-list-question/index.html b/customer/en/portal/articles/2469082-list-question/index.html new file mode 100644 index 00000000..47b025c1 --- /dev/null +++ b/customer/en/portal/articles/2469082-list-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/list-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2469082/index.html b/customer/en/portal/articles/2469082/index.html new file mode 100644 index 00000000..47b025c1 --- /dev/null +++ b/customer/en/portal/articles/2469082/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/list-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2469100-gps-question/index.html b/customer/en/portal/articles/2469100-gps-question/index.html new file mode 100644 index 00000000..97fc4483 --- /dev/null +++ b/customer/en/portal/articles/2469100-gps-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/gps-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2469100/index.html b/customer/en/portal/articles/2469100/index.html new file mode 100644 index 00000000..97fc4483 --- /dev/null +++ b/customer/en/portal/articles/2469100/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/gps-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2469108-barcode-question/index.html b/customer/en/portal/articles/2469108-barcode-question/index.html new file mode 100644 index 00000000..f67c3cd5 --- /dev/null +++ b/customer/en/portal/articles/2469108-barcode-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/barcode-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2469108/index.html b/customer/en/portal/articles/2469108/index.html new file mode 100644 index 00000000..f67c3cd5 --- /dev/null +++ b/customer/en/portal/articles/2469108/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/barcode-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2469927-picture-question/index.html b/customer/en/portal/articles/2469927-picture-question/index.html new file mode 100644 index 00000000..18365817 --- /dev/null +++ b/customer/en/portal/articles/2469927-picture-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/picture-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2469927/index.html b/customer/en/portal/articles/2469927/index.html new file mode 100644 index 00000000..18365817 --- /dev/null +++ b/customer/en/portal/articles/2469927/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/picture-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2470037-categorical-single-select-question/index.html b/customer/en/portal/articles/2470037-categorical-single-select-question/index.html new file mode 100644 index 00000000..db02b68b --- /dev/null +++ b/customer/en/portal/articles/2470037-categorical-single-select-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/categorical-single-select-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2470037/index.html b/customer/en/portal/articles/2470037/index.html new file mode 100644 index 00000000..db02b68b --- /dev/null +++ b/customer/en/portal/articles/2470037/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/categorical-single-select-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2471008-static-text/index.html b/customer/en/portal/articles/2471008-static-text/index.html new file mode 100644 index 00000000..889e97e5 --- /dev/null +++ b/customer/en/portal/articles/2471008-static-text/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/static-text/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2471008/index.html b/customer/en/portal/articles/2471008/index.html new file mode 100644 index 00000000..889e97e5 --- /dev/null +++ b/customer/en/portal/articles/2471008/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/static-text/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2471763-categorical-multi-select-question/index.html b/customer/en/portal/articles/2471763-categorical-multi-select-question/index.html new file mode 100644 index 00000000..4bb99c19 --- /dev/null +++ b/customer/en/portal/articles/2471763-categorical-multi-select-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/categorical-multi-select-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2471763/index.html b/customer/en/portal/articles/2471763/index.html new file mode 100644 index 00000000..4bb99c19 --- /dev/null +++ b/customer/en/portal/articles/2471763/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/categorical-multi-select-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2472543-rosters/index.html b/customer/en/portal/articles/2472543-rosters/index.html new file mode 100644 index 00000000..d7f60516 --- /dev/null +++ b/customer/en/portal/articles/2472543-rosters/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/rosters/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2472543/index.html b/customer/en/portal/articles/2472543/index.html new file mode 100644 index 00000000..d7f60516 --- /dev/null +++ b/customer/en/portal/articles/2472543/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/rosters/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2473782-formatting-text/index.html b/customer/en/portal/articles/2473782-formatting-text/index.html new file mode 100644 index 00000000..13477a8b --- /dev/null +++ b/customer/en/portal/articles/2473782-formatting-text/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/formatting-text/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2473782/index.html b/customer/en/portal/articles/2473782/index.html new file mode 100644 index 00000000..13477a8b --- /dev/null +++ b/customer/en/portal/articles/2473782/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/formatting-text/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2473898-pdf-export-/index.html b/customer/en/portal/articles/2473898-pdf-export-/index.html new file mode 100644 index 00000000..539cdf1a --- /dev/null +++ b/customer/en/portal/articles/2473898-pdf-export-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/pdf-export-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2473898/index.html b/customer/en/portal/articles/2473898/index.html new file mode 100644 index 00000000..539cdf1a --- /dev/null +++ b/customer/en/portal/articles/2473898/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/pdf-export-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2475216-download-and-install-the-interviewer-application/index.html b/customer/en/portal/articles/2475216-download-and-install-the-interviewer-application/index.html new file mode 100644 index 00000000..e6431deb --- /dev/null +++ b/customer/en/portal/articles/2475216-download-and-install-the-interviewer-application/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/download-and-install-the-interviewer-application/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2475216/index.html b/customer/en/portal/articles/2475216/index.html new file mode 100644 index 00000000..e6431deb --- /dev/null +++ b/customer/en/portal/articles/2475216/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/download-and-install-the-interviewer-application/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2475783-synchronization-completing-the-interview/index.html b/customer/en/portal/articles/2475783-synchronization-completing-the-interview/index.html new file mode 100644 index 00000000..faed3d03 --- /dev/null +++ b/customer/en/portal/articles/2475783-synchronization-completing-the-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/synchronization-completing-the-interview/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2475783/index.html b/customer/en/portal/articles/2475783/index.html new file mode 100644 index 00000000..faed3d03 --- /dev/null +++ b/customer/en/portal/articles/2475783/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/synchronization-completing-the-interview/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2478506-uploading-many-assignments-at-a-time/index.html b/customer/en/portal/articles/2478506-uploading-many-assignments-at-a-time/index.html new file mode 100644 index 00000000..4308b331 --- /dev/null +++ b/customer/en/portal/articles/2478506-uploading-many-assignments-at-a-time/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/uploading-many-assignments-at-a-time/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2478506/index.html b/customer/en/portal/articles/2478506/index.html new file mode 100644 index 00000000..4308b331 --- /dev/null +++ b/customer/en/portal/articles/2478506/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/uploading-many-assignments-at-a-time/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2479498-distributing-assignments-to-interviewers/index.html b/customer/en/portal/articles/2479498-distributing-assignments-to-interviewers/index.html new file mode 100644 index 00000000..6e4cbb37 --- /dev/null +++ b/customer/en/portal/articles/2479498-distributing-assignments-to-interviewers/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/distributing-assignments-to-interviewers/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2479498/index.html b/customer/en/portal/articles/2479498/index.html new file mode 100644 index 00000000..6e4cbb37 --- /dev/null +++ b/customer/en/portal/articles/2479498/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/distributing-assignments-to-interviewers/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2479545-supervisor-browsing-the-completed-interview/index.html b/customer/en/portal/articles/2479545-supervisor-browsing-the-completed-interview/index.html new file mode 100644 index 00000000..cb245763 --- /dev/null +++ b/customer/en/portal/articles/2479545-supervisor-browsing-the-completed-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/supervisor-browsing-the-completed-interview/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2479545/index.html b/customer/en/portal/articles/2479545/index.html new file mode 100644 index 00000000..cb245763 --- /dev/null +++ b/customer/en/portal/articles/2479545/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/supervisor-browsing-the-completed-interview/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2481286-components-of-the-headquarters-software/index.html b/customer/en/portal/articles/2481286-components-of-the-headquarters-software/index.html new file mode 100644 index 00000000..22a14f8e --- /dev/null +++ b/customer/en/portal/articles/2481286-components-of-the-headquarters-software/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/components-of-the-headquarters-software/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2481286/index.html b/customer/en/portal/articles/2481286/index.html new file mode 100644 index 00000000..22a14f8e --- /dev/null +++ b/customer/en/portal/articles/2481286/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/components-of-the-headquarters-software/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2481526-survey-workflow/index.html b/customer/en/portal/articles/2481526-survey-workflow/index.html new file mode 100644 index 00000000..d72e9009 --- /dev/null +++ b/customer/en/portal/articles/2481526-survey-workflow/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/survey-workflow/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2481526/index.html b/customer/en/portal/articles/2481526/index.html new file mode 100644 index 00000000..d72e9009 --- /dev/null +++ b/customer/en/portal/articles/2481526/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/survey-workflow/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2481544-reports-tab-track-the-overall-progress-of-the-survey/index.html b/customer/en/portal/articles/2481544-reports-tab-track-the-overall-progress-of-the-survey/index.html new file mode 100644 index 00000000..1817aa3f --- /dev/null +++ b/customer/en/portal/articles/2481544-reports-tab-track-the-overall-progress-of-the-survey/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2481544/index.html b/customer/en/portal/articles/2481544/index.html new file mode 100644 index 00000000..1817aa3f --- /dev/null +++ b/customer/en/portal/articles/2481544/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2482221-interview-tab-how-to-find-review-and-delete-survey-cases-/index.html b/customer/en/portal/articles/2482221-interview-tab-how-to-find-review-and-delete-survey-cases-/index.html new file mode 100644 index 00000000..13187ce2 --- /dev/null +++ b/customer/en/portal/articles/2482221-interview-tab-how-to-find-review-and-delete-survey-cases-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2482221/index.html b/customer/en/portal/articles/2482221/index.html new file mode 100644 index 00000000..13187ce2 --- /dev/null +++ b/customer/en/portal/articles/2482221/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2482233-teams-and-roles-tab-creating-user-accounts-/index.html b/customer/en/portal/articles/2482233-teams-and-roles-tab-creating-user-accounts-/index.html new file mode 100644 index 00000000..ed96edbb --- /dev/null +++ b/customer/en/portal/articles/2482233-teams-and-roles-tab-creating-user-accounts-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2482233/index.html b/customer/en/portal/articles/2482233/index.html new file mode 100644 index 00000000..ed96edbb --- /dev/null +++ b/customer/en/portal/articles/2482233/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2483438-batch-user-upload/index.html b/customer/en/portal/articles/2483438-batch-user-upload/index.html new file mode 100644 index 00000000..1d9ec012 --- /dev/null +++ b/customer/en/portal/articles/2483438-batch-user-upload/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/batch-user-upload/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2483438/index.html b/customer/en/portal/articles/2483438/index.html new file mode 100644 index 00000000..1d9ec012 --- /dev/null +++ b/customer/en/portal/articles/2483438/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/batch-user-upload/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2494108-data-export-tab/index.html b/customer/en/portal/articles/2494108-data-export-tab/index.html new file mode 100644 index 00000000..9a11b537 --- /dev/null +++ b/customer/en/portal/articles/2494108-data-export-tab/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-tab/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2494108/index.html b/customer/en/portal/articles/2494108/index.html new file mode 100644 index 00000000..9a11b537 --- /dev/null +++ b/customer/en/portal/articles/2494108/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-tab/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2494346-components-of-the-supervisor-software/index.html b/customer/en/portal/articles/2494346-components-of-the-supervisor-software/index.html new file mode 100644 index 00000000..3ff40103 --- /dev/null +++ b/customer/en/portal/articles/2494346-components-of-the-supervisor-software/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/components-of-the-supervisor-software/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2494346/index.html b/customer/en/portal/articles/2494346/index.html new file mode 100644 index 00000000..3ff40103 --- /dev/null +++ b/customer/en/portal/articles/2494346/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/components-of-the-supervisor-software/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2494367-find-an-interview/index.html b/customer/en/portal/articles/2494367-find-an-interview/index.html new file mode 100644 index 00000000..7e2d3bbe --- /dev/null +++ b/customer/en/portal/articles/2494367-find-an-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/find-an-interview/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2494367/index.html b/customer/en/portal/articles/2494367/index.html new file mode 100644 index 00000000..7e2d3bbe --- /dev/null +++ b/customer/en/portal/articles/2494367/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/find-an-interview/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2495547-review-an-interview/index.html b/customer/en/portal/articles/2495547-review-an-interview/index.html new file mode 100644 index 00000000..675b63ff --- /dev/null +++ b/customer/en/portal/articles/2495547-review-an-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/review-an-interview/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2495547/index.html b/customer/en/portal/articles/2495547/index.html new file mode 100644 index 00000000..675b63ff --- /dev/null +++ b/customer/en/portal/articles/2495547/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/review-an-interview/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2495621-see-the-overall-progress-of-data-collection/index.html b/customer/en/portal/articles/2495621-see-the-overall-progress-of-data-collection/index.html new file mode 100644 index 00000000..edd841f9 --- /dev/null +++ b/customer/en/portal/articles/2495621-see-the-overall-progress-of-data-collection/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/see-the-overall-progress-of-data-collection/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2495621/index.html b/customer/en/portal/articles/2495621/index.html new file mode 100644 index 00000000..edd841f9 --- /dev/null +++ b/customer/en/portal/articles/2495621/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/see-the-overall-progress-of-data-collection/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2495731-manage-interviewer-accounts/index.html b/customer/en/portal/articles/2495731-manage-interviewer-accounts/index.html new file mode 100644 index 00000000..7cad9d15 --- /dev/null +++ b/customer/en/portal/articles/2495731-manage-interviewer-accounts/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/manage-interviewer-accounts/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2495731/index.html b/customer/en/portal/articles/2495731/index.html new file mode 100644 index 00000000..7cad9d15 --- /dev/null +++ b/customer/en/portal/articles/2495731/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/manage-interviewer-accounts/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2497002-interface-localization/index.html b/customer/en/portal/articles/2497002-interface-localization/index.html new file mode 100644 index 00000000..760cfd02 --- /dev/null +++ b/customer/en/portal/articles/2497002-interface-localization/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/interface-localization/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2497002/index.html b/customer/en/portal/articles/2497002/index.html new file mode 100644 index 00000000..760cfd02 --- /dev/null +++ b/customer/en/portal/articles/2497002/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/interface-localization/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2497110-questionnaire-interface-answering-questions/index.html b/customer/en/portal/articles/2497110-questionnaire-interface-answering-questions/index.html new file mode 100644 index 00000000..6de6b8bf --- /dev/null +++ b/customer/en/portal/articles/2497110-questionnaire-interface-answering-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/questionnaire-interface-answering-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2497110/index.html b/customer/en/portal/articles/2497110/index.html new file mode 100644 index 00000000..6de6b8bf --- /dev/null +++ b/customer/en/portal/articles/2497110/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/questionnaire-interface-answering-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2497877-answering-all-question-types/index.html b/customer/en/portal/articles/2497877-answering-all-question-types/index.html new file mode 100644 index 00000000..5a012f68 --- /dev/null +++ b/customer/en/portal/articles/2497877-answering-all-question-types/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/answering-all-question-types/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2497877/index.html b/customer/en/portal/articles/2497877/index.html new file mode 100644 index 00000000..5a012f68 --- /dev/null +++ b/customer/en/portal/articles/2497877/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/answering-all-question-types/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2498059-comments/index.html b/customer/en/portal/articles/2498059-comments/index.html new file mode 100644 index 00000000..5aea4a45 --- /dev/null +++ b/customer/en/portal/articles/2498059-comments/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/comments/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2498059/index.html b/customer/en/portal/articles/2498059/index.html new file mode 100644 index 00000000..5aea4a45 --- /dev/null +++ b/customer/en/portal/articles/2498059/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/comments/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2498177-moving-around-the-questionnaire-/index.html b/customer/en/portal/articles/2498177-moving-around-the-questionnaire-/index.html new file mode 100644 index 00000000..85bdfdf5 --- /dev/null +++ b/customer/en/portal/articles/2498177-moving-around-the-questionnaire-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/moving-around-the-questionnaire-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2498177/index.html b/customer/en/portal/articles/2498177/index.html new file mode 100644 index 00000000..85bdfdf5 --- /dev/null +++ b/customer/en/portal/articles/2498177/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/moving-around-the-questionnaire-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2498212-quality-control-marking-interviews-as-complete-/index.html b/customer/en/portal/articles/2498212-quality-control-marking-interviews-as-complete-/index.html new file mode 100644 index 00000000..84fd51e3 --- /dev/null +++ b/customer/en/portal/articles/2498212-quality-control-marking-interviews-as-complete-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/quality-control-marking-interviews-as-complete-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2498212/index.html b/customer/en/portal/articles/2498212/index.html new file mode 100644 index 00000000..84fd51e3 --- /dev/null +++ b/customer/en/portal/articles/2498212/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/quality-control-marking-interviews-as-complete-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2498915-synchronization/index.html b/customer/en/portal/articles/2498915-synchronization/index.html new file mode 100644 index 00000000..51efaee3 --- /dev/null +++ b/customer/en/portal/articles/2498915-synchronization/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/synchronization/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2498915/index.html b/customer/en/portal/articles/2498915/index.html new file mode 100644 index 00000000..51efaee3 --- /dev/null +++ b/customer/en/portal/articles/2498915/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/synchronization/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2498928-troubleshooting/index.html b/customer/en/portal/articles/2498928-troubleshooting/index.html new file mode 100644 index 00000000..d5bd380f --- /dev/null +++ b/customer/en/portal/articles/2498928-troubleshooting/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/troubleshooting/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2498928/index.html b/customer/en/portal/articles/2498928/index.html new file mode 100644 index 00000000..d5bd380f --- /dev/null +++ b/customer/en/portal/articles/2498928/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/troubleshooting/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2502601-headquarters-user-browsing-the-completed-interview/index.html b/customer/en/portal/articles/2502601-headquarters-user-browsing-the-completed-interview/index.html new file mode 100644 index 00000000..30e630f7 --- /dev/null +++ b/customer/en/portal/articles/2502601-headquarters-user-browsing-the-completed-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/headquarters-user-browsing-the-completed-interview/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2502601/index.html b/customer/en/portal/articles/2502601/index.html new file mode 100644 index 00000000..30e630f7 --- /dev/null +++ b/customer/en/portal/articles/2502601/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/headquarters-user-browsing-the-completed-interview/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2505348-testing-your-questionnaires-using-the-tester-application/index.html b/customer/en/portal/articles/2505348-testing-your-questionnaires-using-the-tester-application/index.html new file mode 100644 index 00000000..6d4a3837 --- /dev/null +++ b/customer/en/portal/articles/2505348-testing-your-questionnaires-using-the-tester-application/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/testing/testing-your-questionnaires-using-the-tester-application/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2505348/index.html b/customer/en/portal/articles/2505348/index.html new file mode 100644 index 00000000..6d4a3837 --- /dev/null +++ b/customer/en/portal/articles/2505348/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/testing/testing-your-questionnaires-using-the-tester-application/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2505822-what-tablets-should-i-buy-/index.html b/customer/en/portal/articles/2505822-what-tablets-should-i-buy-/index.html new file mode 100644 index 00000000..80a75710 --- /dev/null +++ b/customer/en/portal/articles/2505822-what-tablets-should-i-buy-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-tablets-should-i-buy-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2505822/index.html b/customer/en/portal/articles/2505822/index.html new file mode 100644 index 00000000..80a75710 --- /dev/null +++ b/customer/en/portal/articles/2505822/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-tablets-should-i-buy-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2507726-how-much-does-survey-solutions-cost-/index.html b/customer/en/portal/articles/2507726-how-much-does-survey-solutions-cost-/index.html new file mode 100644 index 00000000..369c5ab1 --- /dev/null +++ b/customer/en/portal/articles/2507726-how-much-does-survey-solutions-cost-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-much-does-survey-solutions-cost-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2507726/index.html b/customer/en/portal/articles/2507726/index.html new file mode 100644 index 00000000..369c5ab1 --- /dev/null +++ b/customer/en/portal/articles/2507726/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-much-does-survey-solutions-cost-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2507731-how-can-i-try-out-survey-solutions-/index.html b/customer/en/portal/articles/2507731-how-can-i-try-out-survey-solutions-/index.html new file mode 100644 index 00000000..247e8a7b --- /dev/null +++ b/customer/en/portal/articles/2507731-how-can-i-try-out-survey-solutions-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-can-i-try-out-survey-solutions-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2507731/index.html b/customer/en/portal/articles/2507731/index.html new file mode 100644 index 00000000..247e8a7b --- /dev/null +++ b/customer/en/portal/articles/2507731/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-can-i-try-out-survey-solutions-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2531232-data-types/index.html b/customer/en/portal/articles/2531232-data-types/index.html new file mode 100644 index 00000000..f412699c --- /dev/null +++ b/customer/en/portal/articles/2531232-data-types/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/data-types/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2531232/index.html b/customer/en/portal/articles/2531232/index.html new file mode 100644 index 00000000..f412699c --- /dev/null +++ b/customer/en/portal/articles/2531232/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/data-types/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2531548-dealing-with-exceptions/index.html b/customer/en/portal/articles/2531548-dealing-with-exceptions/index.html new file mode 100644 index 00000000..385fa699 --- /dev/null +++ b/customer/en/portal/articles/2531548-dealing-with-exceptions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/dealing-with-exceptions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2531548/index.html b/customer/en/portal/articles/2531548/index.html new file mode 100644 index 00000000..385fa699 --- /dev/null +++ b/customer/en/portal/articles/2531548/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/dealing-with-exceptions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2537453-syntax-guide-operators/index.html b/customer/en/portal/articles/2537453-syntax-guide-operators/index.html new file mode 100644 index 00000000..d1733fe0 --- /dev/null +++ b/customer/en/portal/articles/2537453-syntax-guide-operators/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/syntax-guide-operators/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2537453/index.html b/customer/en/portal/articles/2537453/index.html new file mode 100644 index 00000000..d1733fe0 --- /dev/null +++ b/customer/en/portal/articles/2537453/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/syntax-guide-operators/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2539305-syntax-guide-system-generated-variables/index.html b/customer/en/portal/articles/2539305-syntax-guide-system-generated-variables/index.html new file mode 100644 index 00000000..f1e4cc2f --- /dev/null +++ b/customer/en/portal/articles/2539305-syntax-guide-system-generated-variables/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/syntax-guide-system-generated-variables/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2539305/index.html b/customer/en/portal/articles/2539305/index.html new file mode 100644 index 00000000..f1e4cc2f --- /dev/null +++ b/customer/en/portal/articles/2539305/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/syntax-guide-system-generated-variables/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2541274-data-export-files-/index.html b/customer/en/portal/articles/2541274-data-export-files-/index.html new file mode 100644 index 00000000..66c411b5 --- /dev/null +++ b/customer/en/portal/articles/2541274-data-export-files-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-files-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2541274/index.html b/customer/en/portal/articles/2541274/index.html new file mode 100644 index 00000000..66c411b5 --- /dev/null +++ b/customer/en/portal/articles/2541274/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-files-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2542376-syntax-guide-numeric-questions/index.html b/customer/en/portal/articles/2542376-syntax-guide-numeric-questions/index.html new file mode 100644 index 00000000..2252e2bc --- /dev/null +++ b/customer/en/portal/articles/2542376-syntax-guide-numeric-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-numeric-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2542376/index.html b/customer/en/portal/articles/2542376/index.html new file mode 100644 index 00000000..2252e2bc --- /dev/null +++ b/customer/en/portal/articles/2542376/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-numeric-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561380-does-survey-solutions-support-data-exchange-from-one-tablet-to-another-with-bluetooth-point-to-point-or-usb-connection-/index.html b/customer/en/portal/articles/2561380-does-survey-solutions-support-data-exchange-from-one-tablet-to-another-with-bluetooth-point-to-point-or-usb-connection-/index.html new file mode 100644 index 00000000..7a46f2fa --- /dev/null +++ b/customer/en/portal/articles/2561380-does-survey-solutions-support-data-exchange-from-one-tablet-to-another-with-bluetooth-point-to-point-or-usb-connection-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/does-survey-solutions-support-data-exchange-from-one-tablet-to-another-with-bluetooth-point-to-point-or-usb-connection-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561380/index.html b/customer/en/portal/articles/2561380/index.html new file mode 100644 index 00000000..7a46f2fa --- /dev/null +++ b/customer/en/portal/articles/2561380/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/does-survey-solutions-support-data-exchange-from-one-tablet-to-another-with-bluetooth-point-to-point-or-usb-connection-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561438-what-are-the-costs-associated-with-using-survey-solutions-/index.html b/customer/en/portal/articles/2561438-what-are-the-costs-associated-with-using-survey-solutions-/index.html new file mode 100644 index 00000000..a2208d17 --- /dev/null +++ b/customer/en/portal/articles/2561438-what-are-the-costs-associated-with-using-survey-solutions-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-are-the-costs-associated-with-using-survey-solutions-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561438/index.html b/customer/en/portal/articles/2561438/index.html new file mode 100644 index 00000000..a2208d17 --- /dev/null +++ b/customer/en/portal/articles/2561438/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-are-the-costs-associated-with-using-survey-solutions-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561439-what-kind-of-tablets-should-we-purchase-to-use-with-survey-solutions-/index.html b/customer/en/portal/articles/2561439-what-kind-of-tablets-should-we-purchase-to-use-with-survey-solutions-/index.html new file mode 100644 index 00000000..002f8cef --- /dev/null +++ b/customer/en/portal/articles/2561439-what-kind-of-tablets-should-we-purchase-to-use-with-survey-solutions-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-kind-of-tablets-should-we-purchase-to-use-with-survey-solutions-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561439/index.html b/customer/en/portal/articles/2561439/index.html new file mode 100644 index 00000000..002f8cef --- /dev/null +++ b/customer/en/portal/articles/2561439/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-kind-of-tablets-should-we-purchase-to-use-with-survey-solutions-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561440-can-data-collected-with-survey-solutions-be-saved-backed-up-on-a-usb-stick-or-micro-sd-card-/index.html b/customer/en/portal/articles/2561440-can-data-collected-with-survey-solutions-be-saved-backed-up-on-a-usb-stick-or-micro-sd-card-/index.html new file mode 100644 index 00000000..c323208f --- /dev/null +++ b/customer/en/portal/articles/2561440-can-data-collected-with-survey-solutions-be-saved-backed-up-on-a-usb-stick-or-micro-sd-card-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/can-data-collected-with-survey-solutions-be-saved-backed-up-on-a-usb-stick-or-micro-sd-card-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561440/index.html b/customer/en/portal/articles/2561440/index.html new file mode 100644 index 00000000..c323208f --- /dev/null +++ b/customer/en/portal/articles/2561440/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/can-data-collected-with-survey-solutions-be-saved-backed-up-on-a-usb-stick-or-micro-sd-card-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561442-does-obtaining-a-gps-signal-require-an-internet-connection-/index.html b/customer/en/portal/articles/2561442-does-obtaining-a-gps-signal-require-an-internet-connection-/index.html new file mode 100644 index 00000000..4b4b9dba --- /dev/null +++ b/customer/en/portal/articles/2561442-does-obtaining-a-gps-signal-require-an-internet-connection-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/does-obtaining-a-gps-signal-require-an-internet-connection-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561442/index.html b/customer/en/portal/articles/2561442/index.html new file mode 100644 index 00000000..4b4b9dba --- /dev/null +++ b/customer/en/portal/articles/2561442/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/does-obtaining-a-gps-signal-require-an-internet-connection-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561443-what-kind-of-support-does-the-survey-solutions-team-provide-to-the-users-/index.html b/customer/en/portal/articles/2561443-what-kind-of-support-does-the-survey-solutions-team-provide-to-the-users-/index.html new file mode 100644 index 00000000..c146c087 --- /dev/null +++ b/customer/en/portal/articles/2561443-what-kind-of-support-does-the-survey-solutions-team-provide-to-the-users-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-kind-of-support-does-the-survey-solutions-team-provide-to-the-users-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561443/index.html b/customer/en/portal/articles/2561443/index.html new file mode 100644 index 00000000..c146c087 --- /dev/null +++ b/customer/en/portal/articles/2561443/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-kind-of-support-does-the-survey-solutions-team-provide-to-the-users-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561444-is-there-an-offline-version-of-the-questionnaire-designer-/index.html b/customer/en/portal/articles/2561444-is-there-an-offline-version-of-the-questionnaire-designer-/index.html new file mode 100644 index 00000000..4d3ea347 --- /dev/null +++ b/customer/en/portal/articles/2561444-is-there-an-offline-version-of-the-questionnaire-designer-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/is-there-an-offline-version-of-the-questionnaire-designer-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561444/index.html b/customer/en/portal/articles/2561444/index.html new file mode 100644 index 00000000..4d3ea347 --- /dev/null +++ b/customer/en/portal/articles/2561444/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/is-there-an-offline-version-of-the-questionnaire-designer-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561445-is-internet-access-required-during-interviews-/index.html b/customer/en/portal/articles/2561445-is-internet-access-required-during-interviews-/index.html new file mode 100644 index 00000000..d2c6fb32 --- /dev/null +++ b/customer/en/portal/articles/2561445-is-internet-access-required-during-interviews-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/is-internet-access-required-during-interviews-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561445/index.html b/customer/en/portal/articles/2561445/index.html new file mode 100644 index 00000000..d2c6fb32 --- /dev/null +++ b/customer/en/portal/articles/2561445/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/is-internet-access-required-during-interviews-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561446-how-can-i-request-localization-for-the-interviewer-and-tester-in-a-new-language-/index.html b/customer/en/portal/articles/2561446-how-can-i-request-localization-for-the-interviewer-and-tester-in-a-new-language-/index.html new file mode 100644 index 00000000..245cef3e --- /dev/null +++ b/customer/en/portal/articles/2561446-how-can-i-request-localization-for-the-interviewer-and-tester-in-a-new-language-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-can-i-request-localization-for-the-interviewer-and-tester-in-a-new-language-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561446/index.html b/customer/en/portal/articles/2561446/index.html new file mode 100644 index 00000000..245cef3e --- /dev/null +++ b/customer/en/portal/articles/2561446/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-can-i-request-localization-for-the-interviewer-and-tester-in-a-new-language-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561447-does-survey-solutions-require-constant-internet-connection-to-collect-data-/index.html b/customer/en/portal/articles/2561447-does-survey-solutions-require-constant-internet-connection-to-collect-data-/index.html new file mode 100644 index 00000000..4469a226 --- /dev/null +++ b/customer/en/portal/articles/2561447-does-survey-solutions-require-constant-internet-connection-to-collect-data-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/does-survey-solutions-require-constant-internet-connection-to-collect-data-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561447/index.html b/customer/en/portal/articles/2561447/index.html new file mode 100644 index 00000000..4469a226 --- /dev/null +++ b/customer/en/portal/articles/2561447/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/does-survey-solutions-require-constant-internet-connection-to-collect-data-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561448-my-survey-solutions-server-is-not-the-latest-version-can-i-still-use-it-with-new-surveys-/index.html b/customer/en/portal/articles/2561448-my-survey-solutions-server-is-not-the-latest-version-can-i-still-use-it-with-new-surveys-/index.html new file mode 100644 index 00000000..ba435e59 --- /dev/null +++ b/customer/en/portal/articles/2561448-my-survey-solutions-server-is-not-the-latest-version-can-i-still-use-it-with-new-surveys-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/my-survey-solutions-server-is-not-the-latest-version-can-i-still-use-it-with-new-surveys-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2561448/index.html b/customer/en/portal/articles/2561448/index.html new file mode 100644 index 00000000..ba435e59 --- /dev/null +++ b/customer/en/portal/articles/2561448/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/my-survey-solutions-server-is-not-the-latest-version-can-i-still-use-it-with-new-surveys-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2565166-why-does-the-time-recorded-through-date-time-question-is-different-from-the-time-reported-in-gps-question-/index.html b/customer/en/portal/articles/2565166-why-does-the-time-recorded-through-date-time-question-is-different-from-the-time-reported-in-gps-question-/index.html new file mode 100644 index 00000000..cec4dde9 --- /dev/null +++ b/customer/en/portal/articles/2565166-why-does-the-time-recorded-through-date-time-question-is-different-from-the-time-reported-in-gps-question-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/why-does-the-time-recorded-through-date-time-question-is-different-from-the-time-reported-in-gps-question-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2565166/index.html b/customer/en/portal/articles/2565166/index.html new file mode 100644 index 00000000..cec4dde9 --- /dev/null +++ b/customer/en/portal/articles/2565166/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/why-does-the-time-recorded-through-date-time-question-is-different-from-the-time-reported-in-gps-question-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2576135-should-i-buy-cheap-tablets-/index.html b/customer/en/portal/articles/2576135-should-i-buy-cheap-tablets-/index.html new file mode 100644 index 00000000..b5b7f282 --- /dev/null +++ b/customer/en/portal/articles/2576135-should-i-buy-cheap-tablets-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/should-i-buy-cheap-tablets-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2576135/index.html b/customer/en/portal/articles/2576135/index.html new file mode 100644 index 00000000..b5b7f282 --- /dev/null +++ b/customer/en/portal/articles/2576135/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/should-i-buy-cheap-tablets-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2578016-consequences-of-relinking-a-tablet-device/index.html b/customer/en/portal/articles/2578016-consequences-of-relinking-a-tablet-device/index.html new file mode 100644 index 00000000..dfc1a957 --- /dev/null +++ b/customer/en/portal/articles/2578016-consequences-of-relinking-a-tablet-device/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2578016/index.html b/customer/en/portal/articles/2578016/index.html new file mode 100644 index 00000000..dfc1a957 --- /dev/null +++ b/customer/en/portal/articles/2578016/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2579806-questionnaire-data---export-file-anatomy/index.html b/customer/en/portal/articles/2579806-questionnaire-data---export-file-anatomy/index.html new file mode 100644 index 00000000..2a092b24 --- /dev/null +++ b/customer/en/portal/articles/2579806-questionnaire-data---export-file-anatomy/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/questionnaire-data---export-file-anatomy/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2579806/index.html b/customer/en/portal/articles/2579806/index.html new file mode 100644 index 00000000..2a092b24 --- /dev/null +++ b/customer/en/portal/articles/2579806/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/questionnaire-data---export-file-anatomy/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2589525-multimedia-reference/index.html b/customer/en/portal/articles/2589525-multimedia-reference/index.html new file mode 100644 index 00000000..cea0437f --- /dev/null +++ b/customer/en/portal/articles/2589525-multimedia-reference/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/multimedia-reference/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2589525/index.html b/customer/en/portal/articles/2589525/index.html new file mode 100644 index 00000000..cea0437f --- /dev/null +++ b/customer/en/portal/articles/2589525/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/multimedia-reference/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2613318-should-and-could-i-modify-my-questionnaire-when-the-survey-is-in-the-field-/index.html b/customer/en/portal/articles/2613318-should-and-could-i-modify-my-questionnaire-when-the-survey-is-in-the-field-/index.html new file mode 100644 index 00000000..f84a1c9d --- /dev/null +++ b/customer/en/portal/articles/2613318-should-and-could-i-modify-my-questionnaire-when-the-survey-is-in-the-field-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/should-and-could-i-modify-my-questionnaire-when-the-survey-is-in-the-field-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2613318/index.html b/customer/en/portal/articles/2613318/index.html new file mode 100644 index 00000000..f84a1c9d --- /dev/null +++ b/customer/en/portal/articles/2613318/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/should-and-could-i-modify-my-questionnaire-when-the-survey-is-in-the-field-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2626663-multilingual-questionnaires/index.html b/customer/en/portal/articles/2626663-multilingual-questionnaires/index.html new file mode 100644 index 00000000..1b474729 --- /dev/null +++ b/customer/en/portal/articles/2626663-multilingual-questionnaires/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/multilingual-questionnaires/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2626663/index.html b/customer/en/portal/articles/2626663/index.html new file mode 100644 index 00000000..1b474729 --- /dev/null +++ b/customer/en/portal/articles/2626663/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/multilingual-questionnaires/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2630854-find-and-replace-/index.html b/customer/en/portal/articles/2630854-find-and-replace-/index.html new file mode 100644 index 00000000..0f1ee65f --- /dev/null +++ b/customer/en/portal/articles/2630854-find-and-replace-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/find-and-replace-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2630854/index.html b/customer/en/portal/articles/2630854/index.html new file mode 100644 index 00000000..0f1ee65f --- /dev/null +++ b/customer/en/portal/articles/2630854/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/find-and-replace-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2636469-rosters-export-file-anatomy/index.html b/customer/en/portal/articles/2636469-rosters-export-file-anatomy/index.html new file mode 100644 index 00000000..6234fd5a --- /dev/null +++ b/customer/en/portal/articles/2636469-rosters-export-file-anatomy/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/rosters-export-file-anatomy/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2636469/index.html b/customer/en/portal/articles/2636469/index.html new file mode 100644 index 00000000..6234fd5a --- /dev/null +++ b/customer/en/portal/articles/2636469/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/rosters-export-file-anatomy/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2646959-syntax-guide-single-select-questions/index.html b/customer/en/portal/articles/2646959-syntax-guide-single-select-questions/index.html new file mode 100644 index 00000000..3504de0b --- /dev/null +++ b/customer/en/portal/articles/2646959-syntax-guide-single-select-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-single-select-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2646959/index.html b/customer/en/portal/articles/2646959/index.html new file mode 100644 index 00000000..3504de0b --- /dev/null +++ b/customer/en/portal/articles/2646959/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-single-select-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2648780-syntax-guide-date-questions/index.html b/customer/en/portal/articles/2648780-syntax-guide-date-questions/index.html new file mode 100644 index 00000000..f8a5719a --- /dev/null +++ b/customer/en/portal/articles/2648780-syntax-guide-date-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-date-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2648780/index.html b/customer/en/portal/articles/2648780/index.html new file mode 100644 index 00000000..f8a5719a --- /dev/null +++ b/customer/en/portal/articles/2648780/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-date-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2649799-syntax-guide-using-linq-expressions-for-conditions-in-rosters/index.html b/customer/en/portal/articles/2649799-syntax-guide-using-linq-expressions-for-conditions-in-rosters/index.html new file mode 100644 index 00000000..d6f38100 --- /dev/null +++ b/customer/en/portal/articles/2649799-syntax-guide-using-linq-expressions-for-conditions-in-rosters/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/syntax-guide-using-linq-expressions-for-conditions-in-rosters/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2649799/index.html b/customer/en/portal/articles/2649799/index.html new file mode 100644 index 00000000..d6f38100 --- /dev/null +++ b/customer/en/portal/articles/2649799/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/syntax-guide-using-linq-expressions-for-conditions-in-rosters/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2651879-syntax-guide-gps-questions/index.html b/customer/en/portal/articles/2651879-syntax-guide-gps-questions/index.html new file mode 100644 index 00000000..b36385b8 --- /dev/null +++ b/customer/en/portal/articles/2651879-syntax-guide-gps-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-gps-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2651879/index.html b/customer/en/portal/articles/2651879/index.html new file mode 100644 index 00000000..b36385b8 --- /dev/null +++ b/customer/en/portal/articles/2651879/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-gps-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2658190-syntax-guide-barcode-questions/index.html b/customer/en/portal/articles/2658190-syntax-guide-barcode-questions/index.html new file mode 100644 index 00000000..964c5c2c --- /dev/null +++ b/customer/en/portal/articles/2658190-syntax-guide-barcode-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-barcode-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2658190/index.html b/customer/en/portal/articles/2658190/index.html new file mode 100644 index 00000000..964c5c2c --- /dev/null +++ b/customer/en/portal/articles/2658190/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-barcode-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2658467-syntax-guide-text-questions/index.html b/customer/en/portal/articles/2658467-syntax-guide-text-questions/index.html new file mode 100644 index 00000000..9a0edf0e --- /dev/null +++ b/customer/en/portal/articles/2658467-syntax-guide-text-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-text-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2658467/index.html b/customer/en/portal/articles/2658467/index.html new file mode 100644 index 00000000..9a0edf0e --- /dev/null +++ b/customer/en/portal/articles/2658467/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-text-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2658533-syntax-guide-list-questions/index.html b/customer/en/portal/articles/2658533-syntax-guide-list-questions/index.html new file mode 100644 index 00000000..957e8262 --- /dev/null +++ b/customer/en/portal/articles/2658533-syntax-guide-list-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-list-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2658533/index.html b/customer/en/portal/articles/2658533/index.html new file mode 100644 index 00000000..957e8262 --- /dev/null +++ b/customer/en/portal/articles/2658533/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-list-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2661196-syntax-guide-multi-select-questions/index.html b/customer/en/portal/articles/2661196-syntax-guide-multi-select-questions/index.html new file mode 100644 index 00000000..40c78b45 --- /dev/null +++ b/customer/en/portal/articles/2661196-syntax-guide-multi-select-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-multi-select-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2661196/index.html b/customer/en/portal/articles/2661196/index.html new file mode 100644 index 00000000..40c78b45 --- /dev/null +++ b/customer/en/portal/articles/2661196/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-multi-select-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2663547-syntax-guide-filtered-answer-options/index.html b/customer/en/portal/articles/2663547-syntax-guide-filtered-answer-options/index.html new file mode 100644 index 00000000..c1f1fcf1 --- /dev/null +++ b/customer/en/portal/articles/2663547-syntax-guide-filtered-answer-options/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-filtered-answer-options/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2663547/index.html b/customer/en/portal/articles/2663547/index.html new file mode 100644 index 00000000..c1f1fcf1 --- /dev/null +++ b/customer/en/portal/articles/2663547/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-filtered-answer-options/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2707388-admin-settings/index.html b/customer/en/portal/articles/2707388-admin-settings/index.html new file mode 100644 index 00000000..4287497a --- /dev/null +++ b/customer/en/portal/articles/2707388-admin-settings/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/admin-settings/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2707388/index.html b/customer/en/portal/articles/2707388/index.html new file mode 100644 index 00000000..4287497a --- /dev/null +++ b/customer/en/portal/articles/2707388/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/admin-settings/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2722990-what-to-do-in-case-a-tablet-gets-broken-damaged-or-destroyed-/index.html b/customer/en/portal/articles/2722990-what-to-do-in-case-a-tablet-gets-broken-damaged-or-destroyed-/index.html new file mode 100644 index 00000000..04ef57e3 --- /dev/null +++ b/customer/en/portal/articles/2722990-what-to-do-in-case-a-tablet-gets-broken-damaged-or-destroyed-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-to-do-in-case-a-tablet-gets-broken-damaged-or-destroyed-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2722990/index.html b/customer/en/portal/articles/2722990/index.html new file mode 100644 index 00000000..04ef57e3 --- /dev/null +++ b/customer/en/portal/articles/2722990/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-to-do-in-case-a-tablet-gets-broken-damaged-or-destroyed-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2723099-cloud-server-instructions/index.html b/customer/en/portal/articles/2723099-cloud-server-instructions/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/en/portal/articles/2723099-cloud-server-instructions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2723099/index.html b/customer/en/portal/articles/2723099/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/en/portal/articles/2723099/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2723103-cloud-server-request/index.html b/customer/en/portal/articles/2723103-cloud-server-request/index.html new file mode 100644 index 00000000..641cd816 --- /dev/null +++ b/customer/en/portal/articles/2723103-cloud-server-request/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/cloud-server-request/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2723103/index.html b/customer/en/portal/articles/2723103/index.html new file mode 100644 index 00000000..641cd816 --- /dev/null +++ b/customer/en/portal/articles/2723103/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/cloud-server-request/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2723106-actions-before-the-survey-starts/index.html b/customer/en/portal/articles/2723106-actions-before-the-survey-starts/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/en/portal/articles/2723106-actions-before-the-survey-starts/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2723106/index.html b/customer/en/portal/articles/2723106/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/en/portal/articles/2723106/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2723112-actions-during-the-survey/index.html b/customer/en/portal/articles/2723112-actions-during-the-survey/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/en/portal/articles/2723112-actions-during-the-survey/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2723112/index.html b/customer/en/portal/articles/2723112/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/en/portal/articles/2723112/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2723118-actions-after-the-end-of-the-survey/index.html b/customer/en/portal/articles/2723118-actions-after-the-end-of-the-survey/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/en/portal/articles/2723118-actions-after-the-end-of-the-survey/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2723118/index.html b/customer/en/portal/articles/2723118/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/en/portal/articles/2723118/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2723119-deleting-a-survey/index.html b/customer/en/portal/articles/2723119-deleting-a-survey/index.html new file mode 100644 index 00000000..68f0fb37 --- /dev/null +++ b/customer/en/portal/articles/2723119-deleting-a-survey/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/deleting-a-survey/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2723119/index.html b/customer/en/portal/articles/2723119/index.html new file mode 100644 index 00000000..68f0fb37 --- /dev/null +++ b/customer/en/portal/articles/2723119/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/deleting-a-survey/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2733269-survey-solutions-limits/index.html b/customer/en/portal/articles/2733269-survey-solutions-limits/index.html new file mode 100644 index 00000000..b4d7d16a --- /dev/null +++ b/customer/en/portal/articles/2733269-survey-solutions-limits/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/survey-solutions-limits/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2733269/index.html b/customer/en/portal/articles/2733269/index.html new file mode 100644 index 00000000..b4d7d16a --- /dev/null +++ b/customer/en/portal/articles/2733269/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/survey-solutions-limits/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2733345-recognized-barcode-formats/index.html b/customer/en/portal/articles/2733345-recognized-barcode-formats/index.html new file mode 100644 index 00000000..d085eb79 --- /dev/null +++ b/customer/en/portal/articles/2733345-recognized-barcode-formats/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/recognized-barcode-formats/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2733345/index.html b/customer/en/portal/articles/2733345/index.html new file mode 100644 index 00000000..d085eb79 --- /dev/null +++ b/customer/en/portal/articles/2733345/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/recognized-barcode-formats/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2736012-comparing-floating-point-numbers-and-precision-problems/index.html b/customer/en/portal/articles/2736012-comparing-floating-point-numbers-and-precision-problems/index.html new file mode 100644 index 00000000..266785ef --- /dev/null +++ b/customer/en/portal/articles/2736012-comparing-floating-point-numbers-and-precision-problems/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/comparing-floating-point-numbers-and-precision-problems/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2736012/index.html b/customer/en/portal/articles/2736012/index.html new file mode 100644 index 00000000..266785ef --- /dev/null +++ b/customer/en/portal/articles/2736012/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/comparing-floating-point-numbers-and-precision-problems/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2751253-numbering-in-subordinate-rosters-during-preloading/index.html b/customer/en/portal/articles/2751253-numbering-in-subordinate-rosters-during-preloading/index.html new file mode 100644 index 00000000..c0f36b15 --- /dev/null +++ b/customer/en/portal/articles/2751253-numbering-in-subordinate-rosters-during-preloading/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/numbering-in-subordinate-rosters-during-preloading/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2751253/index.html b/customer/en/portal/articles/2751253/index.html new file mode 100644 index 00000000..c0f36b15 --- /dev/null +++ b/customer/en/portal/articles/2751253/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/numbering-in-subordinate-rosters-during-preloading/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2751355-selecting-a-person/index.html b/customer/en/portal/articles/2751355-selecting-a-person/index.html new file mode 100644 index 00000000..840ff5a5 --- /dev/null +++ b/customer/en/portal/articles/2751355-selecting-a-person/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/selecting-a-person/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2751355/index.html b/customer/en/portal/articles/2751355/index.html new file mode 100644 index 00000000..840ff5a5 --- /dev/null +++ b/customer/en/portal/articles/2751355/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/selecting-a-person/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2760551-version-5-18/index.html b/customer/en/portal/articles/2760551-version-5-18/index.html new file mode 100644 index 00000000..02a4303e --- /dev/null +++ b/customer/en/portal/articles/2760551-version-5-18/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-18/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2760551/index.html b/customer/en/portal/articles/2760551/index.html new file mode 100644 index 00000000..02a4303e --- /dev/null +++ b/customer/en/portal/articles/2760551/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-18/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2763003-version-5-17/index.html b/customer/en/portal/articles/2763003-version-5-17/index.html new file mode 100644 index 00000000..3df135f5 --- /dev/null +++ b/customer/en/portal/articles/2763003-version-5-17/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-17/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2763003/index.html b/customer/en/portal/articles/2763003/index.html new file mode 100644 index 00000000..3df135f5 --- /dev/null +++ b/customer/en/portal/articles/2763003/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-17/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2767819-setting-photo-size-and-quality/index.html b/customer/en/portal/articles/2767819-setting-photo-size-and-quality/index.html new file mode 100644 index 00000000..4ca679c5 --- /dev/null +++ b/customer/en/portal/articles/2767819-setting-photo-size-and-quality/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/special/setting-photo-size-and-quality/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2767819/index.html b/customer/en/portal/articles/2767819/index.html new file mode 100644 index 00000000..4ca679c5 --- /dev/null +++ b/customer/en/portal/articles/2767819/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/special/setting-photo-size-and-quality/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2768436-standalone-installation/index.html b/customer/en/portal/articles/2768436-standalone-installation/index.html new file mode 100644 index 00000000..cb7b51a1 --- /dev/null +++ b/customer/en/portal/articles/2768436-standalone-installation/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/server-installation/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2768436/index.html b/customer/en/portal/articles/2768436/index.html new file mode 100644 index 00000000..cb7b51a1 --- /dev/null +++ b/customer/en/portal/articles/2768436/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/server-installation/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2781948-version-5-19/index.html b/customer/en/portal/articles/2781948-version-5-19/index.html new file mode 100644 index 00000000..1f7ec01a --- /dev/null +++ b/customer/en/portal/articles/2781948-version-5-19/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-19/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2781948/index.html b/customer/en/portal/articles/2781948/index.html new file mode 100644 index 00000000..1f7ec01a --- /dev/null +++ b/customer/en/portal/articles/2781948/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-19/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2784950-replacement-strategies/index.html b/customer/en/portal/articles/2784950-replacement-strategies/index.html new file mode 100644 index 00000000..b7b04417 --- /dev/null +++ b/customer/en/portal/articles/2784950-replacement-strategies/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/replacement-strategies/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2784950/index.html b/customer/en/portal/articles/2784950/index.html new file mode 100644 index 00000000..b7b04417 --- /dev/null +++ b/customer/en/portal/articles/2784950/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/replacement-strategies/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2784975-stata-export-file-format/index.html b/customer/en/portal/articles/2784975-stata-export-file-format/index.html new file mode 100644 index 00000000..f6aac8ef --- /dev/null +++ b/customer/en/portal/articles/2784975-stata-export-file-format/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/stata-export-file-format/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2784975/index.html b/customer/en/portal/articles/2784975/index.html new file mode 100644 index 00000000..f6aac8ef --- /dev/null +++ b/customer/en/portal/articles/2784975/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/stata-export-file-format/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2789716-mandatory-required-questions/index.html b/customer/en/portal/articles/2789716-mandatory-required-questions/index.html new file mode 100644 index 00000000..02ad9440 --- /dev/null +++ b/customer/en/portal/articles/2789716-mandatory-required-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/mandatory-required-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2789716/index.html b/customer/en/portal/articles/2789716/index.html new file mode 100644 index 00000000..02ad9440 --- /dev/null +++ b/customer/en/portal/articles/2789716/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/mandatory-required-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2791155-alternatives-to-date-type-question/index.html b/customer/en/portal/articles/2791155-alternatives-to-date-type-question/index.html new file mode 100644 index 00000000..127e0c57 --- /dev/null +++ b/customer/en/portal/articles/2791155-alternatives-to-date-type-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/alternatives-to-date-type-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2791155/index.html b/customer/en/portal/articles/2791155/index.html new file mode 100644 index 00000000..127e0c57 --- /dev/null +++ b/customer/en/portal/articles/2791155/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/alternatives-to-date-type-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2800579-version-5-20/index.html b/customer/en/portal/articles/2800579-version-5-20/index.html new file mode 100644 index 00000000..90e254d7 --- /dev/null +++ b/customer/en/portal/articles/2800579-version-5-20/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-20/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2800579/index.html b/customer/en/portal/articles/2800579/index.html new file mode 100644 index 00000000..90e254d7 --- /dev/null +++ b/customer/en/portal/articles/2800579/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-20/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2819652-how-secure-is-the-world-bank-cloud-/index.html b/customer/en/portal/articles/2819652-how-secure-is-the-world-bank-cloud-/index.html new file mode 100644 index 00000000..5b3c4887 --- /dev/null +++ b/customer/en/portal/articles/2819652-how-secure-is-the-world-bank-cloud-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-secure-is-the-world-bank-cloud-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2819652/index.html b/customer/en/portal/articles/2819652/index.html new file mode 100644 index 00000000..5b3c4887 --- /dev/null +++ b/customer/en/portal/articles/2819652/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-secure-is-the-world-bank-cloud-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2822830-missing-values/index.html b/customer/en/portal/articles/2822830-missing-values/index.html new file mode 100644 index 00000000..1aa45f75 --- /dev/null +++ b/customer/en/portal/articles/2822830-missing-values/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/missing-values/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2822830/index.html b/customer/en/portal/articles/2822830/index.html new file mode 100644 index 00000000..1aa45f75 --- /dev/null +++ b/customer/en/portal/articles/2822830/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/missing-values/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2831973-import-the-questionnaire/index.html b/customer/en/portal/articles/2831973-import-the-questionnaire/index.html new file mode 100644 index 00000000..cdffd7ec --- /dev/null +++ b/customer/en/portal/articles/2831973-import-the-questionnaire/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/import-the-questionnaire/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2831973/index.html b/customer/en/portal/articles/2831973/index.html new file mode 100644 index 00000000..cdffd7ec --- /dev/null +++ b/customer/en/portal/articles/2831973/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/import-the-questionnaire/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2832810-getting-started-checklist/index.html b/customer/en/portal/articles/2832810-getting-started-checklist/index.html new file mode 100644 index 00000000..861cc181 --- /dev/null +++ b/customer/en/portal/articles/2832810-getting-started-checklist/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/getting-started-checklist/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2832810/index.html b/customer/en/portal/articles/2832810/index.html new file mode 100644 index 00000000..861cc181 --- /dev/null +++ b/customer/en/portal/articles/2832810/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/getting-started-checklist/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2832911-creating-assignments-one-at-time/index.html b/customer/en/portal/articles/2832911-creating-assignments-one-at-time/index.html new file mode 100644 index 00000000..dd8cb9a0 --- /dev/null +++ b/customer/en/portal/articles/2832911-creating-assignments-one-at-time/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/creating-assignments-one-at-time/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2832911/index.html b/customer/en/portal/articles/2832911/index.html new file mode 100644 index 00000000..dd8cb9a0 --- /dev/null +++ b/customer/en/portal/articles/2832911/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/creating-assignments-one-at-time/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2832918-survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/index.html b/customer/en/portal/articles/2832918-survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/index.html new file mode 100644 index 00000000..f8931b9e --- /dev/null +++ b/customer/en/portal/articles/2832918-survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2832918/index.html b/customer/en/portal/articles/2832918/index.html new file mode 100644 index 00000000..f8931b9e --- /dev/null +++ b/customer/en/portal/articles/2832918/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2835148-interviewer-dashboard-managing-the-workload/index.html b/customer/en/portal/articles/2835148-interviewer-dashboard-managing-the-workload/index.html new file mode 100644 index 00000000..9636b069 --- /dev/null +++ b/customer/en/portal/articles/2835148-interviewer-dashboard-managing-the-workload/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/interviewer-dashboard-managing-the-workload/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2835148/index.html b/customer/en/portal/articles/2835148/index.html new file mode 100644 index 00000000..9636b069 --- /dev/null +++ b/customer/en/portal/articles/2835148/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/interviewer-dashboard-managing-the-workload/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2835383-notes-on-compatibility-with-version-5-21/index.html b/customer/en/portal/articles/2835383-notes-on-compatibility-with-version-5-21/index.html new file mode 100644 index 00000000..9540804c --- /dev/null +++ b/customer/en/portal/articles/2835383-notes-on-compatibility-with-version-5-21/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/notes-on-compatibility-with-version-5-21/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2835383/index.html b/customer/en/portal/articles/2835383/index.html new file mode 100644 index 00000000..9540804c --- /dev/null +++ b/customer/en/portal/articles/2835383/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/notes-on-compatibility-with-version-5-21/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2836630-version-5-21/index.html b/customer/en/portal/articles/2836630-version-5-21/index.html new file mode 100644 index 00000000..4e39013c --- /dev/null +++ b/customer/en/portal/articles/2836630-version-5-21/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-21/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2836630/index.html b/customer/en/portal/articles/2836630/index.html new file mode 100644 index 00000000..4e39013c --- /dev/null +++ b/customer/en/portal/articles/2836630/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-21/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2842561-randomizing-order-of-questions/index.html b/customer/en/portal/articles/2842561-randomizing-order-of-questions/index.html new file mode 100644 index 00000000..2261551b --- /dev/null +++ b/customer/en/portal/articles/2842561-randomizing-order-of-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/randomizing-order-of-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2842561/index.html b/customer/en/portal/articles/2842561/index.html new file mode 100644 index 00000000..2261551b --- /dev/null +++ b/customer/en/portal/articles/2842561/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/randomizing-order-of-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2844104-survey-solutions-api/index.html b/customer/en/portal/articles/2844104-survey-solutions-api/index.html new file mode 100644 index 00000000..bf2f54b0 --- /dev/null +++ b/customer/en/portal/articles/2844104-survey-solutions-api/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/api/survey-solutions-api/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2844104/index.html b/customer/en/portal/articles/2844104/index.html new file mode 100644 index 00000000..bf2f54b0 --- /dev/null +++ b/customer/en/portal/articles/2844104/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/api/survey-solutions-api/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2846777-faq-for-email-support/index.html b/customer/en/portal/articles/2846777-faq-for-email-support/index.html new file mode 100644 index 00000000..23d073c5 --- /dev/null +++ b/customer/en/portal/articles/2846777-faq-for-email-support/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/faq-for-email-support/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2846777/index.html b/customer/en/portal/articles/2846777/index.html new file mode 100644 index 00000000..23d073c5 --- /dev/null +++ b/customer/en/portal/articles/2846777/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/faq-for-email-support/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2847199-assignments/index.html b/customer/en/portal/articles/2847199-assignments/index.html new file mode 100644 index 00000000..884bb51c --- /dev/null +++ b/customer/en/portal/articles/2847199-assignments/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/assignments/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2847199/index.html b/customer/en/portal/articles/2847199/index.html new file mode 100644 index 00000000..884bb51c --- /dev/null +++ b/customer/en/portal/articles/2847199/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/assignments/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2847917-faq-for-it-personnel/index.html b/customer/en/portal/articles/2847917-faq-for-it-personnel/index.html new file mode 100644 index 00000000..eaec44ee --- /dev/null +++ b/customer/en/portal/articles/2847917-faq-for-it-personnel/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/faq-for-it-personnel/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2847917/index.html b/customer/en/portal/articles/2847917/index.html new file mode 100644 index 00000000..eaec44ee --- /dev/null +++ b/customer/en/portal/articles/2847917/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/faq-for-it-personnel/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2848383-is-the-designer-tool-online-now-/index.html b/customer/en/portal/articles/2848383-is-the-designer-tool-online-now-/index.html new file mode 100644 index 00000000..908dc603 --- /dev/null +++ b/customer/en/portal/articles/2848383-is-the-designer-tool-online-now-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/is-the-designer-tool-online-now-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2848383/index.html b/customer/en/portal/articles/2848383/index.html new file mode 100644 index 00000000..908dc603 --- /dev/null +++ b/customer/en/portal/articles/2848383/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/is-the-designer-tool-online-now-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2853037-version-5-22/index.html b/customer/en/portal/articles/2853037-version-5-22/index.html new file mode 100644 index 00000000..97b3763c --- /dev/null +++ b/customer/en/portal/articles/2853037-version-5-22/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-22/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2853037/index.html b/customer/en/portal/articles/2853037/index.html new file mode 100644 index 00000000..97b3763c --- /dev/null +++ b/customer/en/portal/articles/2853037/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-22/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2868453-version-5-23/index.html b/customer/en/portal/articles/2868453-version-5-23/index.html new file mode 100644 index 00000000..0001efc1 --- /dev/null +++ b/customer/en/portal/articles/2868453-version-5-23/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-23/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2868453/index.html b/customer/en/portal/articles/2868453/index.html new file mode 100644 index 00000000..0001efc1 --- /dev/null +++ b/customer/en/portal/articles/2868453/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-23/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2877878-distribute-an-assignment/index.html b/customer/en/portal/articles/2877878-distribute-an-assignment/index.html new file mode 100644 index 00000000..cefcf963 --- /dev/null +++ b/customer/en/portal/articles/2877878-distribute-an-assignment/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/distribute-an-assignment/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2877878/index.html b/customer/en/portal/articles/2877878/index.html new file mode 100644 index 00000000..cefcf963 --- /dev/null +++ b/customer/en/portal/articles/2877878/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/distribute-an-assignment/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2877883-reassign-an-interview/index.html b/customer/en/portal/articles/2877883-reassign-an-interview/index.html new file mode 100644 index 00000000..e375009c --- /dev/null +++ b/customer/en/portal/articles/2877883-reassign-an-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/reassign-an-interview/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2877883/index.html b/customer/en/portal/articles/2877883/index.html new file mode 100644 index 00000000..e375009c --- /dev/null +++ b/customer/en/portal/articles/2877883/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/reassign-an-interview/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2883853-version-5-24/index.html b/customer/en/portal/articles/2883853-version-5-24/index.html new file mode 100644 index 00000000..ed9050e5 --- /dev/null +++ b/customer/en/portal/articles/2883853-version-5-24/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-24/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2883853/index.html b/customer/en/portal/articles/2883853/index.html new file mode 100644 index 00000000..ed9050e5 --- /dev/null +++ b/customer/en/portal/articles/2883853/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-24/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2885558-survey-solutions-server-administrator/index.html b/customer/en/portal/articles/2885558-survey-solutions-server-administrator/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/en/portal/articles/2885558-survey-solutions-server-administrator/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2885558/index.html b/customer/en/portal/articles/2885558/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/en/portal/articles/2885558/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2885596-survey-solutions-server-observer/index.html b/customer/en/portal/articles/2885596-survey-solutions-server-observer/index.html new file mode 100644 index 00000000..6d86e88b --- /dev/null +++ b/customer/en/portal/articles/2885596-survey-solutions-server-observer/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-observer/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2885596/index.html b/customer/en/portal/articles/2885596/index.html new file mode 100644 index 00000000..6d86e88b --- /dev/null +++ b/customer/en/portal/articles/2885596/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-observer/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2887843/index.html b/customer/en/portal/articles/2887843/index.html new file mode 100644 index 00000000..c66b42e8 --- /dev/null +++ b/customer/en/portal/articles/2887843/index.html @@ -0,0 +1 @@ +https://forum.mysurvey.solutions/c/feature-suggestions/ \ No newline at end of file diff --git a/customer/en/portal/articles/2888303-geography-question/index.html b/customer/en/portal/articles/2888303-geography-question/index.html new file mode 100644 index 00000000..66ac8951 --- /dev/null +++ b/customer/en/portal/articles/2888303-geography-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/geography-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2888303/index.html b/customer/en/portal/articles/2888303/index.html new file mode 100644 index 00000000..66ac8951 --- /dev/null +++ b/customer/en/portal/articles/2888303/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/geography-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2888456-audio-question/index.html b/customer/en/portal/articles/2888456-audio-question/index.html new file mode 100644 index 00000000..488d6c5b --- /dev/null +++ b/customer/en/portal/articles/2888456-audio-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/audio-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2888456/index.html b/customer/en/portal/articles/2888456/index.html new file mode 100644 index 00000000..488d6c5b --- /dev/null +++ b/customer/en/portal/articles/2888456/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/audio-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2908671-downloadable-report-on-interviewers/index.html b/customer/en/portal/articles/2908671-downloadable-report-on-interviewers/index.html new file mode 100644 index 00000000..46fdf678 --- /dev/null +++ b/customer/en/portal/articles/2908671-downloadable-report-on-interviewers/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/downloadable-report-on-interviewers/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2908671/index.html b/customer/en/portal/articles/2908671/index.html new file mode 100644 index 00000000..46fdf678 --- /dev/null +++ b/customer/en/portal/articles/2908671/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/downloadable-report-on-interviewers/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2908701-version-5-25/index.html b/customer/en/portal/articles/2908701-version-5-25/index.html new file mode 100644 index 00000000..ef2c5993 --- /dev/null +++ b/customer/en/portal/articles/2908701-version-5-25/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-25/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2908701/index.html b/customer/en/portal/articles/2908701/index.html new file mode 100644 index 00000000..ef2c5993 --- /dev/null +++ b/customer/en/portal/articles/2908701/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-25/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2910459-my-questionnaire-is-not-as-fast-as-it-used-to-be-why-/index.html b/customer/en/portal/articles/2910459-my-questionnaire-is-not-as-fast-as-it-used-to-be-why-/index.html new file mode 100644 index 00000000..a43a6981 --- /dev/null +++ b/customer/en/portal/articles/2910459-my-questionnaire-is-not-as-fast-as-it-used-to-be-why-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/my-questionnaire-is-not-as-fast-as-it-used-to-be-why-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2910459/index.html b/customer/en/portal/articles/2910459/index.html new file mode 100644 index 00000000..a43a6981 --- /dev/null +++ b/customer/en/portal/articles/2910459/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/my-questionnaire-is-not-as-fast-as-it-used-to-be-why-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2914430-local-installation-interviwer-app-cannot-connect-to-the-server-over-https/index.html b/customer/en/portal/articles/2914430-local-installation-interviwer-app-cannot-connect-to-the-server-over-https/index.html new file mode 100644 index 00000000..84b47a6c --- /dev/null +++ b/customer/en/portal/articles/2914430-local-installation-interviwer-app-cannot-connect-to-the-server-over-https/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/local-installation-interviwer-app-cannot-connect-to-the-server-over-https/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2914430/index.html b/customer/en/portal/articles/2914430/index.html new file mode 100644 index 00000000..84b47a6c --- /dev/null +++ b/customer/en/portal/articles/2914430/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/local-installation-interviwer-app-cannot-connect-to-the-server-over-https/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2918252-excessive-interviews/index.html b/customer/en/portal/articles/2918252-excessive-interviews/index.html new file mode 100644 index 00000000..2bf6ed09 --- /dev/null +++ b/customer/en/portal/articles/2918252-excessive-interviews/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/excessive-interviews/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2918252/index.html b/customer/en/portal/articles/2918252/index.html new file mode 100644 index 00000000..2bf6ed09 --- /dev/null +++ b/customer/en/portal/articles/2918252/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/excessive-interviews/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2921275-version-5-26/index.html b/customer/en/portal/articles/2921275-version-5-26/index.html new file mode 100644 index 00000000..857f66bd --- /dev/null +++ b/customer/en/portal/articles/2921275-version-5-26/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-26/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2921275/index.html b/customer/en/portal/articles/2921275/index.html new file mode 100644 index 00000000..857f66bd --- /dev/null +++ b/customer/en/portal/articles/2921275/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-26/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2921331-how-to-cite-survey-solutions-in-a-publication-/index.html b/customer/en/portal/articles/2921331-how-to-cite-survey-solutions-in-a-publication-/index.html new file mode 100644 index 00000000..72938394 --- /dev/null +++ b/customer/en/portal/articles/2921331-how-to-cite-survey-solutions-in-a-publication-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-to-cite-survey-solutions-in-a-publication-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2921331/index.html b/customer/en/portal/articles/2921331/index.html new file mode 100644 index 00000000..72938394 --- /dev/null +++ b/customer/en/portal/articles/2921331/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-to-cite-survey-solutions-in-a-publication-/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2924573-updating-the-interviewer-application/index.html b/customer/en/portal/articles/2924573-updating-the-interviewer-application/index.html new file mode 100644 index 00000000..7d94f907 --- /dev/null +++ b/customer/en/portal/articles/2924573-updating-the-interviewer-application/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/updating-the-interviewer-application/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2924573/index.html b/customer/en/portal/articles/2924573/index.html new file mode 100644 index 00000000..7d94f907 --- /dev/null +++ b/customer/en/portal/articles/2924573/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/updating-the-interviewer-application/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2926278-server-not-working/index.html b/customer/en/portal/articles/2926278-server-not-working/index.html new file mode 100644 index 00000000..12b5023c --- /dev/null +++ b/customer/en/portal/articles/2926278-server-not-working/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/server-not-working/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2926278/index.html b/customer/en/portal/articles/2926278/index.html new file mode 100644 index 00000000..12b5023c --- /dev/null +++ b/customer/en/portal/articles/2926278/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/server-not-working/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2928007-errors-in-user-supplied-files-for-preloading/index.html b/customer/en/portal/articles/2928007-errors-in-user-supplied-files-for-preloading/index.html new file mode 100644 index 00000000..4f9ddbe2 --- /dev/null +++ b/customer/en/portal/articles/2928007-errors-in-user-supplied-files-for-preloading/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/errors-in-user-supplied-files-for-preloading/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2928007/index.html b/customer/en/portal/articles/2928007/index.html new file mode 100644 index 00000000..4f9ddbe2 --- /dev/null +++ b/customer/en/portal/articles/2928007/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/errors-in-user-supplied-files-for-preloading/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2928242-design-limitations-by-question-type/index.html b/customer/en/portal/articles/2928242-design-limitations-by-question-type/index.html new file mode 100644 index 00000000..46bf77d4 --- /dev/null +++ b/customer/en/portal/articles/2928242-design-limitations-by-question-type/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/design-limitations-by-question-type/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2928242/index.html b/customer/en/portal/articles/2928242/index.html new file mode 100644 index 00000000..46bf77d4 --- /dev/null +++ b/customer/en/portal/articles/2928242/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/design-limitations-by-question-type/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2931992-capturing-signatures-with-a-picture-question/index.html b/customer/en/portal/articles/2931992-capturing-signatures-with-a-picture-question/index.html new file mode 100644 index 00000000..b77c6586 --- /dev/null +++ b/customer/en/portal/articles/2931992-capturing-signatures-with-a-picture-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/capturing-signatures-with-a-picture-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2931992/index.html b/customer/en/portal/articles/2931992/index.html new file mode 100644 index 00000000..b77c6586 --- /dev/null +++ b/customer/en/portal/articles/2931992/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/capturing-signatures-with-a-picture-question/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2931999-special-values-for-numeric-questions/index.html b/customer/en/portal/articles/2931999-special-values-for-numeric-questions/index.html new file mode 100644 index 00000000..06e4225b --- /dev/null +++ b/customer/en/portal/articles/2931999-special-values-for-numeric-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/special-values-for-numeric-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2931999/index.html b/customer/en/portal/articles/2931999/index.html new file mode 100644 index 00000000..06e4225b --- /dev/null +++ b/customer/en/portal/articles/2931999/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/special-values-for-numeric-questions/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932008-comments-in-designer/index.html b/customer/en/portal/articles/2932008-comments-in-designer/index.html new file mode 100644 index 00000000..abcc9449 --- /dev/null +++ b/customer/en/portal/articles/2932008-comments-in-designer/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/comments-in-designer/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932008/index.html b/customer/en/portal/articles/2932008/index.html new file mode 100644 index 00000000..abcc9449 --- /dev/null +++ b/customer/en/portal/articles/2932008/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/comments-in-designer/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932022-circular-references/index.html b/customer/en/portal/articles/2932022-circular-references/index.html new file mode 100644 index 00000000..3bafddc8 --- /dev/null +++ b/customer/en/portal/articles/2932022-circular-references/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/messages/circular-references/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932022/index.html b/customer/en/portal/articles/2932022/index.html new file mode 100644 index 00000000..3bafddc8 --- /dev/null +++ b/customer/en/portal/articles/2932022/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/messages/circular-references/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932033-customize-web-interview-messages/index.html b/customer/en/portal/articles/2932033-customize-web-interview-messages/index.html new file mode 100644 index 00000000..23669d52 --- /dev/null +++ b/customer/en/portal/articles/2932033-customize-web-interview-messages/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/cawi/customize-web-interview-messages/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932033/index.html b/customer/en/portal/articles/2932033/index.html new file mode 100644 index 00000000..23669d52 --- /dev/null +++ b/customer/en/portal/articles/2932033/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/cawi/customize-web-interview-messages/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932041-export-to-cloud-storage/index.html b/customer/en/portal/articles/2932041-export-to-cloud-storage/index.html new file mode 100644 index 00000000..9a11b537 --- /dev/null +++ b/customer/en/portal/articles/2932041-export-to-cloud-storage/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-tab/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932041/index.html b/customer/en/portal/articles/2932041/index.html new file mode 100644 index 00000000..9a11b537 --- /dev/null +++ b/customer/en/portal/articles/2932041/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-tab/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932042-validation-warnings/index.html b/customer/en/portal/articles/2932042-validation-warnings/index.html new file mode 100644 index 00000000..605cf991 --- /dev/null +++ b/customer/en/portal/articles/2932042-validation-warnings/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/validation-warnings/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932042/index.html b/customer/en/portal/articles/2932042/index.html new file mode 100644 index 00000000..605cf991 --- /dev/null +++ b/customer/en/portal/articles/2932042/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/validation-warnings/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932045-version-18-04/index.html b/customer/en/portal/articles/2932045-version-18-04/index.html new file mode 100644 index 00000000..be8542a1 --- /dev/null +++ b/customer/en/portal/articles/2932045-version-18-04/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-18-04/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932045/index.html b/customer/en/portal/articles/2932045/index.html new file mode 100644 index 00000000..be8542a1 --- /dev/null +++ b/customer/en/portal/articles/2932045/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-18-04/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932213-alternative-maps-for-servers-in-china/index.html b/customer/en/portal/articles/2932213-alternative-maps-for-servers-in-china/index.html new file mode 100644 index 00000000..7bea641a --- /dev/null +++ b/customer/en/portal/articles/2932213-alternative-maps-for-servers-in-china/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/alternative-maps-for-servers-in-china/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2932213/index.html b/customer/en/portal/articles/2932213/index.html new file mode 100644 index 00000000..7bea641a --- /dev/null +++ b/customer/en/portal/articles/2932213/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/alternative-maps-for-servers-in-china/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2935533-testing-your-questionnaire-with-the-online-tester/index.html b/customer/en/portal/articles/2935533-testing-your-questionnaire-with-the-online-tester/index.html new file mode 100644 index 00000000..e7c532a3 --- /dev/null +++ b/customer/en/portal/articles/2935533-testing-your-questionnaire-with-the-online-tester/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/testing/testing-your-questionnaire-with-the-online-tester/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2935533/index.html b/customer/en/portal/articles/2935533/index.html new file mode 100644 index 00000000..e7c532a3 --- /dev/null +++ b/customer/en/portal/articles/2935533/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/testing/testing-your-questionnaire-with-the-online-tester/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2938134-multiple-interviewers-using-the-same-tablet/index.html b/customer/en/portal/articles/2938134-multiple-interviewers-using-the-same-tablet/index.html new file mode 100644 index 00000000..129f6827 --- /dev/null +++ b/customer/en/portal/articles/2938134-multiple-interviewers-using-the-same-tablet/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/multiple-interviewers-using-the-same-tablet/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2938134/index.html b/customer/en/portal/articles/2938134/index.html new file mode 100644 index 00000000..129f6827 --- /dev/null +++ b/customer/en/portal/articles/2938134/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/multiple-interviewers-using-the-same-tablet/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2939577-synchronization-problems/index.html b/customer/en/portal/articles/2939577-synchronization-problems/index.html new file mode 100644 index 00000000..640d89d5 --- /dev/null +++ b/customer/en/portal/articles/2939577-synchronization-problems/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/synchronization-problems/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2939577/index.html b/customer/en/portal/articles/2939577/index.html new file mode 100644 index 00000000..640d89d5 --- /dev/null +++ b/customer/en/portal/articles/2939577/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/synchronization-problems/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2942597-version-18-06/index.html b/customer/en/portal/articles/2942597-version-18-06/index.html new file mode 100644 index 00000000..3c16245b --- /dev/null +++ b/customer/en/portal/articles/2942597-version-18-06/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-18-06/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2942597/index.html b/customer/en/portal/articles/2942597/index.html new file mode 100644 index 00000000..3c16245b --- /dev/null +++ b/customer/en/portal/articles/2942597/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-18-06/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2942758-protecting-pre-loaded-answers/index.html b/customer/en/portal/articles/2942758-protecting-pre-loaded-answers/index.html new file mode 100644 index 00000000..935a2627 --- /dev/null +++ b/customer/en/portal/articles/2942758-protecting-pre-loaded-answers/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/protecting-pre-loaded-answers/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2942758/index.html b/customer/en/portal/articles/2942758/index.html new file mode 100644 index 00000000..935a2627 --- /dev/null +++ b/customer/en/portal/articles/2942758/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/protecting-pre-loaded-answers/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2942852-shape-file-overlay/index.html b/customer/en/portal/articles/2942852-shape-file-overlay/index.html new file mode 100644 index 00000000..fbfecd35 --- /dev/null +++ b/customer/en/portal/articles/2942852-shape-file-overlay/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/mapsmanage/shapefile-maps/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2942852/index.html b/customer/en/portal/articles/2942852/index.html new file mode 100644 index 00000000..fbfecd35 --- /dev/null +++ b/customer/en/portal/articles/2942852/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/mapsmanage/shapefile-maps/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2943093-detailed-action-log/index.html b/customer/en/portal/articles/2943093-detailed-action-log/index.html new file mode 100644 index 00000000..44d15bed --- /dev/null +++ b/customer/en/portal/articles/2943093-detailed-action-log/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/detailed-action-log/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2943093/index.html b/customer/en/portal/articles/2943093/index.html new file mode 100644 index 00000000..44d15bed --- /dev/null +++ b/customer/en/portal/articles/2943093/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/detailed-action-log/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2945778-report-survey-statistics/index.html b/customer/en/portal/articles/2945778-report-survey-statistics/index.html new file mode 100644 index 00000000..752ad1b6 --- /dev/null +++ b/customer/en/portal/articles/2945778-report-survey-statistics/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/report-survey-statistics/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2945778/index.html b/customer/en/portal/articles/2945778/index.html new file mode 100644 index 00000000..752ad1b6 --- /dev/null +++ b/customer/en/portal/articles/2945778/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/report-survey-statistics/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2946079-date-and-time-formats/index.html b/customer/en/portal/articles/2946079-date-and-time-formats/index.html new file mode 100644 index 00000000..742ddcf3 --- /dev/null +++ b/customer/en/portal/articles/2946079-date-and-time-formats/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/date-and-time-formats/ + \ No newline at end of file diff --git a/customer/en/portal/articles/2946079/index.html b/customer/en/portal/articles/2946079/index.html new file mode 100644 index 00000000..742ddcf3 --- /dev/null +++ b/customer/en/portal/articles/2946079/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/date-and-time-formats/ + \ No newline at end of file diff --git a/customer/en/portal/topics/1059496-release-notes/articles/index.html b/customer/en/portal/topics/1059496-release-notes/articles/index.html new file mode 100644 index 00000000..266bab91 --- /dev/null +++ b/customer/en/portal/topics/1059496-release-notes/articles/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/ + \ No newline at end of file diff --git a/customer/en/portal/topics/1113228-syntax-guide/articles/index.html b/customer/en/portal/topics/1113228-syntax-guide/articles/index.html new file mode 100644 index 00000000..90ef266e --- /dev/null +++ b/customer/en/portal/topics/1113228-syntax-guide/articles/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/ + \ No newline at end of file diff --git a/customer/en/portal/topics/910119-getting-started/articles/index.html b/customer/en/portal/topics/910119-getting-started/articles/index.html new file mode 100644 index 00000000..19d5a9e1 --- /dev/null +++ b/customer/en/portal/topics/910119-getting-started/articles/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/ + \ No newline at end of file diff --git a/customer/en/portal/topics/952855-questionnaire-designer/articles/index.html b/customer/en/portal/topics/952855-questionnaire-designer/articles/index.html new file mode 100644 index 00000000..63b20c10 --- /dev/null +++ b/customer/en/portal/topics/952855-questionnaire-designer/articles/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/ + \ No newline at end of file diff --git a/customer/en/portal/topics/953694-headquarters/articles/index.html b/customer/en/portal/topics/953694-headquarters/articles/index.html new file mode 100644 index 00000000..4844a35a --- /dev/null +++ b/customer/en/portal/topics/953694-headquarters/articles/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/ + \ No newline at end of file diff --git a/customer/en/portal/topics/954155-interviewer/articles/index.html b/customer/en/portal/topics/954155-interviewer/articles/index.html new file mode 100644 index 00000000..94d24cc3 --- /dev/null +++ b/customer/en/portal/topics/954155-interviewer/articles/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/ + \ No newline at end of file diff --git a/customer/en/portal/topics/962087-faq/articles/index.html b/customer/en/portal/topics/962087-faq/articles/index.html new file mode 100644 index 00000000..776a03c0 --- /dev/null +++ b/customer/en/portal/topics/962087-faq/articles/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/ + \ No newline at end of file diff --git a/customer/en/portal/topics/962094-supervisor/articles/index.html b/customer/en/portal/topics/962094-supervisor/articles/index.html new file mode 100644 index 00000000..057ac56a --- /dev/null +++ b/customer/en/portal/topics/962094-supervisor/articles/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/ + \ No newline at end of file diff --git a/customer/en/portal/topics/972218-user-questions/articles/index.html b/customer/en/portal/topics/972218-user-questions/articles/index.html new file mode 100644 index 00000000..2d7cb70d --- /dev/null +++ b/customer/en/portal/topics/972218-user-questions/articles/index.html @@ -0,0 +1 @@ +https://forum.mysurvey.solutions/ \ No newline at end of file diff --git a/customer/en/portal/topics/972218-user-questions/questions/index.html b/customer/en/portal/topics/972218-user-questions/questions/index.html new file mode 100644 index 00000000..2d7cb70d --- /dev/null +++ b/customer/en/portal/topics/972218-user-questions/questions/index.html @@ -0,0 +1 @@ +https://forum.mysurvey.solutions/ \ No newline at end of file diff --git a/customer/portal/articles/2464651-registration-and-signing-in-/index.html b/customer/portal/articles/2464651-registration-and-signing-in-/index.html new file mode 100644 index 00000000..52c1c73f --- /dev/null +++ b/customer/portal/articles/2464651-registration-and-signing-in-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/registration-and-signing-in/ + \ No newline at end of file diff --git a/customer/portal/articles/2464651/index.html b/customer/portal/articles/2464651/index.html new file mode 100644 index 00000000..52c1c73f --- /dev/null +++ b/customer/portal/articles/2464651/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/registration-and-signing-in/ + \ No newline at end of file diff --git a/customer/portal/articles/2464762-questionnaire-designer-homepage/index.html b/customer/portal/articles/2464762-questionnaire-designer-homepage/index.html new file mode 100644 index 00000000..4d0c26cc --- /dev/null +++ b/customer/portal/articles/2464762-questionnaire-designer-homepage/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/questionnaire-designer-homepage/ + \ No newline at end of file diff --git a/customer/portal/articles/2464762/index.html b/customer/portal/articles/2464762/index.html new file mode 100644 index 00000000..4d0c26cc --- /dev/null +++ b/customer/portal/articles/2464762/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/questionnaire-designer-homepage/ + \ No newline at end of file diff --git a/customer/portal/articles/2465740-questionnaire-edit-screen/index.html b/customer/portal/articles/2465740-questionnaire-edit-screen/index.html new file mode 100644 index 00000000..7c5da2f7 --- /dev/null +++ b/customer/portal/articles/2465740-questionnaire-edit-screen/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/questionnaire-edit-screen/ + \ No newline at end of file diff --git a/customer/portal/articles/2465740/index.html b/customer/portal/articles/2465740/index.html new file mode 100644 index 00000000..7c5da2f7 --- /dev/null +++ b/customer/portal/articles/2465740/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/questionnaire-edit-screen/ + \ No newline at end of file diff --git a/customer/portal/articles/2465868-panel-of-advanced-instruments/index.html b/customer/portal/articles/2465868-panel-of-advanced-instruments/index.html new file mode 100644 index 00000000..c8a12c0d --- /dev/null +++ b/customer/portal/articles/2465868-panel-of-advanced-instruments/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/panel-of-advanced-instruments/ + \ No newline at end of file diff --git a/customer/portal/articles/2465868/index.html b/customer/portal/articles/2465868/index.html new file mode 100644 index 00000000..c8a12c0d --- /dev/null +++ b/customer/portal/articles/2465868/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/panel-of-advanced-instruments/ + \ No newline at end of file diff --git a/customer/portal/articles/2465929-settings/index.html b/customer/portal/articles/2465929-settings/index.html new file mode 100644 index 00000000..f6563768 --- /dev/null +++ b/customer/portal/articles/2465929-settings/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/settings/ + \ No newline at end of file diff --git a/customer/portal/articles/2465929/index.html b/customer/portal/articles/2465929/index.html new file mode 100644 index 00000000..f6563768 --- /dev/null +++ b/customer/portal/articles/2465929/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/settings/ + \ No newline at end of file diff --git a/customer/portal/articles/2466057-recent-changes-to-the-questionnaire/index.html b/customer/portal/articles/2466057-recent-changes-to-the-questionnaire/index.html new file mode 100644 index 00000000..21b6df32 --- /dev/null +++ b/customer/portal/articles/2466057-recent-changes-to-the-questionnaire/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/recent-changes-to-the-questionnaire/ + \ No newline at end of file diff --git a/customer/portal/articles/2466057/index.html b/customer/portal/articles/2466057/index.html new file mode 100644 index 00000000..21b6df32 --- /dev/null +++ b/customer/portal/articles/2466057/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/recent-changes-to-the-questionnaire/ + \ No newline at end of file diff --git a/customer/portal/articles/2466061-compile/index.html b/customer/portal/articles/2466061-compile/index.html new file mode 100644 index 00000000..3b09bfc7 --- /dev/null +++ b/customer/portal/articles/2466061-compile/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/compile/ + \ No newline at end of file diff --git a/customer/portal/articles/2466061/index.html b/customer/portal/articles/2466061/index.html new file mode 100644 index 00000000..3b09bfc7 --- /dev/null +++ b/customer/portal/articles/2466061/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/compile/ + \ No newline at end of file diff --git a/customer/portal/articles/2466173-questionnaire-attachments/index.html b/customer/portal/articles/2466173-questionnaire-attachments/index.html new file mode 100644 index 00000000..33459b81 --- /dev/null +++ b/customer/portal/articles/2466173-questionnaire-attachments/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/questionnaire-attachments/ + \ No newline at end of file diff --git a/customer/portal/articles/2466173/index.html b/customer/portal/articles/2466173/index.html new file mode 100644 index 00000000..33459b81 --- /dev/null +++ b/customer/portal/articles/2466173/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/questionnaire-attachments/ + \ No newline at end of file diff --git a/customer/portal/articles/2466213-macros/index.html b/customer/portal/articles/2466213-macros/index.html new file mode 100644 index 00000000..e871015c --- /dev/null +++ b/customer/portal/articles/2466213-macros/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/macros/ + \ No newline at end of file diff --git a/customer/portal/articles/2466213/index.html b/customer/portal/articles/2466213/index.html new file mode 100644 index 00000000..e871015c --- /dev/null +++ b/customer/portal/articles/2466213/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/macros/ + \ No newline at end of file diff --git a/customer/portal/articles/2466827-changing-the-interface-language/index.html b/customer/portal/articles/2466827-changing-the-interface-language/index.html new file mode 100644 index 00000000..d867cea3 --- /dev/null +++ b/customer/portal/articles/2466827-changing-the-interface-language/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/changing-the-interface-language/ + \ No newline at end of file diff --git a/customer/portal/articles/2466827/index.html b/customer/portal/articles/2466827/index.html new file mode 100644 index 00000000..d867cea3 --- /dev/null +++ b/customer/portal/articles/2466827/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/changing-the-interface-language/ + \ No newline at end of file diff --git a/customer/portal/articles/2466966-lookup-tables/index.html b/customer/portal/articles/2466966-lookup-tables/index.html new file mode 100644 index 00000000..0974b068 --- /dev/null +++ b/customer/portal/articles/2466966-lookup-tables/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/lookup-tables/ + \ No newline at end of file diff --git a/customer/portal/articles/2466966/index.html b/customer/portal/articles/2466966/index.html new file mode 100644 index 00000000..0974b068 --- /dev/null +++ b/customer/portal/articles/2466966/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/lookup-tables/ + \ No newline at end of file diff --git a/customer/portal/articles/2467041-questionnaire-components-/index.html b/customer/portal/articles/2467041-questionnaire-components-/index.html new file mode 100644 index 00000000..6e965152 --- /dev/null +++ b/customer/portal/articles/2467041-questionnaire-components-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/questionnaire-components-/ + \ No newline at end of file diff --git a/customer/portal/articles/2467041/index.html b/customer/portal/articles/2467041/index.html new file mode 100644 index 00000000..6e965152 --- /dev/null +++ b/customer/portal/articles/2467041/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/questionnaire-components-/ + \ No newline at end of file diff --git a/customer/portal/articles/2467280-create-and-modify-components-/index.html b/customer/portal/articles/2467280-create-and-modify-components-/index.html new file mode 100644 index 00000000..4620fd21 --- /dev/null +++ b/customer/portal/articles/2467280-create-and-modify-components-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/create-and-modify-components-/ + \ No newline at end of file diff --git a/customer/portal/articles/2467280/index.html b/customer/portal/articles/2467280/index.html new file mode 100644 index 00000000..4620fd21 --- /dev/null +++ b/customer/portal/articles/2467280/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/create-and-modify-components-/ + \ No newline at end of file diff --git a/customer/portal/articles/2467364-variables/index.html b/customer/portal/articles/2467364-variables/index.html new file mode 100644 index 00000000..7519eb8b --- /dev/null +++ b/customer/portal/articles/2467364-variables/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/variables/ + \ No newline at end of file diff --git a/customer/portal/articles/2467364/index.html b/customer/portal/articles/2467364/index.html new file mode 100644 index 00000000..7519eb8b --- /dev/null +++ b/customer/portal/articles/2467364/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/variables/ + \ No newline at end of file diff --git a/customer/portal/articles/2467518-general-component-properties/index.html b/customer/portal/articles/2467518-general-component-properties/index.html new file mode 100644 index 00000000..043284fd --- /dev/null +++ b/customer/portal/articles/2467518-general-component-properties/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/general-component-properties/ + \ No newline at end of file diff --git a/customer/portal/articles/2467518/index.html b/customer/portal/articles/2467518/index.html new file mode 100644 index 00000000..043284fd --- /dev/null +++ b/customer/portal/articles/2467518/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/general-component-properties/ + \ No newline at end of file diff --git a/customer/portal/articles/2468340-question-scope-/index.html b/customer/portal/articles/2468340-question-scope-/index.html new file mode 100644 index 00000000..e4435b7a --- /dev/null +++ b/customer/portal/articles/2468340-question-scope-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/question-scope-/ + \ No newline at end of file diff --git a/customer/portal/articles/2468340/index.html b/customer/portal/articles/2468340/index.html new file mode 100644 index 00000000..e4435b7a --- /dev/null +++ b/customer/portal/articles/2468340/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/question-scope-/ + \ No newline at end of file diff --git a/customer/portal/articles/2468455-text-question/index.html b/customer/portal/articles/2468455-text-question/index.html new file mode 100644 index 00000000..8d7dd9ea --- /dev/null +++ b/customer/portal/articles/2468455-text-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/text-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2468455/index.html b/customer/portal/articles/2468455/index.html new file mode 100644 index 00000000..8d7dd9ea --- /dev/null +++ b/customer/portal/articles/2468455/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/text-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2468719-numeric-question/index.html b/customer/portal/articles/2468719-numeric-question/index.html new file mode 100644 index 00000000..b9010111 --- /dev/null +++ b/customer/portal/articles/2468719-numeric-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/numeric-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2468719/index.html b/customer/portal/articles/2468719/index.html new file mode 100644 index 00000000..b9010111 --- /dev/null +++ b/customer/portal/articles/2468719/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/numeric-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2469077-date-question/index.html b/customer/portal/articles/2469077-date-question/index.html new file mode 100644 index 00000000..f424c0a7 --- /dev/null +++ b/customer/portal/articles/2469077-date-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/date-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2469077/index.html b/customer/portal/articles/2469077/index.html new file mode 100644 index 00000000..f424c0a7 --- /dev/null +++ b/customer/portal/articles/2469077/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/date-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2469082-list-question/index.html b/customer/portal/articles/2469082-list-question/index.html new file mode 100644 index 00000000..47b025c1 --- /dev/null +++ b/customer/portal/articles/2469082-list-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/list-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2469082/index.html b/customer/portal/articles/2469082/index.html new file mode 100644 index 00000000..47b025c1 --- /dev/null +++ b/customer/portal/articles/2469082/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/list-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2469100-gps-question/index.html b/customer/portal/articles/2469100-gps-question/index.html new file mode 100644 index 00000000..97fc4483 --- /dev/null +++ b/customer/portal/articles/2469100-gps-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/gps-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2469100/index.html b/customer/portal/articles/2469100/index.html new file mode 100644 index 00000000..97fc4483 --- /dev/null +++ b/customer/portal/articles/2469100/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/gps-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2469108-barcode-question/index.html b/customer/portal/articles/2469108-barcode-question/index.html new file mode 100644 index 00000000..f67c3cd5 --- /dev/null +++ b/customer/portal/articles/2469108-barcode-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/barcode-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2469108/index.html b/customer/portal/articles/2469108/index.html new file mode 100644 index 00000000..f67c3cd5 --- /dev/null +++ b/customer/portal/articles/2469108/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/barcode-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2469927-picture-question/index.html b/customer/portal/articles/2469927-picture-question/index.html new file mode 100644 index 00000000..18365817 --- /dev/null +++ b/customer/portal/articles/2469927-picture-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/picture-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2469927/index.html b/customer/portal/articles/2469927/index.html new file mode 100644 index 00000000..18365817 --- /dev/null +++ b/customer/portal/articles/2469927/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/picture-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2470037-categorical-single-select-question/index.html b/customer/portal/articles/2470037-categorical-single-select-question/index.html new file mode 100644 index 00000000..db02b68b --- /dev/null +++ b/customer/portal/articles/2470037-categorical-single-select-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/categorical-single-select-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2470037/index.html b/customer/portal/articles/2470037/index.html new file mode 100644 index 00000000..db02b68b --- /dev/null +++ b/customer/portal/articles/2470037/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/categorical-single-select-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2471008-static-text/index.html b/customer/portal/articles/2471008-static-text/index.html new file mode 100644 index 00000000..889e97e5 --- /dev/null +++ b/customer/portal/articles/2471008-static-text/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/static-text/ + \ No newline at end of file diff --git a/customer/portal/articles/2471008/index.html b/customer/portal/articles/2471008/index.html new file mode 100644 index 00000000..889e97e5 --- /dev/null +++ b/customer/portal/articles/2471008/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/static-text/ + \ No newline at end of file diff --git a/customer/portal/articles/2471763-categorical-multi-select-question/index.html b/customer/portal/articles/2471763-categorical-multi-select-question/index.html new file mode 100644 index 00000000..4bb99c19 --- /dev/null +++ b/customer/portal/articles/2471763-categorical-multi-select-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/categorical-multi-select-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2471763/index.html b/customer/portal/articles/2471763/index.html new file mode 100644 index 00000000..4bb99c19 --- /dev/null +++ b/customer/portal/articles/2471763/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/categorical-multi-select-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2472543-rosters/index.html b/customer/portal/articles/2472543-rosters/index.html new file mode 100644 index 00000000..d7f60516 --- /dev/null +++ b/customer/portal/articles/2472543-rosters/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/rosters/ + \ No newline at end of file diff --git a/customer/portal/articles/2472543/index.html b/customer/portal/articles/2472543/index.html new file mode 100644 index 00000000..d7f60516 --- /dev/null +++ b/customer/portal/articles/2472543/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/components/rosters/ + \ No newline at end of file diff --git a/customer/portal/articles/2473782-formatting-text/index.html b/customer/portal/articles/2473782-formatting-text/index.html new file mode 100644 index 00000000..13477a8b --- /dev/null +++ b/customer/portal/articles/2473782-formatting-text/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/formatting-text/ + \ No newline at end of file diff --git a/customer/portal/articles/2473782/index.html b/customer/portal/articles/2473782/index.html new file mode 100644 index 00000000..13477a8b --- /dev/null +++ b/customer/portal/articles/2473782/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/formatting-text/ + \ No newline at end of file diff --git a/customer/portal/articles/2473898-pdf-export-/index.html b/customer/portal/articles/2473898-pdf-export-/index.html new file mode 100644 index 00000000..539cdf1a --- /dev/null +++ b/customer/portal/articles/2473898-pdf-export-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/pdf-export-/ + \ No newline at end of file diff --git a/customer/portal/articles/2473898/index.html b/customer/portal/articles/2473898/index.html new file mode 100644 index 00000000..539cdf1a --- /dev/null +++ b/customer/portal/articles/2473898/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/pdf-export-/ + \ No newline at end of file diff --git a/customer/portal/articles/2475216-download-and-install-the-interviewer-application/index.html b/customer/portal/articles/2475216-download-and-install-the-interviewer-application/index.html new file mode 100644 index 00000000..e6431deb --- /dev/null +++ b/customer/portal/articles/2475216-download-and-install-the-interviewer-application/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/download-and-install-the-interviewer-application/ + \ No newline at end of file diff --git a/customer/portal/articles/2475216/index.html b/customer/portal/articles/2475216/index.html new file mode 100644 index 00000000..e6431deb --- /dev/null +++ b/customer/portal/articles/2475216/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/download-and-install-the-interviewer-application/ + \ No newline at end of file diff --git a/customer/portal/articles/2475783-synchronization-completing-the-interview/index.html b/customer/portal/articles/2475783-synchronization-completing-the-interview/index.html new file mode 100644 index 00000000..faed3d03 --- /dev/null +++ b/customer/portal/articles/2475783-synchronization-completing-the-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/synchronization-completing-the-interview/ + \ No newline at end of file diff --git a/customer/portal/articles/2475783/index.html b/customer/portal/articles/2475783/index.html new file mode 100644 index 00000000..faed3d03 --- /dev/null +++ b/customer/portal/articles/2475783/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/synchronization-completing-the-interview/ + \ No newline at end of file diff --git a/customer/portal/articles/2478506-uploading-many-assignments-at-a-time/index.html b/customer/portal/articles/2478506-uploading-many-assignments-at-a-time/index.html new file mode 100644 index 00000000..4308b331 --- /dev/null +++ b/customer/portal/articles/2478506-uploading-many-assignments-at-a-time/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/uploading-many-assignments-at-a-time/ + \ No newline at end of file diff --git a/customer/portal/articles/2478506/index.html b/customer/portal/articles/2478506/index.html new file mode 100644 index 00000000..4308b331 --- /dev/null +++ b/customer/portal/articles/2478506/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/uploading-many-assignments-at-a-time/ + \ No newline at end of file diff --git a/customer/portal/articles/2479498-distributing-assignments-to-interviewers/index.html b/customer/portal/articles/2479498-distributing-assignments-to-interviewers/index.html new file mode 100644 index 00000000..6e4cbb37 --- /dev/null +++ b/customer/portal/articles/2479498-distributing-assignments-to-interviewers/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/distributing-assignments-to-interviewers/ + \ No newline at end of file diff --git a/customer/portal/articles/2479498/index.html b/customer/portal/articles/2479498/index.html new file mode 100644 index 00000000..6e4cbb37 --- /dev/null +++ b/customer/portal/articles/2479498/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/distributing-assignments-to-interviewers/ + \ No newline at end of file diff --git a/customer/portal/articles/2479545-supervisor-browsing-the-completed-interview/index.html b/customer/portal/articles/2479545-supervisor-browsing-the-completed-interview/index.html new file mode 100644 index 00000000..cb245763 --- /dev/null +++ b/customer/portal/articles/2479545-supervisor-browsing-the-completed-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/supervisor-browsing-the-completed-interview/ + \ No newline at end of file diff --git a/customer/portal/articles/2479545/index.html b/customer/portal/articles/2479545/index.html new file mode 100644 index 00000000..cb245763 --- /dev/null +++ b/customer/portal/articles/2479545/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/supervisor-browsing-the-completed-interview/ + \ No newline at end of file diff --git a/customer/portal/articles/2481286-components-of-the-headquarters-software/index.html b/customer/portal/articles/2481286-components-of-the-headquarters-software/index.html new file mode 100644 index 00000000..22a14f8e --- /dev/null +++ b/customer/portal/articles/2481286-components-of-the-headquarters-software/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/components-of-the-headquarters-software/ + \ No newline at end of file diff --git a/customer/portal/articles/2481286/index.html b/customer/portal/articles/2481286/index.html new file mode 100644 index 00000000..22a14f8e --- /dev/null +++ b/customer/portal/articles/2481286/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/components-of-the-headquarters-software/ + \ No newline at end of file diff --git a/customer/portal/articles/2481526-survey-workflow/index.html b/customer/portal/articles/2481526-survey-workflow/index.html new file mode 100644 index 00000000..d72e9009 --- /dev/null +++ b/customer/portal/articles/2481526-survey-workflow/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/survey-workflow/ + \ No newline at end of file diff --git a/customer/portal/articles/2481526/index.html b/customer/portal/articles/2481526/index.html new file mode 100644 index 00000000..d72e9009 --- /dev/null +++ b/customer/portal/articles/2481526/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/survey-workflow/ + \ No newline at end of file diff --git a/customer/portal/articles/2481544-reports-tab-track-the-overall-progress-of-the-survey/index.html b/customer/portal/articles/2481544-reports-tab-track-the-overall-progress-of-the-survey/index.html new file mode 100644 index 00000000..1817aa3f --- /dev/null +++ b/customer/portal/articles/2481544-reports-tab-track-the-overall-progress-of-the-survey/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/ + \ No newline at end of file diff --git a/customer/portal/articles/2481544/index.html b/customer/portal/articles/2481544/index.html new file mode 100644 index 00000000..1817aa3f --- /dev/null +++ b/customer/portal/articles/2481544/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/ + \ No newline at end of file diff --git a/customer/portal/articles/2482221-interview-tab-how-to-find-review-and-delete-survey-cases-/index.html b/customer/portal/articles/2482221-interview-tab-how-to-find-review-and-delete-survey-cases-/index.html new file mode 100644 index 00000000..13187ce2 --- /dev/null +++ b/customer/portal/articles/2482221-interview-tab-how-to-find-review-and-delete-survey-cases-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/ + \ No newline at end of file diff --git a/customer/portal/articles/2482221/index.html b/customer/portal/articles/2482221/index.html new file mode 100644 index 00000000..13187ce2 --- /dev/null +++ b/customer/portal/articles/2482221/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/ + \ No newline at end of file diff --git a/customer/portal/articles/2482233-teams-and-roles-tab-creating-user-accounts-/index.html b/customer/portal/articles/2482233-teams-and-roles-tab-creating-user-accounts-/index.html new file mode 100644 index 00000000..ed96edbb --- /dev/null +++ b/customer/portal/articles/2482233-teams-and-roles-tab-creating-user-accounts-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/ + \ No newline at end of file diff --git a/customer/portal/articles/2482233/index.html b/customer/portal/articles/2482233/index.html new file mode 100644 index 00000000..ed96edbb --- /dev/null +++ b/customer/portal/articles/2482233/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/ + \ No newline at end of file diff --git a/customer/portal/articles/2483438-batch-user-upload/index.html b/customer/portal/articles/2483438-batch-user-upload/index.html new file mode 100644 index 00000000..1d9ec012 --- /dev/null +++ b/customer/portal/articles/2483438-batch-user-upload/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/batch-user-upload/ + \ No newline at end of file diff --git a/customer/portal/articles/2483438/index.html b/customer/portal/articles/2483438/index.html new file mode 100644 index 00000000..1d9ec012 --- /dev/null +++ b/customer/portal/articles/2483438/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/batch-user-upload/ + \ No newline at end of file diff --git a/customer/portal/articles/2494108-data-export-tab/index.html b/customer/portal/articles/2494108-data-export-tab/index.html new file mode 100644 index 00000000..9a11b537 --- /dev/null +++ b/customer/portal/articles/2494108-data-export-tab/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-tab/ + \ No newline at end of file diff --git a/customer/portal/articles/2494108/index.html b/customer/portal/articles/2494108/index.html new file mode 100644 index 00000000..9a11b537 --- /dev/null +++ b/customer/portal/articles/2494108/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-tab/ + \ No newline at end of file diff --git a/customer/portal/articles/2494346-components-of-the-supervisor-software/index.html b/customer/portal/articles/2494346-components-of-the-supervisor-software/index.html new file mode 100644 index 00000000..3ff40103 --- /dev/null +++ b/customer/portal/articles/2494346-components-of-the-supervisor-software/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/components-of-the-supervisor-software/ + \ No newline at end of file diff --git a/customer/portal/articles/2494346/index.html b/customer/portal/articles/2494346/index.html new file mode 100644 index 00000000..3ff40103 --- /dev/null +++ b/customer/portal/articles/2494346/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/components-of-the-supervisor-software/ + \ No newline at end of file diff --git a/customer/portal/articles/2494367-find-an-interview/index.html b/customer/portal/articles/2494367-find-an-interview/index.html new file mode 100644 index 00000000..7e2d3bbe --- /dev/null +++ b/customer/portal/articles/2494367-find-an-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/find-an-interview/ + \ No newline at end of file diff --git a/customer/portal/articles/2494367/index.html b/customer/portal/articles/2494367/index.html new file mode 100644 index 00000000..7e2d3bbe --- /dev/null +++ b/customer/portal/articles/2494367/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/find-an-interview/ + \ No newline at end of file diff --git a/customer/portal/articles/2495547-review-an-interview/index.html b/customer/portal/articles/2495547-review-an-interview/index.html new file mode 100644 index 00000000..675b63ff --- /dev/null +++ b/customer/portal/articles/2495547-review-an-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/review-an-interview/ + \ No newline at end of file diff --git a/customer/portal/articles/2495547/index.html b/customer/portal/articles/2495547/index.html new file mode 100644 index 00000000..675b63ff --- /dev/null +++ b/customer/portal/articles/2495547/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/review-an-interview/ + \ No newline at end of file diff --git a/customer/portal/articles/2495621-see-the-overall-progress-of-data-collection/index.html b/customer/portal/articles/2495621-see-the-overall-progress-of-data-collection/index.html new file mode 100644 index 00000000..edd841f9 --- /dev/null +++ b/customer/portal/articles/2495621-see-the-overall-progress-of-data-collection/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/see-the-overall-progress-of-data-collection/ + \ No newline at end of file diff --git a/customer/portal/articles/2495621/index.html b/customer/portal/articles/2495621/index.html new file mode 100644 index 00000000..edd841f9 --- /dev/null +++ b/customer/portal/articles/2495621/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/see-the-overall-progress-of-data-collection/ + \ No newline at end of file diff --git a/customer/portal/articles/2495731-manage-interviewer-accounts/index.html b/customer/portal/articles/2495731-manage-interviewer-accounts/index.html new file mode 100644 index 00000000..7cad9d15 --- /dev/null +++ b/customer/portal/articles/2495731-manage-interviewer-accounts/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/manage-interviewer-accounts/ + \ No newline at end of file diff --git a/customer/portal/articles/2495731/index.html b/customer/portal/articles/2495731/index.html new file mode 100644 index 00000000..7cad9d15 --- /dev/null +++ b/customer/portal/articles/2495731/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/manage-interviewer-accounts/ + \ No newline at end of file diff --git a/customer/portal/articles/2497002-interface-localization/index.html b/customer/portal/articles/2497002-interface-localization/index.html new file mode 100644 index 00000000..760cfd02 --- /dev/null +++ b/customer/portal/articles/2497002-interface-localization/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/interface-localization/ + \ No newline at end of file diff --git a/customer/portal/articles/2497002/index.html b/customer/portal/articles/2497002/index.html new file mode 100644 index 00000000..760cfd02 --- /dev/null +++ b/customer/portal/articles/2497002/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/interface-localization/ + \ No newline at end of file diff --git a/customer/portal/articles/2497110-questionnaire-interface-answering-questions/index.html b/customer/portal/articles/2497110-questionnaire-interface-answering-questions/index.html new file mode 100644 index 00000000..6de6b8bf --- /dev/null +++ b/customer/portal/articles/2497110-questionnaire-interface-answering-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/questionnaire-interface-answering-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2497110/index.html b/customer/portal/articles/2497110/index.html new file mode 100644 index 00000000..6de6b8bf --- /dev/null +++ b/customer/portal/articles/2497110/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/questionnaire-interface-answering-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2497877-answering-all-question-types/index.html b/customer/portal/articles/2497877-answering-all-question-types/index.html new file mode 100644 index 00000000..5a012f68 --- /dev/null +++ b/customer/portal/articles/2497877-answering-all-question-types/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/answering-all-question-types/ + \ No newline at end of file diff --git a/customer/portal/articles/2497877/index.html b/customer/portal/articles/2497877/index.html new file mode 100644 index 00000000..5a012f68 --- /dev/null +++ b/customer/portal/articles/2497877/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/answering-all-question-types/ + \ No newline at end of file diff --git a/customer/portal/articles/2498059-comments/index.html b/customer/portal/articles/2498059-comments/index.html new file mode 100644 index 00000000..5aea4a45 --- /dev/null +++ b/customer/portal/articles/2498059-comments/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/comments/ + \ No newline at end of file diff --git a/customer/portal/articles/2498059/index.html b/customer/portal/articles/2498059/index.html new file mode 100644 index 00000000..5aea4a45 --- /dev/null +++ b/customer/portal/articles/2498059/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/comments/ + \ No newline at end of file diff --git a/customer/portal/articles/2498177-moving-around-the-questionnaire-/index.html b/customer/portal/articles/2498177-moving-around-the-questionnaire-/index.html new file mode 100644 index 00000000..85bdfdf5 --- /dev/null +++ b/customer/portal/articles/2498177-moving-around-the-questionnaire-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/moving-around-the-questionnaire-/ + \ No newline at end of file diff --git a/customer/portal/articles/2498177/index.html b/customer/portal/articles/2498177/index.html new file mode 100644 index 00000000..85bdfdf5 --- /dev/null +++ b/customer/portal/articles/2498177/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/moving-around-the-questionnaire-/ + \ No newline at end of file diff --git a/customer/portal/articles/2498212-quality-control-marking-interviews-as-complete-/index.html b/customer/portal/articles/2498212-quality-control-marking-interviews-as-complete-/index.html new file mode 100644 index 00000000..84fd51e3 --- /dev/null +++ b/customer/portal/articles/2498212-quality-control-marking-interviews-as-complete-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/quality-control-marking-interviews-as-complete-/ + \ No newline at end of file diff --git a/customer/portal/articles/2498212/index.html b/customer/portal/articles/2498212/index.html new file mode 100644 index 00000000..84fd51e3 --- /dev/null +++ b/customer/portal/articles/2498212/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/quality-control-marking-interviews-as-complete-/ + \ No newline at end of file diff --git a/customer/portal/articles/2498915-synchronization/index.html b/customer/portal/articles/2498915-synchronization/index.html new file mode 100644 index 00000000..51efaee3 --- /dev/null +++ b/customer/portal/articles/2498915-synchronization/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/synchronization/ + \ No newline at end of file diff --git a/customer/portal/articles/2498915/index.html b/customer/portal/articles/2498915/index.html new file mode 100644 index 00000000..51efaee3 --- /dev/null +++ b/customer/portal/articles/2498915/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/synchronization/ + \ No newline at end of file diff --git a/customer/portal/articles/2498928-troubleshooting/index.html b/customer/portal/articles/2498928-troubleshooting/index.html new file mode 100644 index 00000000..d5bd380f --- /dev/null +++ b/customer/portal/articles/2498928-troubleshooting/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/troubleshooting/ + \ No newline at end of file diff --git a/customer/portal/articles/2498928/index.html b/customer/portal/articles/2498928/index.html new file mode 100644 index 00000000..d5bd380f --- /dev/null +++ b/customer/portal/articles/2498928/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/troubleshooting/ + \ No newline at end of file diff --git a/customer/portal/articles/2502601-headquarters-user-browsing-the-completed-interview/index.html b/customer/portal/articles/2502601-headquarters-user-browsing-the-completed-interview/index.html new file mode 100644 index 00000000..30e630f7 --- /dev/null +++ b/customer/portal/articles/2502601-headquarters-user-browsing-the-completed-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/headquarters-user-browsing-the-completed-interview/ + \ No newline at end of file diff --git a/customer/portal/articles/2502601/index.html b/customer/portal/articles/2502601/index.html new file mode 100644 index 00000000..30e630f7 --- /dev/null +++ b/customer/portal/articles/2502601/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/headquarters-user-browsing-the-completed-interview/ + \ No newline at end of file diff --git a/customer/portal/articles/2505348-testing-your-questionnaires-using-the-tester-application/index.html b/customer/portal/articles/2505348-testing-your-questionnaires-using-the-tester-application/index.html new file mode 100644 index 00000000..6d4a3837 --- /dev/null +++ b/customer/portal/articles/2505348-testing-your-questionnaires-using-the-tester-application/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/testing/testing-your-questionnaires-using-the-tester-application/ + \ No newline at end of file diff --git a/customer/portal/articles/2505348/index.html b/customer/portal/articles/2505348/index.html new file mode 100644 index 00000000..6d4a3837 --- /dev/null +++ b/customer/portal/articles/2505348/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/testing/testing-your-questionnaires-using-the-tester-application/ + \ No newline at end of file diff --git a/customer/portal/articles/2505822-what-tablets-should-i-buy-/index.html b/customer/portal/articles/2505822-what-tablets-should-i-buy-/index.html new file mode 100644 index 00000000..80a75710 --- /dev/null +++ b/customer/portal/articles/2505822-what-tablets-should-i-buy-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-tablets-should-i-buy-/ + \ No newline at end of file diff --git a/customer/portal/articles/2505822/index.html b/customer/portal/articles/2505822/index.html new file mode 100644 index 00000000..80a75710 --- /dev/null +++ b/customer/portal/articles/2505822/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-tablets-should-i-buy-/ + \ No newline at end of file diff --git a/customer/portal/articles/2507726-how-much-does-survey-solutions-cost-/index.html b/customer/portal/articles/2507726-how-much-does-survey-solutions-cost-/index.html new file mode 100644 index 00000000..369c5ab1 --- /dev/null +++ b/customer/portal/articles/2507726-how-much-does-survey-solutions-cost-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-much-does-survey-solutions-cost-/ + \ No newline at end of file diff --git a/customer/portal/articles/2507726/index.html b/customer/portal/articles/2507726/index.html new file mode 100644 index 00000000..369c5ab1 --- /dev/null +++ b/customer/portal/articles/2507726/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-much-does-survey-solutions-cost-/ + \ No newline at end of file diff --git a/customer/portal/articles/2507731-how-can-i-try-out-survey-solutions-/index.html b/customer/portal/articles/2507731-how-can-i-try-out-survey-solutions-/index.html new file mode 100644 index 00000000..247e8a7b --- /dev/null +++ b/customer/portal/articles/2507731-how-can-i-try-out-survey-solutions-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-can-i-try-out-survey-solutions-/ + \ No newline at end of file diff --git a/customer/portal/articles/2507731/index.html b/customer/portal/articles/2507731/index.html new file mode 100644 index 00000000..247e8a7b --- /dev/null +++ b/customer/portal/articles/2507731/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-can-i-try-out-survey-solutions-/ + \ No newline at end of file diff --git a/customer/portal/articles/2531232-data-types/index.html b/customer/portal/articles/2531232-data-types/index.html new file mode 100644 index 00000000..f412699c --- /dev/null +++ b/customer/portal/articles/2531232-data-types/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/data-types/ + \ No newline at end of file diff --git a/customer/portal/articles/2531232/index.html b/customer/portal/articles/2531232/index.html new file mode 100644 index 00000000..f412699c --- /dev/null +++ b/customer/portal/articles/2531232/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/data-types/ + \ No newline at end of file diff --git a/customer/portal/articles/2531548-dealing-with-exceptions/index.html b/customer/portal/articles/2531548-dealing-with-exceptions/index.html new file mode 100644 index 00000000..385fa699 --- /dev/null +++ b/customer/portal/articles/2531548-dealing-with-exceptions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/dealing-with-exceptions/ + \ No newline at end of file diff --git a/customer/portal/articles/2531548/index.html b/customer/portal/articles/2531548/index.html new file mode 100644 index 00000000..385fa699 --- /dev/null +++ b/customer/portal/articles/2531548/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/dealing-with-exceptions/ + \ No newline at end of file diff --git a/customer/portal/articles/2537453-syntax-guide-operators/index.html b/customer/portal/articles/2537453-syntax-guide-operators/index.html new file mode 100644 index 00000000..d1733fe0 --- /dev/null +++ b/customer/portal/articles/2537453-syntax-guide-operators/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/syntax-guide-operators/ + \ No newline at end of file diff --git a/customer/portal/articles/2537453/index.html b/customer/portal/articles/2537453/index.html new file mode 100644 index 00000000..d1733fe0 --- /dev/null +++ b/customer/portal/articles/2537453/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/syntax-guide-operators/ + \ No newline at end of file diff --git a/customer/portal/articles/2539305-syntax-guide-system-generated-variables/index.html b/customer/portal/articles/2539305-syntax-guide-system-generated-variables/index.html new file mode 100644 index 00000000..f1e4cc2f --- /dev/null +++ b/customer/portal/articles/2539305-syntax-guide-system-generated-variables/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/syntax-guide-system-generated-variables/ + \ No newline at end of file diff --git a/customer/portal/articles/2539305/index.html b/customer/portal/articles/2539305/index.html new file mode 100644 index 00000000..f1e4cc2f --- /dev/null +++ b/customer/portal/articles/2539305/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/syntax-guide-system-generated-variables/ + \ No newline at end of file diff --git a/customer/portal/articles/2541274-data-export-files-/index.html b/customer/portal/articles/2541274-data-export-files-/index.html new file mode 100644 index 00000000..66c411b5 --- /dev/null +++ b/customer/portal/articles/2541274-data-export-files-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-files-/ + \ No newline at end of file diff --git a/customer/portal/articles/2541274/index.html b/customer/portal/articles/2541274/index.html new file mode 100644 index 00000000..66c411b5 --- /dev/null +++ b/customer/portal/articles/2541274/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-files-/ + \ No newline at end of file diff --git a/customer/portal/articles/2542376-syntax-guide-numeric-questions/index.html b/customer/portal/articles/2542376-syntax-guide-numeric-questions/index.html new file mode 100644 index 00000000..2252e2bc --- /dev/null +++ b/customer/portal/articles/2542376-syntax-guide-numeric-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-numeric-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2542376/index.html b/customer/portal/articles/2542376/index.html new file mode 100644 index 00000000..2252e2bc --- /dev/null +++ b/customer/portal/articles/2542376/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-numeric-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2561380-does-survey-solutions-support-data-exchange-from-one-tablet-to-another-with-bluetooth-point-to-point-or-usb-connection-/index.html b/customer/portal/articles/2561380-does-survey-solutions-support-data-exchange-from-one-tablet-to-another-with-bluetooth-point-to-point-or-usb-connection-/index.html new file mode 100644 index 00000000..7a46f2fa --- /dev/null +++ b/customer/portal/articles/2561380-does-survey-solutions-support-data-exchange-from-one-tablet-to-another-with-bluetooth-point-to-point-or-usb-connection-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/does-survey-solutions-support-data-exchange-from-one-tablet-to-another-with-bluetooth-point-to-point-or-usb-connection-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561380/index.html b/customer/portal/articles/2561380/index.html new file mode 100644 index 00000000..7a46f2fa --- /dev/null +++ b/customer/portal/articles/2561380/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/does-survey-solutions-support-data-exchange-from-one-tablet-to-another-with-bluetooth-point-to-point-or-usb-connection-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561438-what-are-the-costs-associated-with-using-survey-solutions-/index.html b/customer/portal/articles/2561438-what-are-the-costs-associated-with-using-survey-solutions-/index.html new file mode 100644 index 00000000..a2208d17 --- /dev/null +++ b/customer/portal/articles/2561438-what-are-the-costs-associated-with-using-survey-solutions-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-are-the-costs-associated-with-using-survey-solutions-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561438/index.html b/customer/portal/articles/2561438/index.html new file mode 100644 index 00000000..a2208d17 --- /dev/null +++ b/customer/portal/articles/2561438/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-are-the-costs-associated-with-using-survey-solutions-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561439-what-kind-of-tablets-should-we-purchase-to-use-with-survey-solutions-/index.html b/customer/portal/articles/2561439-what-kind-of-tablets-should-we-purchase-to-use-with-survey-solutions-/index.html new file mode 100644 index 00000000..002f8cef --- /dev/null +++ b/customer/portal/articles/2561439-what-kind-of-tablets-should-we-purchase-to-use-with-survey-solutions-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-kind-of-tablets-should-we-purchase-to-use-with-survey-solutions-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561439/index.html b/customer/portal/articles/2561439/index.html new file mode 100644 index 00000000..002f8cef --- /dev/null +++ b/customer/portal/articles/2561439/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-kind-of-tablets-should-we-purchase-to-use-with-survey-solutions-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561440-can-data-collected-with-survey-solutions-be-saved-backed-up-on-a-usb-stick-or-micro-sd-card-/index.html b/customer/portal/articles/2561440-can-data-collected-with-survey-solutions-be-saved-backed-up-on-a-usb-stick-or-micro-sd-card-/index.html new file mode 100644 index 00000000..c323208f --- /dev/null +++ b/customer/portal/articles/2561440-can-data-collected-with-survey-solutions-be-saved-backed-up-on-a-usb-stick-or-micro-sd-card-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/can-data-collected-with-survey-solutions-be-saved-backed-up-on-a-usb-stick-or-micro-sd-card-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561440/index.html b/customer/portal/articles/2561440/index.html new file mode 100644 index 00000000..c323208f --- /dev/null +++ b/customer/portal/articles/2561440/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/can-data-collected-with-survey-solutions-be-saved-backed-up-on-a-usb-stick-or-micro-sd-card-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561442-does-obtaining-a-gps-signal-require-an-internet-connection-/index.html b/customer/portal/articles/2561442-does-obtaining-a-gps-signal-require-an-internet-connection-/index.html new file mode 100644 index 00000000..4b4b9dba --- /dev/null +++ b/customer/portal/articles/2561442-does-obtaining-a-gps-signal-require-an-internet-connection-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/does-obtaining-a-gps-signal-require-an-internet-connection-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561442/index.html b/customer/portal/articles/2561442/index.html new file mode 100644 index 00000000..4b4b9dba --- /dev/null +++ b/customer/portal/articles/2561442/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/does-obtaining-a-gps-signal-require-an-internet-connection-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561443-what-kind-of-support-does-the-survey-solutions-team-provide-to-the-users-/index.html b/customer/portal/articles/2561443-what-kind-of-support-does-the-survey-solutions-team-provide-to-the-users-/index.html new file mode 100644 index 00000000..c146c087 --- /dev/null +++ b/customer/portal/articles/2561443-what-kind-of-support-does-the-survey-solutions-team-provide-to-the-users-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-kind-of-support-does-the-survey-solutions-team-provide-to-the-users-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561443/index.html b/customer/portal/articles/2561443/index.html new file mode 100644 index 00000000..c146c087 --- /dev/null +++ b/customer/portal/articles/2561443/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-kind-of-support-does-the-survey-solutions-team-provide-to-the-users-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561444-is-there-an-offline-version-of-the-questionnaire-designer-/index.html b/customer/portal/articles/2561444-is-there-an-offline-version-of-the-questionnaire-designer-/index.html new file mode 100644 index 00000000..4d3ea347 --- /dev/null +++ b/customer/portal/articles/2561444-is-there-an-offline-version-of-the-questionnaire-designer-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/is-there-an-offline-version-of-the-questionnaire-designer-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561444/index.html b/customer/portal/articles/2561444/index.html new file mode 100644 index 00000000..4d3ea347 --- /dev/null +++ b/customer/portal/articles/2561444/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/is-there-an-offline-version-of-the-questionnaire-designer-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561445-is-internet-access-required-during-interviews-/index.html b/customer/portal/articles/2561445-is-internet-access-required-during-interviews-/index.html new file mode 100644 index 00000000..d2c6fb32 --- /dev/null +++ b/customer/portal/articles/2561445-is-internet-access-required-during-interviews-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/is-internet-access-required-during-interviews-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561445/index.html b/customer/portal/articles/2561445/index.html new file mode 100644 index 00000000..d2c6fb32 --- /dev/null +++ b/customer/portal/articles/2561445/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/is-internet-access-required-during-interviews-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561446-how-can-i-request-localization-for-the-interviewer-and-tester-in-a-new-language-/index.html b/customer/portal/articles/2561446-how-can-i-request-localization-for-the-interviewer-and-tester-in-a-new-language-/index.html new file mode 100644 index 00000000..245cef3e --- /dev/null +++ b/customer/portal/articles/2561446-how-can-i-request-localization-for-the-interviewer-and-tester-in-a-new-language-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-can-i-request-localization-for-the-interviewer-and-tester-in-a-new-language-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561446/index.html b/customer/portal/articles/2561446/index.html new file mode 100644 index 00000000..245cef3e --- /dev/null +++ b/customer/portal/articles/2561446/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-can-i-request-localization-for-the-interviewer-and-tester-in-a-new-language-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561447-does-survey-solutions-require-constant-internet-connection-to-collect-data-/index.html b/customer/portal/articles/2561447-does-survey-solutions-require-constant-internet-connection-to-collect-data-/index.html new file mode 100644 index 00000000..4469a226 --- /dev/null +++ b/customer/portal/articles/2561447-does-survey-solutions-require-constant-internet-connection-to-collect-data-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/does-survey-solutions-require-constant-internet-connection-to-collect-data-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561447/index.html b/customer/portal/articles/2561447/index.html new file mode 100644 index 00000000..4469a226 --- /dev/null +++ b/customer/portal/articles/2561447/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/does-survey-solutions-require-constant-internet-connection-to-collect-data-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561448-my-survey-solutions-server-is-not-the-latest-version-can-i-still-use-it-with-new-surveys-/index.html b/customer/portal/articles/2561448-my-survey-solutions-server-is-not-the-latest-version-can-i-still-use-it-with-new-surveys-/index.html new file mode 100644 index 00000000..ba435e59 --- /dev/null +++ b/customer/portal/articles/2561448-my-survey-solutions-server-is-not-the-latest-version-can-i-still-use-it-with-new-surveys-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/my-survey-solutions-server-is-not-the-latest-version-can-i-still-use-it-with-new-surveys-/ + \ No newline at end of file diff --git a/customer/portal/articles/2561448/index.html b/customer/portal/articles/2561448/index.html new file mode 100644 index 00000000..ba435e59 --- /dev/null +++ b/customer/portal/articles/2561448/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/my-survey-solutions-server-is-not-the-latest-version-can-i-still-use-it-with-new-surveys-/ + \ No newline at end of file diff --git a/customer/portal/articles/2565166-why-does-the-time-recorded-through-date-time-question-is-different-from-the-time-reported-in-gps-question-/index.html b/customer/portal/articles/2565166-why-does-the-time-recorded-through-date-time-question-is-different-from-the-time-reported-in-gps-question-/index.html new file mode 100644 index 00000000..cec4dde9 --- /dev/null +++ b/customer/portal/articles/2565166-why-does-the-time-recorded-through-date-time-question-is-different-from-the-time-reported-in-gps-question-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/why-does-the-time-recorded-through-date-time-question-is-different-from-the-time-reported-in-gps-question-/ + \ No newline at end of file diff --git a/customer/portal/articles/2565166/index.html b/customer/portal/articles/2565166/index.html new file mode 100644 index 00000000..cec4dde9 --- /dev/null +++ b/customer/portal/articles/2565166/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/why-does-the-time-recorded-through-date-time-question-is-different-from-the-time-reported-in-gps-question-/ + \ No newline at end of file diff --git a/customer/portal/articles/2576135-should-i-buy-cheap-tablets-/index.html b/customer/portal/articles/2576135-should-i-buy-cheap-tablets-/index.html new file mode 100644 index 00000000..b5b7f282 --- /dev/null +++ b/customer/portal/articles/2576135-should-i-buy-cheap-tablets-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/should-i-buy-cheap-tablets-/ + \ No newline at end of file diff --git a/customer/portal/articles/2576135/index.html b/customer/portal/articles/2576135/index.html new file mode 100644 index 00000000..b5b7f282 --- /dev/null +++ b/customer/portal/articles/2576135/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/should-i-buy-cheap-tablets-/ + \ No newline at end of file diff --git a/customer/portal/articles/2578016-consequences-of-relinking-a-tablet-device/index.html b/customer/portal/articles/2578016-consequences-of-relinking-a-tablet-device/index.html new file mode 100644 index 00000000..dfc1a957 --- /dev/null +++ b/customer/portal/articles/2578016-consequences-of-relinking-a-tablet-device/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/ + \ No newline at end of file diff --git a/customer/portal/articles/2578016/index.html b/customer/portal/articles/2578016/index.html new file mode 100644 index 00000000..dfc1a957 --- /dev/null +++ b/customer/portal/articles/2578016/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/ + \ No newline at end of file diff --git a/customer/portal/articles/2579806-questionnaire-data---export-file-anatomy/index.html b/customer/portal/articles/2579806-questionnaire-data---export-file-anatomy/index.html new file mode 100644 index 00000000..2a092b24 --- /dev/null +++ b/customer/portal/articles/2579806-questionnaire-data---export-file-anatomy/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/questionnaire-data---export-file-anatomy/ + \ No newline at end of file diff --git a/customer/portal/articles/2579806/index.html b/customer/portal/articles/2579806/index.html new file mode 100644 index 00000000..2a092b24 --- /dev/null +++ b/customer/portal/articles/2579806/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/questionnaire-data---export-file-anatomy/ + \ No newline at end of file diff --git a/customer/portal/articles/2589525-multimedia-reference/index.html b/customer/portal/articles/2589525-multimedia-reference/index.html new file mode 100644 index 00000000..cea0437f --- /dev/null +++ b/customer/portal/articles/2589525-multimedia-reference/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/multimedia-reference/ + \ No newline at end of file diff --git a/customer/portal/articles/2589525/index.html b/customer/portal/articles/2589525/index.html new file mode 100644 index 00000000..cea0437f --- /dev/null +++ b/customer/portal/articles/2589525/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/multimedia-reference/ + \ No newline at end of file diff --git a/customer/portal/articles/2613318-should-and-could-i-modify-my-questionnaire-when-the-survey-is-in-the-field-/index.html b/customer/portal/articles/2613318-should-and-could-i-modify-my-questionnaire-when-the-survey-is-in-the-field-/index.html new file mode 100644 index 00000000..f84a1c9d --- /dev/null +++ b/customer/portal/articles/2613318-should-and-could-i-modify-my-questionnaire-when-the-survey-is-in-the-field-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/should-and-could-i-modify-my-questionnaire-when-the-survey-is-in-the-field-/ + \ No newline at end of file diff --git a/customer/portal/articles/2613318/index.html b/customer/portal/articles/2613318/index.html new file mode 100644 index 00000000..f84a1c9d --- /dev/null +++ b/customer/portal/articles/2613318/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/should-and-could-i-modify-my-questionnaire-when-the-survey-is-in-the-field-/ + \ No newline at end of file diff --git a/customer/portal/articles/2626663-multilingual-questionnaires/index.html b/customer/portal/articles/2626663-multilingual-questionnaires/index.html new file mode 100644 index 00000000..1b474729 --- /dev/null +++ b/customer/portal/articles/2626663-multilingual-questionnaires/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/multilingual-questionnaires/ + \ No newline at end of file diff --git a/customer/portal/articles/2626663/index.html b/customer/portal/articles/2626663/index.html new file mode 100644 index 00000000..1b474729 --- /dev/null +++ b/customer/portal/articles/2626663/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/multilingual-questionnaires/ + \ No newline at end of file diff --git a/customer/portal/articles/2630854-find-and-replace-/index.html b/customer/portal/articles/2630854-find-and-replace-/index.html new file mode 100644 index 00000000..0f1ee65f --- /dev/null +++ b/customer/portal/articles/2630854-find-and-replace-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/find-and-replace-/ + \ No newline at end of file diff --git a/customer/portal/articles/2630854/index.html b/customer/portal/articles/2630854/index.html new file mode 100644 index 00000000..0f1ee65f --- /dev/null +++ b/customer/portal/articles/2630854/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/interface/find-and-replace-/ + \ No newline at end of file diff --git a/customer/portal/articles/2636469-rosters-export-file-anatomy/index.html b/customer/portal/articles/2636469-rosters-export-file-anatomy/index.html new file mode 100644 index 00000000..6234fd5a --- /dev/null +++ b/customer/portal/articles/2636469-rosters-export-file-anatomy/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/rosters-export-file-anatomy/ + \ No newline at end of file diff --git a/customer/portal/articles/2636469/index.html b/customer/portal/articles/2636469/index.html new file mode 100644 index 00000000..6234fd5a --- /dev/null +++ b/customer/portal/articles/2636469/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/rosters-export-file-anatomy/ + \ No newline at end of file diff --git a/customer/portal/articles/2646959-syntax-guide-single-select-questions/index.html b/customer/portal/articles/2646959-syntax-guide-single-select-questions/index.html new file mode 100644 index 00000000..3504de0b --- /dev/null +++ b/customer/portal/articles/2646959-syntax-guide-single-select-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-single-select-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2646959/index.html b/customer/portal/articles/2646959/index.html new file mode 100644 index 00000000..3504de0b --- /dev/null +++ b/customer/portal/articles/2646959/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-single-select-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2648780-syntax-guide-date-questions/index.html b/customer/portal/articles/2648780-syntax-guide-date-questions/index.html new file mode 100644 index 00000000..f8a5719a --- /dev/null +++ b/customer/portal/articles/2648780-syntax-guide-date-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-date-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2648780/index.html b/customer/portal/articles/2648780/index.html new file mode 100644 index 00000000..f8a5719a --- /dev/null +++ b/customer/portal/articles/2648780/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-date-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2649799-syntax-guide-using-linq-expressions-for-conditions-in-rosters/index.html b/customer/portal/articles/2649799-syntax-guide-using-linq-expressions-for-conditions-in-rosters/index.html new file mode 100644 index 00000000..d6f38100 --- /dev/null +++ b/customer/portal/articles/2649799-syntax-guide-using-linq-expressions-for-conditions-in-rosters/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/syntax-guide-using-linq-expressions-for-conditions-in-rosters/ + \ No newline at end of file diff --git a/customer/portal/articles/2649799/index.html b/customer/portal/articles/2649799/index.html new file mode 100644 index 00000000..d6f38100 --- /dev/null +++ b/customer/portal/articles/2649799/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/cslanguage/syntax-guide-using-linq-expressions-for-conditions-in-rosters/ + \ No newline at end of file diff --git a/customer/portal/articles/2651879-syntax-guide-gps-questions/index.html b/customer/portal/articles/2651879-syntax-guide-gps-questions/index.html new file mode 100644 index 00000000..b36385b8 --- /dev/null +++ b/customer/portal/articles/2651879-syntax-guide-gps-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-gps-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2651879/index.html b/customer/portal/articles/2651879/index.html new file mode 100644 index 00000000..b36385b8 --- /dev/null +++ b/customer/portal/articles/2651879/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-gps-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2658190-syntax-guide-barcode-questions/index.html b/customer/portal/articles/2658190-syntax-guide-barcode-questions/index.html new file mode 100644 index 00000000..964c5c2c --- /dev/null +++ b/customer/portal/articles/2658190-syntax-guide-barcode-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-barcode-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2658190/index.html b/customer/portal/articles/2658190/index.html new file mode 100644 index 00000000..964c5c2c --- /dev/null +++ b/customer/portal/articles/2658190/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-barcode-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2658467-syntax-guide-text-questions/index.html b/customer/portal/articles/2658467-syntax-guide-text-questions/index.html new file mode 100644 index 00000000..9a0edf0e --- /dev/null +++ b/customer/portal/articles/2658467-syntax-guide-text-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-text-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2658467/index.html b/customer/portal/articles/2658467/index.html new file mode 100644 index 00000000..9a0edf0e --- /dev/null +++ b/customer/portal/articles/2658467/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-text-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2658533-syntax-guide-list-questions/index.html b/customer/portal/articles/2658533-syntax-guide-list-questions/index.html new file mode 100644 index 00000000..957e8262 --- /dev/null +++ b/customer/portal/articles/2658533-syntax-guide-list-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-list-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2658533/index.html b/customer/portal/articles/2658533/index.html new file mode 100644 index 00000000..957e8262 --- /dev/null +++ b/customer/portal/articles/2658533/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-list-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2661196-syntax-guide-multi-select-questions/index.html b/customer/portal/articles/2661196-syntax-guide-multi-select-questions/index.html new file mode 100644 index 00000000..40c78b45 --- /dev/null +++ b/customer/portal/articles/2661196-syntax-guide-multi-select-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-multi-select-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2661196/index.html b/customer/portal/articles/2661196/index.html new file mode 100644 index 00000000..40c78b45 --- /dev/null +++ b/customer/portal/articles/2661196/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-multi-select-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2663547-syntax-guide-filtered-answer-options/index.html b/customer/portal/articles/2663547-syntax-guide-filtered-answer-options/index.html new file mode 100644 index 00000000..c1f1fcf1 --- /dev/null +++ b/customer/portal/articles/2663547-syntax-guide-filtered-answer-options/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-filtered-answer-options/ + \ No newline at end of file diff --git a/customer/portal/articles/2663547/index.html b/customer/portal/articles/2663547/index.html new file mode 100644 index 00000000..c1f1fcf1 --- /dev/null +++ b/customer/portal/articles/2663547/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/syntax-guide/questions/syntax-guide-filtered-answer-options/ + \ No newline at end of file diff --git a/customer/portal/articles/2707388-admin-settings/index.html b/customer/portal/articles/2707388-admin-settings/index.html new file mode 100644 index 00000000..4287497a --- /dev/null +++ b/customer/portal/articles/2707388-admin-settings/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/admin-settings/ + \ No newline at end of file diff --git a/customer/portal/articles/2707388/index.html b/customer/portal/articles/2707388/index.html new file mode 100644 index 00000000..4287497a --- /dev/null +++ b/customer/portal/articles/2707388/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/admin-settings/ + \ No newline at end of file diff --git a/customer/portal/articles/2722990-what-to-do-in-case-a-tablet-gets-broken-damaged-or-destroyed-/index.html b/customer/portal/articles/2722990-what-to-do-in-case-a-tablet-gets-broken-damaged-or-destroyed-/index.html new file mode 100644 index 00000000..04ef57e3 --- /dev/null +++ b/customer/portal/articles/2722990-what-to-do-in-case-a-tablet-gets-broken-damaged-or-destroyed-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-to-do-in-case-a-tablet-gets-broken-damaged-or-destroyed-/ + \ No newline at end of file diff --git a/customer/portal/articles/2722990/index.html b/customer/portal/articles/2722990/index.html new file mode 100644 index 00000000..04ef57e3 --- /dev/null +++ b/customer/portal/articles/2722990/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/what-to-do-in-case-a-tablet-gets-broken-damaged-or-destroyed-/ + \ No newline at end of file diff --git a/customer/portal/articles/2723099-cloud-server-instructions/index.html b/customer/portal/articles/2723099-cloud-server-instructions/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/portal/articles/2723099-cloud-server-instructions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/portal/articles/2723099/index.html b/customer/portal/articles/2723099/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/portal/articles/2723099/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/portal/articles/2723103-cloud-server-request/index.html b/customer/portal/articles/2723103-cloud-server-request/index.html new file mode 100644 index 00000000..641cd816 --- /dev/null +++ b/customer/portal/articles/2723103-cloud-server-request/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/cloud-server-request/ + \ No newline at end of file diff --git a/customer/portal/articles/2723103/index.html b/customer/portal/articles/2723103/index.html new file mode 100644 index 00000000..641cd816 --- /dev/null +++ b/customer/portal/articles/2723103/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/cloud-server-request/ + \ No newline at end of file diff --git a/customer/portal/articles/2723106-actions-before-the-survey-starts/index.html b/customer/portal/articles/2723106-actions-before-the-survey-starts/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/portal/articles/2723106-actions-before-the-survey-starts/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/portal/articles/2723106/index.html b/customer/portal/articles/2723106/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/portal/articles/2723106/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/portal/articles/2723112-actions-during-the-survey/index.html b/customer/portal/articles/2723112-actions-during-the-survey/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/portal/articles/2723112-actions-during-the-survey/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/portal/articles/2723112/index.html b/customer/portal/articles/2723112/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/portal/articles/2723112/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/portal/articles/2723118-actions-after-the-end-of-the-survey/index.html b/customer/portal/articles/2723118-actions-after-the-end-of-the-survey/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/portal/articles/2723118-actions-after-the-end-of-the-survey/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/portal/articles/2723118/index.html b/customer/portal/articles/2723118/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/portal/articles/2723118/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/portal/articles/2723119-deleting-a-survey/index.html b/customer/portal/articles/2723119-deleting-a-survey/index.html new file mode 100644 index 00000000..68f0fb37 --- /dev/null +++ b/customer/portal/articles/2723119-deleting-a-survey/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/deleting-a-survey/ + \ No newline at end of file diff --git a/customer/portal/articles/2723119/index.html b/customer/portal/articles/2723119/index.html new file mode 100644 index 00000000..68f0fb37 --- /dev/null +++ b/customer/portal/articles/2723119/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/deleting-a-survey/ + \ No newline at end of file diff --git a/customer/portal/articles/2733269-survey-solutions-limits/index.html b/customer/portal/articles/2733269-survey-solutions-limits/index.html new file mode 100644 index 00000000..b4d7d16a --- /dev/null +++ b/customer/portal/articles/2733269-survey-solutions-limits/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/survey-solutions-limits/ + \ No newline at end of file diff --git a/customer/portal/articles/2733269/index.html b/customer/portal/articles/2733269/index.html new file mode 100644 index 00000000..b4d7d16a --- /dev/null +++ b/customer/portal/articles/2733269/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/survey-solutions-limits/ + \ No newline at end of file diff --git a/customer/portal/articles/2733345-recognized-barcode-formats/index.html b/customer/portal/articles/2733345-recognized-barcode-formats/index.html new file mode 100644 index 00000000..d085eb79 --- /dev/null +++ b/customer/portal/articles/2733345-recognized-barcode-formats/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/recognized-barcode-formats/ + \ No newline at end of file diff --git a/customer/portal/articles/2733345/index.html b/customer/portal/articles/2733345/index.html new file mode 100644 index 00000000..d085eb79 --- /dev/null +++ b/customer/portal/articles/2733345/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/recognized-barcode-formats/ + \ No newline at end of file diff --git a/customer/portal/articles/2736012-comparing-floating-point-numbers-and-precision-problems/index.html b/customer/portal/articles/2736012-comparing-floating-point-numbers-and-precision-problems/index.html new file mode 100644 index 00000000..266785ef --- /dev/null +++ b/customer/portal/articles/2736012-comparing-floating-point-numbers-and-precision-problems/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/comparing-floating-point-numbers-and-precision-problems/ + \ No newline at end of file diff --git a/customer/portal/articles/2736012/index.html b/customer/portal/articles/2736012/index.html new file mode 100644 index 00000000..266785ef --- /dev/null +++ b/customer/portal/articles/2736012/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/comparing-floating-point-numbers-and-precision-problems/ + \ No newline at end of file diff --git a/customer/portal/articles/2751253-numbering-in-subordinate-rosters-during-preloading/index.html b/customer/portal/articles/2751253-numbering-in-subordinate-rosters-during-preloading/index.html new file mode 100644 index 00000000..c0f36b15 --- /dev/null +++ b/customer/portal/articles/2751253-numbering-in-subordinate-rosters-during-preloading/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/numbering-in-subordinate-rosters-during-preloading/ + \ No newline at end of file diff --git a/customer/portal/articles/2751253/index.html b/customer/portal/articles/2751253/index.html new file mode 100644 index 00000000..c0f36b15 --- /dev/null +++ b/customer/portal/articles/2751253/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/numbering-in-subordinate-rosters-during-preloading/ + \ No newline at end of file diff --git a/customer/portal/articles/2751355-selecting-a-person/index.html b/customer/portal/articles/2751355-selecting-a-person/index.html new file mode 100644 index 00000000..840ff5a5 --- /dev/null +++ b/customer/portal/articles/2751355-selecting-a-person/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/selecting-a-person/ + \ No newline at end of file diff --git a/customer/portal/articles/2751355/index.html b/customer/portal/articles/2751355/index.html new file mode 100644 index 00000000..840ff5a5 --- /dev/null +++ b/customer/portal/articles/2751355/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/selecting-a-person/ + \ No newline at end of file diff --git a/customer/portal/articles/2759597/index.html b/customer/portal/articles/2759597/index.html new file mode 100644 index 00000000..266bab91 --- /dev/null +++ b/customer/portal/articles/2759597/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/ + \ No newline at end of file diff --git a/customer/portal/articles/2760551-version-5-18/index.html b/customer/portal/articles/2760551-version-5-18/index.html new file mode 100644 index 00000000..02a4303e --- /dev/null +++ b/customer/portal/articles/2760551-version-5-18/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-18/ + \ No newline at end of file diff --git a/customer/portal/articles/2760551/index.html b/customer/portal/articles/2760551/index.html new file mode 100644 index 00000000..02a4303e --- /dev/null +++ b/customer/portal/articles/2760551/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-18/ + \ No newline at end of file diff --git a/customer/portal/articles/2763003-version-5-17/index.html b/customer/portal/articles/2763003-version-5-17/index.html new file mode 100644 index 00000000..3df135f5 --- /dev/null +++ b/customer/portal/articles/2763003-version-5-17/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-17/ + \ No newline at end of file diff --git a/customer/portal/articles/2763003/index.html b/customer/portal/articles/2763003/index.html new file mode 100644 index 00000000..3df135f5 --- /dev/null +++ b/customer/portal/articles/2763003/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-17/ + \ No newline at end of file diff --git a/customer/portal/articles/2767819-setting-photo-size-and-quality/index.html b/customer/portal/articles/2767819-setting-photo-size-and-quality/index.html new file mode 100644 index 00000000..4ca679c5 --- /dev/null +++ b/customer/portal/articles/2767819-setting-photo-size-and-quality/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/special/setting-photo-size-and-quality/ + \ No newline at end of file diff --git a/customer/portal/articles/2767819/index.html b/customer/portal/articles/2767819/index.html new file mode 100644 index 00000000..4ca679c5 --- /dev/null +++ b/customer/portal/articles/2767819/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/special/setting-photo-size-and-quality/ + \ No newline at end of file diff --git a/customer/portal/articles/2768436-standalone-installation/index.html b/customer/portal/articles/2768436-standalone-installation/index.html new file mode 100644 index 00000000..cb7b51a1 --- /dev/null +++ b/customer/portal/articles/2768436-standalone-installation/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/server-installation/ + \ No newline at end of file diff --git a/customer/portal/articles/2768436/index.html b/customer/portal/articles/2768436/index.html new file mode 100644 index 00000000..cb7b51a1 --- /dev/null +++ b/customer/portal/articles/2768436/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/server-installation/ + \ No newline at end of file diff --git a/customer/portal/articles/2781948-version-5-19/index.html b/customer/portal/articles/2781948-version-5-19/index.html new file mode 100644 index 00000000..1f7ec01a --- /dev/null +++ b/customer/portal/articles/2781948-version-5-19/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-19/ + \ No newline at end of file diff --git a/customer/portal/articles/2781948/index.html b/customer/portal/articles/2781948/index.html new file mode 100644 index 00000000..1f7ec01a --- /dev/null +++ b/customer/portal/articles/2781948/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-19/ + \ No newline at end of file diff --git a/customer/portal/articles/2784950-replacement-strategies/index.html b/customer/portal/articles/2784950-replacement-strategies/index.html new file mode 100644 index 00000000..b7b04417 --- /dev/null +++ b/customer/portal/articles/2784950-replacement-strategies/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/replacement-strategies/ + \ No newline at end of file diff --git a/customer/portal/articles/2784950/index.html b/customer/portal/articles/2784950/index.html new file mode 100644 index 00000000..b7b04417 --- /dev/null +++ b/customer/portal/articles/2784950/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/replacement-strategies/ + \ No newline at end of file diff --git a/customer/portal/articles/2784975-stata-export-file-format/index.html b/customer/portal/articles/2784975-stata-export-file-format/index.html new file mode 100644 index 00000000..f6aac8ef --- /dev/null +++ b/customer/portal/articles/2784975-stata-export-file-format/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/stata-export-file-format/ + \ No newline at end of file diff --git a/customer/portal/articles/2784975/index.html b/customer/portal/articles/2784975/index.html new file mode 100644 index 00000000..f6aac8ef --- /dev/null +++ b/customer/portal/articles/2784975/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/stata-export-file-format/ + \ No newline at end of file diff --git a/customer/portal/articles/2789716-mandatory-required-questions/index.html b/customer/portal/articles/2789716-mandatory-required-questions/index.html new file mode 100644 index 00000000..02ad9440 --- /dev/null +++ b/customer/portal/articles/2789716-mandatory-required-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/mandatory-required-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2789716/index.html b/customer/portal/articles/2789716/index.html new file mode 100644 index 00000000..02ad9440 --- /dev/null +++ b/customer/portal/articles/2789716/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/mandatory-required-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2791155-alternatives-to-date-type-question/index.html b/customer/portal/articles/2791155-alternatives-to-date-type-question/index.html new file mode 100644 index 00000000..127e0c57 --- /dev/null +++ b/customer/portal/articles/2791155-alternatives-to-date-type-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/alternatives-to-date-type-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2791155/index.html b/customer/portal/articles/2791155/index.html new file mode 100644 index 00000000..127e0c57 --- /dev/null +++ b/customer/portal/articles/2791155/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/alternatives-to-date-type-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2800579-version-5-20/index.html b/customer/portal/articles/2800579-version-5-20/index.html new file mode 100644 index 00000000..90e254d7 --- /dev/null +++ b/customer/portal/articles/2800579-version-5-20/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-20/ + \ No newline at end of file diff --git a/customer/portal/articles/2800579/index.html b/customer/portal/articles/2800579/index.html new file mode 100644 index 00000000..90e254d7 --- /dev/null +++ b/customer/portal/articles/2800579/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-20/ + \ No newline at end of file diff --git a/customer/portal/articles/2819652-how-secure-is-the-world-bank-cloud-/index.html b/customer/portal/articles/2819652-how-secure-is-the-world-bank-cloud-/index.html new file mode 100644 index 00000000..5b3c4887 --- /dev/null +++ b/customer/portal/articles/2819652-how-secure-is-the-world-bank-cloud-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-secure-is-the-world-bank-cloud-/ + \ No newline at end of file diff --git a/customer/portal/articles/2819652/index.html b/customer/portal/articles/2819652/index.html new file mode 100644 index 00000000..5b3c4887 --- /dev/null +++ b/customer/portal/articles/2819652/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-secure-is-the-world-bank-cloud-/ + \ No newline at end of file diff --git a/customer/portal/articles/2822830-missing-values/index.html b/customer/portal/articles/2822830-missing-values/index.html new file mode 100644 index 00000000..1aa45f75 --- /dev/null +++ b/customer/portal/articles/2822830-missing-values/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/missing-values/ + \ No newline at end of file diff --git a/customer/portal/articles/2822830/index.html b/customer/portal/articles/2822830/index.html new file mode 100644 index 00000000..1aa45f75 --- /dev/null +++ b/customer/portal/articles/2822830/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/missing-values/ + \ No newline at end of file diff --git a/customer/portal/articles/2831973-import-the-questionnaire/index.html b/customer/portal/articles/2831973-import-the-questionnaire/index.html new file mode 100644 index 00000000..cdffd7ec --- /dev/null +++ b/customer/portal/articles/2831973-import-the-questionnaire/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/import-the-questionnaire/ + \ No newline at end of file diff --git a/customer/portal/articles/2831973/index.html b/customer/portal/articles/2831973/index.html new file mode 100644 index 00000000..cdffd7ec --- /dev/null +++ b/customer/portal/articles/2831973/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/import-the-questionnaire/ + \ No newline at end of file diff --git a/customer/portal/articles/2832810-getting-started-checklist/index.html b/customer/portal/articles/2832810-getting-started-checklist/index.html new file mode 100644 index 00000000..861cc181 --- /dev/null +++ b/customer/portal/articles/2832810-getting-started-checklist/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/getting-started-checklist/ + \ No newline at end of file diff --git a/customer/portal/articles/2832810/index.html b/customer/portal/articles/2832810/index.html new file mode 100644 index 00000000..861cc181 --- /dev/null +++ b/customer/portal/articles/2832810/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/getting-started-checklist/ + \ No newline at end of file diff --git a/customer/portal/articles/2832911-creating-assignments-one-at-time/index.html b/customer/portal/articles/2832911-creating-assignments-one-at-time/index.html new file mode 100644 index 00000000..dd8cb9a0 --- /dev/null +++ b/customer/portal/articles/2832911-creating-assignments-one-at-time/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/creating-assignments-one-at-time/ + \ No newline at end of file diff --git a/customer/portal/articles/2832911/index.html b/customer/portal/articles/2832911/index.html new file mode 100644 index 00000000..dd8cb9a0 --- /dev/null +++ b/customer/portal/articles/2832911/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/creating-assignments-one-at-time/ + \ No newline at end of file diff --git a/customer/portal/articles/2832918-survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/index.html b/customer/portal/articles/2832918-survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/index.html new file mode 100644 index 00000000..f8931b9e --- /dev/null +++ b/customer/portal/articles/2832918-survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/ + \ No newline at end of file diff --git a/customer/portal/articles/2832918/index.html b/customer/portal/articles/2832918/index.html new file mode 100644 index 00000000..f8931b9e --- /dev/null +++ b/customer/portal/articles/2832918/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/ + \ No newline at end of file diff --git a/customer/portal/articles/2835148-interviewer-dashboard-managing-the-workload/index.html b/customer/portal/articles/2835148-interviewer-dashboard-managing-the-workload/index.html new file mode 100644 index 00000000..9636b069 --- /dev/null +++ b/customer/portal/articles/2835148-interviewer-dashboard-managing-the-workload/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/interviewer-dashboard-managing-the-workload/ + \ No newline at end of file diff --git a/customer/portal/articles/2835148/index.html b/customer/portal/articles/2835148/index.html new file mode 100644 index 00000000..9636b069 --- /dev/null +++ b/customer/portal/articles/2835148/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/interviewer-dashboard-managing-the-workload/ + \ No newline at end of file diff --git a/customer/portal/articles/2835383-notes-on-compatibility-with-version-5-21/index.html b/customer/portal/articles/2835383-notes-on-compatibility-with-version-5-21/index.html new file mode 100644 index 00000000..9540804c --- /dev/null +++ b/customer/portal/articles/2835383-notes-on-compatibility-with-version-5-21/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/notes-on-compatibility-with-version-5-21/ + \ No newline at end of file diff --git a/customer/portal/articles/2835383/index.html b/customer/portal/articles/2835383/index.html new file mode 100644 index 00000000..9540804c --- /dev/null +++ b/customer/portal/articles/2835383/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/notes-on-compatibility-with-version-5-21/ + \ No newline at end of file diff --git a/customer/portal/articles/2836630-version-5-21/index.html b/customer/portal/articles/2836630-version-5-21/index.html new file mode 100644 index 00000000..4e39013c --- /dev/null +++ b/customer/portal/articles/2836630-version-5-21/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-21/ + \ No newline at end of file diff --git a/customer/portal/articles/2836630/index.html b/customer/portal/articles/2836630/index.html new file mode 100644 index 00000000..4e39013c --- /dev/null +++ b/customer/portal/articles/2836630/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-21/ + \ No newline at end of file diff --git a/customer/portal/articles/2842561-randomizing-order-of-questions/index.html b/customer/portal/articles/2842561-randomizing-order-of-questions/index.html new file mode 100644 index 00000000..2261551b --- /dev/null +++ b/customer/portal/articles/2842561-randomizing-order-of-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/randomizing-order-of-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2842561/index.html b/customer/portal/articles/2842561/index.html new file mode 100644 index 00000000..2261551b --- /dev/null +++ b/customer/portal/articles/2842561/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/techniques/randomizing-order-of-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2844104-survey-solutions-api/index.html b/customer/portal/articles/2844104-survey-solutions-api/index.html new file mode 100644 index 00000000..bf2f54b0 --- /dev/null +++ b/customer/portal/articles/2844104-survey-solutions-api/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/api/survey-solutions-api/ + \ No newline at end of file diff --git a/customer/portal/articles/2844104/index.html b/customer/portal/articles/2844104/index.html new file mode 100644 index 00000000..bf2f54b0 --- /dev/null +++ b/customer/portal/articles/2844104/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/api/survey-solutions-api/ + \ No newline at end of file diff --git a/customer/portal/articles/2846777-faq-for-email-support/index.html b/customer/portal/articles/2846777-faq-for-email-support/index.html new file mode 100644 index 00000000..23d073c5 --- /dev/null +++ b/customer/portal/articles/2846777-faq-for-email-support/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/faq-for-email-support/ + \ No newline at end of file diff --git a/customer/portal/articles/2846777/index.html b/customer/portal/articles/2846777/index.html new file mode 100644 index 00000000..23d073c5 --- /dev/null +++ b/customer/portal/articles/2846777/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/faq-for-email-support/ + \ No newline at end of file diff --git a/customer/portal/articles/2847199-assignments/index.html b/customer/portal/articles/2847199-assignments/index.html new file mode 100644 index 00000000..884bb51c --- /dev/null +++ b/customer/portal/articles/2847199-assignments/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/assignments/ + \ No newline at end of file diff --git a/customer/portal/articles/2847199/index.html b/customer/portal/articles/2847199/index.html new file mode 100644 index 00000000..884bb51c --- /dev/null +++ b/customer/portal/articles/2847199/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/assignments/ + \ No newline at end of file diff --git a/customer/portal/articles/2847917-faq-for-it-personnel/index.html b/customer/portal/articles/2847917-faq-for-it-personnel/index.html new file mode 100644 index 00000000..eaec44ee --- /dev/null +++ b/customer/portal/articles/2847917-faq-for-it-personnel/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/faq-for-it-personnel/ + \ No newline at end of file diff --git a/customer/portal/articles/2847917/index.html b/customer/portal/articles/2847917/index.html new file mode 100644 index 00000000..eaec44ee --- /dev/null +++ b/customer/portal/articles/2847917/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/faq-for-it-personnel/ + \ No newline at end of file diff --git a/customer/portal/articles/2848383-is-the-designer-tool-online-now-/index.html b/customer/portal/articles/2848383-is-the-designer-tool-online-now-/index.html new file mode 100644 index 00000000..908dc603 --- /dev/null +++ b/customer/portal/articles/2848383-is-the-designer-tool-online-now-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/is-the-designer-tool-online-now-/ + \ No newline at end of file diff --git a/customer/portal/articles/2848383/index.html b/customer/portal/articles/2848383/index.html new file mode 100644 index 00000000..908dc603 --- /dev/null +++ b/customer/portal/articles/2848383/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/is-the-designer-tool-online-now-/ + \ No newline at end of file diff --git a/customer/portal/articles/2853037-version-5-22/index.html b/customer/portal/articles/2853037-version-5-22/index.html new file mode 100644 index 00000000..97b3763c --- /dev/null +++ b/customer/portal/articles/2853037-version-5-22/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-22/ + \ No newline at end of file diff --git a/customer/portal/articles/2853037/index.html b/customer/portal/articles/2853037/index.html new file mode 100644 index 00000000..97b3763c --- /dev/null +++ b/customer/portal/articles/2853037/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-22/ + \ No newline at end of file diff --git a/customer/portal/articles/2868453-version-5-23/index.html b/customer/portal/articles/2868453-version-5-23/index.html new file mode 100644 index 00000000..0001efc1 --- /dev/null +++ b/customer/portal/articles/2868453-version-5-23/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-23/ + \ No newline at end of file diff --git a/customer/portal/articles/2868453/index.html b/customer/portal/articles/2868453/index.html new file mode 100644 index 00000000..0001efc1 --- /dev/null +++ b/customer/portal/articles/2868453/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-23/ + \ No newline at end of file diff --git a/customer/portal/articles/2877878-distribute-an-assignment/index.html b/customer/portal/articles/2877878-distribute-an-assignment/index.html new file mode 100644 index 00000000..cefcf963 --- /dev/null +++ b/customer/portal/articles/2877878-distribute-an-assignment/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/distribute-an-assignment/ + \ No newline at end of file diff --git a/customer/portal/articles/2877878/index.html b/customer/portal/articles/2877878/index.html new file mode 100644 index 00000000..cefcf963 --- /dev/null +++ b/customer/portal/articles/2877878/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/distribute-an-assignment/ + \ No newline at end of file diff --git a/customer/portal/articles/2877883-reassign-an-interview/index.html b/customer/portal/articles/2877883-reassign-an-interview/index.html new file mode 100644 index 00000000..e375009c --- /dev/null +++ b/customer/portal/articles/2877883-reassign-an-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/reassign-an-interview/ + \ No newline at end of file diff --git a/customer/portal/articles/2877883/index.html b/customer/portal/articles/2877883/index.html new file mode 100644 index 00000000..e375009c --- /dev/null +++ b/customer/portal/articles/2877883/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/reassign-an-interview/ + \ No newline at end of file diff --git a/customer/portal/articles/2883853-version-5-24/index.html b/customer/portal/articles/2883853-version-5-24/index.html new file mode 100644 index 00000000..ed9050e5 --- /dev/null +++ b/customer/portal/articles/2883853-version-5-24/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-24/ + \ No newline at end of file diff --git a/customer/portal/articles/2883853/index.html b/customer/portal/articles/2883853/index.html new file mode 100644 index 00000000..ed9050e5 --- /dev/null +++ b/customer/portal/articles/2883853/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-24/ + \ No newline at end of file diff --git a/customer/portal/articles/2885558-survey-solutions-server-administrator/index.html b/customer/portal/articles/2885558-survey-solutions-server-administrator/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/portal/articles/2885558-survey-solutions-server-administrator/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/portal/articles/2885558/index.html b/customer/portal/articles/2885558/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/customer/portal/articles/2885558/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/customer/portal/articles/2885596-survey-solutions-server-observer/index.html b/customer/portal/articles/2885596-survey-solutions-server-observer/index.html new file mode 100644 index 00000000..6d86e88b --- /dev/null +++ b/customer/portal/articles/2885596-survey-solutions-server-observer/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-observer/ + \ No newline at end of file diff --git a/customer/portal/articles/2885596/index.html b/customer/portal/articles/2885596/index.html new file mode 100644 index 00000000..6d86e88b --- /dev/null +++ b/customer/portal/articles/2885596/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-observer/ + \ No newline at end of file diff --git a/customer/portal/articles/2887843/index.html b/customer/portal/articles/2887843/index.html new file mode 100644 index 00000000..c66b42e8 --- /dev/null +++ b/customer/portal/articles/2887843/index.html @@ -0,0 +1 @@ +https://forum.mysurvey.solutions/c/feature-suggestions/ \ No newline at end of file diff --git a/customer/portal/articles/2888303-geography-question/index.html b/customer/portal/articles/2888303-geography-question/index.html new file mode 100644 index 00000000..66ac8951 --- /dev/null +++ b/customer/portal/articles/2888303-geography-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/geography-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2888303/index.html b/customer/portal/articles/2888303/index.html new file mode 100644 index 00000000..66ac8951 --- /dev/null +++ b/customer/portal/articles/2888303/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/geography-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2888456-audio-question/index.html b/customer/portal/articles/2888456-audio-question/index.html new file mode 100644 index 00000000..488d6c5b --- /dev/null +++ b/customer/portal/articles/2888456-audio-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/audio-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2888456/index.html b/customer/portal/articles/2888456/index.html new file mode 100644 index 00000000..488d6c5b --- /dev/null +++ b/customer/portal/articles/2888456/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/audio-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2908671-downloadable-report-on-interviewers/index.html b/customer/portal/articles/2908671-downloadable-report-on-interviewers/index.html new file mode 100644 index 00000000..46fdf678 --- /dev/null +++ b/customer/portal/articles/2908671-downloadable-report-on-interviewers/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/downloadable-report-on-interviewers/ + \ No newline at end of file diff --git a/customer/portal/articles/2908671/index.html b/customer/portal/articles/2908671/index.html new file mode 100644 index 00000000..46fdf678 --- /dev/null +++ b/customer/portal/articles/2908671/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/downloadable-report-on-interviewers/ + \ No newline at end of file diff --git a/customer/portal/articles/2908701-version-5-25/index.html b/customer/portal/articles/2908701-version-5-25/index.html new file mode 100644 index 00000000..ef2c5993 --- /dev/null +++ b/customer/portal/articles/2908701-version-5-25/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-25/ + \ No newline at end of file diff --git a/customer/portal/articles/2908701/index.html b/customer/portal/articles/2908701/index.html new file mode 100644 index 00000000..ef2c5993 --- /dev/null +++ b/customer/portal/articles/2908701/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-25/ + \ No newline at end of file diff --git a/customer/portal/articles/2910459-my-questionnaire-is-not-as-fast-as-it-used-to-be-why-/index.html b/customer/portal/articles/2910459-my-questionnaire-is-not-as-fast-as-it-used-to-be-why-/index.html new file mode 100644 index 00000000..a43a6981 --- /dev/null +++ b/customer/portal/articles/2910459-my-questionnaire-is-not-as-fast-as-it-used-to-be-why-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/my-questionnaire-is-not-as-fast-as-it-used-to-be-why-/ + \ No newline at end of file diff --git a/customer/portal/articles/2910459/index.html b/customer/portal/articles/2910459/index.html new file mode 100644 index 00000000..a43a6981 --- /dev/null +++ b/customer/portal/articles/2910459/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/my-questionnaire-is-not-as-fast-as-it-used-to-be-why-/ + \ No newline at end of file diff --git a/customer/portal/articles/2914430-local-installation-interviwer-app-cannot-connect-to-the-server-over-https/index.html b/customer/portal/articles/2914430-local-installation-interviwer-app-cannot-connect-to-the-server-over-https/index.html new file mode 100644 index 00000000..84b47a6c --- /dev/null +++ b/customer/portal/articles/2914430-local-installation-interviwer-app-cannot-connect-to-the-server-over-https/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/local-installation-interviwer-app-cannot-connect-to-the-server-over-https/ + \ No newline at end of file diff --git a/customer/portal/articles/2914430/index.html b/customer/portal/articles/2914430/index.html new file mode 100644 index 00000000..84b47a6c --- /dev/null +++ b/customer/portal/articles/2914430/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/local-installation-interviwer-app-cannot-connect-to-the-server-over-https/ + \ No newline at end of file diff --git a/customer/portal/articles/2918252-excessive-interviews/index.html b/customer/portal/articles/2918252-excessive-interviews/index.html new file mode 100644 index 00000000..2bf6ed09 --- /dev/null +++ b/customer/portal/articles/2918252-excessive-interviews/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/excessive-interviews/ + \ No newline at end of file diff --git a/customer/portal/articles/2918252/index.html b/customer/portal/articles/2918252/index.html new file mode 100644 index 00000000..2bf6ed09 --- /dev/null +++ b/customer/portal/articles/2918252/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/excessive-interviews/ + \ No newline at end of file diff --git a/customer/portal/articles/2921275-version-5-26/index.html b/customer/portal/articles/2921275-version-5-26/index.html new file mode 100644 index 00000000..857f66bd --- /dev/null +++ b/customer/portal/articles/2921275-version-5-26/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-26/ + \ No newline at end of file diff --git a/customer/portal/articles/2921275/index.html b/customer/portal/articles/2921275/index.html new file mode 100644 index 00000000..857f66bd --- /dev/null +++ b/customer/portal/articles/2921275/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-5-26/ + \ No newline at end of file diff --git a/customer/portal/articles/2921331-how-to-cite-survey-solutions-in-a-publication-/index.html b/customer/portal/articles/2921331-how-to-cite-survey-solutions-in-a-publication-/index.html new file mode 100644 index 00000000..72938394 --- /dev/null +++ b/customer/portal/articles/2921331-how-to-cite-survey-solutions-in-a-publication-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-to-cite-survey-solutions-in-a-publication-/ + \ No newline at end of file diff --git a/customer/portal/articles/2921331/index.html b/customer/portal/articles/2921331/index.html new file mode 100644 index 00000000..72938394 --- /dev/null +++ b/customer/portal/articles/2921331/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/how-to-cite-survey-solutions-in-a-publication-/ + \ No newline at end of file diff --git a/customer/portal/articles/2924573-updating-the-interviewer-application/index.html b/customer/portal/articles/2924573-updating-the-interviewer-application/index.html new file mode 100644 index 00000000..7d94f907 --- /dev/null +++ b/customer/portal/articles/2924573-updating-the-interviewer-application/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/updating-the-interviewer-application/ + \ No newline at end of file diff --git a/customer/portal/articles/2924573/index.html b/customer/portal/articles/2924573/index.html new file mode 100644 index 00000000..7d94f907 --- /dev/null +++ b/customer/portal/articles/2924573/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/updating-the-interviewer-application/ + \ No newline at end of file diff --git a/customer/portal/articles/2926278-server-not-working/index.html b/customer/portal/articles/2926278-server-not-working/index.html new file mode 100644 index 00000000..12b5023c --- /dev/null +++ b/customer/portal/articles/2926278-server-not-working/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/server-not-working/ + \ No newline at end of file diff --git a/customer/portal/articles/2926278/index.html b/customer/portal/articles/2926278/index.html new file mode 100644 index 00000000..12b5023c --- /dev/null +++ b/customer/portal/articles/2926278/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/server-not-working/ + \ No newline at end of file diff --git a/customer/portal/articles/2928007-errors-in-user-supplied-files-for-preloading/index.html b/customer/portal/articles/2928007-errors-in-user-supplied-files-for-preloading/index.html new file mode 100644 index 00000000..4f9ddbe2 --- /dev/null +++ b/customer/portal/articles/2928007-errors-in-user-supplied-files-for-preloading/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/errors-in-user-supplied-files-for-preloading/ + \ No newline at end of file diff --git a/customer/portal/articles/2928007/index.html b/customer/portal/articles/2928007/index.html new file mode 100644 index 00000000..4f9ddbe2 --- /dev/null +++ b/customer/portal/articles/2928007/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/errors-in-user-supplied-files-for-preloading/ + \ No newline at end of file diff --git a/customer/portal/articles/2928242-design-limitations-by-question-type/index.html b/customer/portal/articles/2928242-design-limitations-by-question-type/index.html new file mode 100644 index 00000000..46bf77d4 --- /dev/null +++ b/customer/portal/articles/2928242-design-limitations-by-question-type/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/design-limitations-by-question-type/ + \ No newline at end of file diff --git a/customer/portal/articles/2928242/index.html b/customer/portal/articles/2928242/index.html new file mode 100644 index 00000000..46bf77d4 --- /dev/null +++ b/customer/portal/articles/2928242/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/limits/design-limitations-by-question-type/ + \ No newline at end of file diff --git a/customer/portal/articles/2931992-capturing-signatures-with-a-picture-question/index.html b/customer/portal/articles/2931992-capturing-signatures-with-a-picture-question/index.html new file mode 100644 index 00000000..b77c6586 --- /dev/null +++ b/customer/portal/articles/2931992-capturing-signatures-with-a-picture-question/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/capturing-signatures-with-a-picture-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2931992/index.html b/customer/portal/articles/2931992/index.html new file mode 100644 index 00000000..b77c6586 --- /dev/null +++ b/customer/portal/articles/2931992/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/capturing-signatures-with-a-picture-question/ + \ No newline at end of file diff --git a/customer/portal/articles/2931999-special-values-for-numeric-questions/index.html b/customer/portal/articles/2931999-special-values-for-numeric-questions/index.html new file mode 100644 index 00000000..06e4225b --- /dev/null +++ b/customer/portal/articles/2931999-special-values-for-numeric-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/special-values-for-numeric-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2931999/index.html b/customer/portal/articles/2931999/index.html new file mode 100644 index 00000000..06e4225b --- /dev/null +++ b/customer/portal/articles/2931999/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/special-values-for-numeric-questions/ + \ No newline at end of file diff --git a/customer/portal/articles/2932008-comments-in-designer/index.html b/customer/portal/articles/2932008-comments-in-designer/index.html new file mode 100644 index 00000000..abcc9449 --- /dev/null +++ b/customer/portal/articles/2932008-comments-in-designer/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/comments-in-designer/ + \ No newline at end of file diff --git a/customer/portal/articles/2932008/index.html b/customer/portal/articles/2932008/index.html new file mode 100644 index 00000000..abcc9449 --- /dev/null +++ b/customer/portal/articles/2932008/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/toolbar/comments-in-designer/ + \ No newline at end of file diff --git a/customer/portal/articles/2932022-circular-references/index.html b/customer/portal/articles/2932022-circular-references/index.html new file mode 100644 index 00000000..3bafddc8 --- /dev/null +++ b/customer/portal/articles/2932022-circular-references/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/messages/circular-references/ + \ No newline at end of file diff --git a/customer/portal/articles/2932022/index.html b/customer/portal/articles/2932022/index.html new file mode 100644 index 00000000..3bafddc8 --- /dev/null +++ b/customer/portal/articles/2932022/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/messages/circular-references/ + \ No newline at end of file diff --git a/customer/portal/articles/2932033-customize-web-interview-messages/index.html b/customer/portal/articles/2932033-customize-web-interview-messages/index.html new file mode 100644 index 00000000..23669d52 --- /dev/null +++ b/customer/portal/articles/2932033-customize-web-interview-messages/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/cawi/customize-web-interview-messages/ + \ No newline at end of file diff --git a/customer/portal/articles/2932033/index.html b/customer/portal/articles/2932033/index.html new file mode 100644 index 00000000..23669d52 --- /dev/null +++ b/customer/portal/articles/2932033/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/cawi/customize-web-interview-messages/ + \ No newline at end of file diff --git a/customer/portal/articles/2932041-export-to-cloud-storage/index.html b/customer/portal/articles/2932041-export-to-cloud-storage/index.html new file mode 100644 index 00000000..9a11b537 --- /dev/null +++ b/customer/portal/articles/2932041-export-to-cloud-storage/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-tab/ + \ No newline at end of file diff --git a/customer/portal/articles/2932041/index.html b/customer/portal/articles/2932041/index.html new file mode 100644 index 00000000..9a11b537 --- /dev/null +++ b/customer/portal/articles/2932041/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-tab/ + \ No newline at end of file diff --git a/customer/portal/articles/2932042-validation-warnings/index.html b/customer/portal/articles/2932042-validation-warnings/index.html new file mode 100644 index 00000000..605cf991 --- /dev/null +++ b/customer/portal/articles/2932042-validation-warnings/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/validation-warnings/ + \ No newline at end of file diff --git a/customer/portal/articles/2932042/index.html b/customer/portal/articles/2932042/index.html new file mode 100644 index 00000000..605cf991 --- /dev/null +++ b/customer/portal/articles/2932042/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/questions/validation-warnings/ + \ No newline at end of file diff --git a/customer/portal/articles/2932045-version-18-04/index.html b/customer/portal/articles/2932045-version-18-04/index.html new file mode 100644 index 00000000..be8542a1 --- /dev/null +++ b/customer/portal/articles/2932045-version-18-04/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-18-04/ + \ No newline at end of file diff --git a/customer/portal/articles/2932045/index.html b/customer/portal/articles/2932045/index.html new file mode 100644 index 00000000..be8542a1 --- /dev/null +++ b/customer/portal/articles/2932045/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-18-04/ + \ No newline at end of file diff --git a/customer/portal/articles/2932213-alternative-maps-for-servers-in-china/index.html b/customer/portal/articles/2932213-alternative-maps-for-servers-in-china/index.html new file mode 100644 index 00000000..7bea641a --- /dev/null +++ b/customer/portal/articles/2932213-alternative-maps-for-servers-in-china/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/alternative-maps-for-servers-in-china/ + \ No newline at end of file diff --git a/customer/portal/articles/2932213/index.html b/customer/portal/articles/2932213/index.html new file mode 100644 index 00000000..7bea641a --- /dev/null +++ b/customer/portal/articles/2932213/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/alternative-maps-for-servers-in-china/ + \ No newline at end of file diff --git a/customer/portal/articles/2935533-testing-your-questionnaire-with-the-online-tester/index.html b/customer/portal/articles/2935533-testing-your-questionnaire-with-the-online-tester/index.html new file mode 100644 index 00000000..e7c532a3 --- /dev/null +++ b/customer/portal/articles/2935533-testing-your-questionnaire-with-the-online-tester/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/testing/testing-your-questionnaire-with-the-online-tester/ + \ No newline at end of file diff --git a/customer/portal/articles/2935533/index.html b/customer/portal/articles/2935533/index.html new file mode 100644 index 00000000..e7c532a3 --- /dev/null +++ b/customer/portal/articles/2935533/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/testing/testing-your-questionnaire-with-the-online-tester/ + \ No newline at end of file diff --git a/customer/portal/articles/2938134-multiple-interviewers-using-the-same-tablet/index.html b/customer/portal/articles/2938134-multiple-interviewers-using-the-same-tablet/index.html new file mode 100644 index 00000000..129f6827 --- /dev/null +++ b/customer/portal/articles/2938134-multiple-interviewers-using-the-same-tablet/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/multiple-interviewers-using-the-same-tablet/ + \ No newline at end of file diff --git a/customer/portal/articles/2938134/index.html b/customer/portal/articles/2938134/index.html new file mode 100644 index 00000000..129f6827 --- /dev/null +++ b/customer/portal/articles/2938134/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/multiple-interviewers-using-the-same-tablet/ + \ No newline at end of file diff --git a/customer/portal/articles/2939577-synchronization-problems/index.html b/customer/portal/articles/2939577-synchronization-problems/index.html new file mode 100644 index 00000000..640d89d5 --- /dev/null +++ b/customer/portal/articles/2939577-synchronization-problems/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/synchronization-problems/ + \ No newline at end of file diff --git a/customer/portal/articles/2939577/index.html b/customer/portal/articles/2939577/index.html new file mode 100644 index 00000000..640d89d5 --- /dev/null +++ b/customer/portal/articles/2939577/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/synchronization-problems/ + \ No newline at end of file diff --git a/customer/portal/articles/2942597-version-18-06/index.html b/customer/portal/articles/2942597-version-18-06/index.html new file mode 100644 index 00000000..3c16245b --- /dev/null +++ b/customer/portal/articles/2942597-version-18-06/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-18-06/ + \ No newline at end of file diff --git a/customer/portal/articles/2942597/index.html b/customer/portal/articles/2942597/index.html new file mode 100644 index 00000000..3c16245b --- /dev/null +++ b/customer/portal/articles/2942597/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/release-notes/version-18-06/ + \ No newline at end of file diff --git a/customer/portal/articles/2942758-protecting-pre-loaded-answers/index.html b/customer/portal/articles/2942758-protecting-pre-loaded-answers/index.html new file mode 100644 index 00000000..935a2627 --- /dev/null +++ b/customer/portal/articles/2942758-protecting-pre-loaded-answers/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/protecting-pre-loaded-answers/ + \ No newline at end of file diff --git a/customer/portal/articles/2942758/index.html b/customer/portal/articles/2942758/index.html new file mode 100644 index 00000000..935a2627 --- /dev/null +++ b/customer/portal/articles/2942758/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/protecting-pre-loaded-answers/ + \ No newline at end of file diff --git a/customer/portal/articles/2942852-shape-file-overlay/index.html b/customer/portal/articles/2942852-shape-file-overlay/index.html new file mode 100644 index 00000000..fbfecd35 --- /dev/null +++ b/customer/portal/articles/2942852-shape-file-overlay/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/mapsmanage/shapefile-maps/ + \ No newline at end of file diff --git a/customer/portal/articles/2942852/index.html b/customer/portal/articles/2942852/index.html new file mode 100644 index 00000000..fbfecd35 --- /dev/null +++ b/customer/portal/articles/2942852/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/mapsmanage/shapefile-maps/ + \ No newline at end of file diff --git a/customer/portal/articles/2943093-detailed-action-log/index.html b/customer/portal/articles/2943093-detailed-action-log/index.html new file mode 100644 index 00000000..44d15bed --- /dev/null +++ b/customer/portal/articles/2943093-detailed-action-log/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/detailed-action-log/ + \ No newline at end of file diff --git a/customer/portal/articles/2943093/index.html b/customer/portal/articles/2943093/index.html new file mode 100644 index 00000000..44d15bed --- /dev/null +++ b/customer/portal/articles/2943093/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/detailed-action-log/ + \ No newline at end of file diff --git a/customer/portal/articles/2945778-report-survey-statistics/index.html b/customer/portal/articles/2945778-report-survey-statistics/index.html new file mode 100644 index 00000000..752ad1b6 --- /dev/null +++ b/customer/portal/articles/2945778-report-survey-statistics/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/report-survey-statistics/ + \ No newline at end of file diff --git a/customer/portal/articles/2945778/index.html b/customer/portal/articles/2945778/index.html new file mode 100644 index 00000000..752ad1b6 --- /dev/null +++ b/customer/portal/articles/2945778/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/report-survey-statistics/ + \ No newline at end of file diff --git a/customer/portal/articles/2946079-date-and-time-formats/index.html b/customer/portal/articles/2946079-date-and-time-formats/index.html new file mode 100644 index 00000000..742ddcf3 --- /dev/null +++ b/customer/portal/articles/2946079-date-and-time-formats/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/date-and-time-formats/ + \ No newline at end of file diff --git a/customer/portal/articles/2946079/index.html b/customer/portal/articles/2946079/index.html new file mode 100644 index 00000000..742ddcf3 --- /dev/null +++ b/customer/portal/articles/2946079/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/date-and-time-formats/ + \ No newline at end of file diff --git a/customer/portal/articles/standalone-installation/index.html b/customer/portal/articles/standalone-installation/index.html new file mode 100644 index 00000000..cb7b51a1 --- /dev/null +++ b/customer/portal/articles/standalone-installation/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/server-installation/ + \ No newline at end of file diff --git a/customer/portal/articles/standalone-server-errors/index.html b/customer/portal/articles/standalone-server-errors/index.html new file mode 100644 index 00000000..2787e334 --- /dev/null +++ b/customer/portal/articles/standalone-server-errors/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/standalone-server-errors/ + \ No newline at end of file diff --git a/designer/index.html b/designer/index.html new file mode 100644 index 00000000..63b20c10 --- /dev/null +++ b/designer/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/questionnaire-designer/ + \ No newline at end of file diff --git a/faq/actions-after-the-end-of-the-survey/index.html b/faq/actions-after-the-end-of-the-survey/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/faq/actions-after-the-end-of-the-survey/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/faq/actions-before-the-survey-starts/index.html b/faq/actions-before-the-survey-starts/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/faq/actions-before-the-survey-starts/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/faq/actions-during-the-survey/index.html b/faq/actions-during-the-survey/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/faq/actions-during-the-survey/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/faq/android-permissions/images/audio_permission.png b/faq/android-permissions/images/audio_permission.png new file mode 100644 index 00000000..27e47366 Binary files /dev/null and b/faq/android-permissions/images/audio_permission.png differ diff --git a/faq/android-permissions/images/camera_permission.png b/faq/android-permissions/images/camera_permission.png new file mode 100644 index 00000000..2aaa1f4c Binary files /dev/null and b/faq/android-permissions/images/camera_permission.png differ diff --git a/faq/android-permissions/images/files_permission.png b/faq/android-permissions/images/files_permission.png new file mode 100644 index 00000000..e3303a56 Binary files /dev/null and b/faq/android-permissions/images/files_permission.png differ diff --git a/faq/android-permissions/images/location_permission.png b/faq/android-permissions/images/location_permission.png new file mode 100644 index 00000000..09adafda Binary files /dev/null and b/faq/android-permissions/images/location_permission.png differ diff --git a/faq/android-permissions/images/nearby_permission.png b/faq/android-permissions/images/nearby_permission.png new file mode 100644 index 00000000..3a545096 Binary files /dev/null and b/faq/android-permissions/images/nearby_permission.png differ diff --git a/faq/android-permissions/images/permissions.png b/faq/android-permissions/images/permissions.png new file mode 100644 index 00000000..de765cdd Binary files /dev/null and b/faq/android-permissions/images/permissions.png differ diff --git a/faq/android-permissions/index.html b/faq/android-permissions/index.html new file mode 100644 index 00000000..dcc1e1d1 --- /dev/null +++ b/faq/android-permissions/index.html @@ -0,0 +1,41 @@ +Android App Permissions +

Android App Permissions

April 24, 2023

Android permissions regulate access of apps to particular functionality. When +it comes to Survey Solutions the following permissions are requested:

  1. Access to camera: is used to:
  • recognize qrcodes when setting up the application (enter synchronization point address);
  • recognize qrcodes/barcodes when answering the corresponding question type in the interview;
  • take pictures (answer picture type question).
  1. Access to microphone is used to:
  • answer audio type question;
  • record audio audit data during interview (all the time from the point of opening the interview to the point of closing the interview).
  1. Access to location is used to:
  • answer GPS location question;
  • answer geography question with automatic or semiautomatic modes;
  • permit near field communication for synchronization between the Interviewer and Supervisor apps.
  1. Access to files and media is used to:
  • pick photographs from the gallery as answers to picture questions;
  • store maps received from the HQ;
  • store troubleshooting packages.
  1. Access to nearby devices is used to:
  • establish connection for synchronization between the Interviewer and Supervisor apps.

The apps generally request the permissions when they are about to execute the +action, for which the permission is needed. For example, a camera permission +may be requested when the user wishes to answer a picture question.

Depending on the version and configuration of your OS the exact request for +permissions and possible answer options may vary. For example, they may include +a “allow only once” option, or simply include “always allow” and +“always deny” options or their equivalents.

If the user does not grant the permission request made by Survey Solutions, +then certain functionality will not be available.

If the app is not used for a long time Android OS may revoke the permissions +granted to the App earlier.

If you want to revise your preferences regarding the permissions granted to +Survey Solutions Apps (Interviewer App, Supervisor App, Tester App), meaning +revoke the permission granted earlier, or grant the permission denied earlier, +then you can change them in that App’s properties. See the following Google’s +article for details: Change app permissions on your Android +phone

Depending on the locally applicable laws and regulations you may be legally +obligated to explain and announce the fact of the recording, and obtain +consent prior to capturing audio recordings, photographic images, location +data, or other privacy-related information:

  • from your interviewers;
  • from your respondents;
  • from others present during interviews.

Local regulations may prohibit taking photographs in the vicinity of military +bases, airports, or government facilities. Use of Survey Solutions doesn’t +free the user from the obligation to comply with such regulations.

Survey coordinators are encouraged to have a review of the planned activity +with privacy, ethics, and legal experts to determine it’s feasibility and +proper implementation details.

\ No newline at end of file diff --git a/faq/browser-requirements/index.html b/faq/browser-requirements/index.html new file mode 100644 index 00000000..fb3de563 --- /dev/null +++ b/faq/browser-requirements/index.html @@ -0,0 +1,21 @@ +Browser requirements +

Browser requirements

January 25, 2023

The online components of Survey Solutions software (Designer, Web Tester, Headquarters, Web Interviewer) work with any modern web browser: Chrome, Safari, Firefox, Microsoft Edge.

Microsoft Internet Explorer of any version is neither recommended nor supported at this time.

\ No newline at end of file diff --git a/faq/can-data-collected-with-survey-solutions-be-saved-backed-up-on-a-usb-stick-or-micro-sd-card-/index.html b/faq/can-data-collected-with-survey-solutions-be-saved-backed-up-on-a-usb-stick-or-micro-sd-card-/index.html new file mode 100644 index 00000000..6126f703 --- /dev/null +++ b/faq/can-data-collected-with-survey-solutions-be-saved-backed-up-on-a-usb-stick-or-micro-sd-card-/index.html @@ -0,0 +1,25 @@ +Can data collected with Survey Solutions be saved/backed up on a USB stick or micro-SD card? +

Can data collected with Survey Solutions be saved/backed up on a USB stick or micro-SD card?

September 7, 2016

No, we do not support such functionality. This feature will unavoidably +lead to data losses and increases in survey management costs. Saving +data to UBS generates multiple versions of data that is very difficult +to maintain without overriding the useful data. To avoid duplication, +Survey Solutions imposes a rule where a particular questionnaire can be +only with one agent in the system.

\ No newline at end of file diff --git a/faq/cannot-find-data/index.html b/faq/cannot-find-data/index.html new file mode 100644 index 00000000..715f6cdf --- /dev/null +++ b/faq/cannot-find-data/index.html @@ -0,0 +1,21 @@ +Where is My Interview? +

Where is My Interview?

March 28, 2023

This page is summarizing information that may help resolve the issue of the user not being able to find interviews. All of the below situations were encountered in practice while troubleshooting users’ reports of “Data loss” (no matter how absurd they may sound).

None of the situations described below constitutes a defect or a bug, as in these cases data is not lost by the system itself, but rather it is erased as a result of a specific and predictable action by the user.

Inspecting the situations together with the HQ staff and the interviewer involved often allows determining what exactly has happened, so please, do this before requesting support on the ‘data loss’ issues.

The developers are not aware of any reproducible scenario where the data loss occurs from the defects of the design of Survey Solutions. If you become aware of such a scenario, please raise an issue with a sufficient description.


The Data is being Collected with the Tester App.

The Tester App should not be used for data collection because it doesn’t save or send the data anywhere. Some facilitators inappropriately conduct training with the Tester App, thus creating a confusion which App should be used for data collection.

Recommendation: Actual interviewers should not be exposed to the Tester App, only the Interviewer App. The Tester App is a tool for questionnaire designers and QAs.


The Data is being Collected and Sent to a Different Server

If the training and actual fieldwork are taking place on different servers some interviewers may fail to receive, understand, or perform the instructions to switch the server, and if their application was configured to use the training server, they may be sending the data there.

Recommendations:

  1. If the training and actual data collection is done in different servers, after the training is completed, the training server should be disposed of. If it is still needed (e.g. for training of other groups of interviewers) then the accounts of the interviewers that have completed training should be locked or archived. This will make the problem apparent.

  2. To confirm the issue the troubleshooter should inspect the synchronization point as saved in the Interviewer App’s settings for that interviewer.

  3. When troubleshooting remotely, check if the interviewer has connected to the new server. If not, this is evidence that he/she is probably sending data elsewhere. If yes, it may be inconclusive, as the synchronization point can be manipulated afterwards.


The Questionnaire has been Deleted on the Server

If the questionnaire is deleted on the server all the data in that survey is deleted with it. Including any and all data on any mobile devices whether it was or was not sent to the server before such deletion. The deletion is only available to the administrator user, and an adequate warning and precaution is taken no to allow this to be clicked accidentally.

Recommendation: Only delete the surveys when you are absolutely sure that no new data can be sent from any of the mobile devices or web-respondents, and when the data has been properly downloaded and securely stored.


The Interviewer App has been Uninstalled

Uninstalling the Interviewer App automatically erases all the data associated with this app (this is a standard Android behavior). The App itself can’t resist from being uninstalled.

Recommendations:

  1. Explain to the interviewers that uninstalling the Interviewer App will erase all unsynchronized interviews.
  2. Explain to the interviewers that when they need to update the Interviewer App, they need to install the new version on top of the existing version, rather than uninstall the previous version and install the newer one.
  3. Block the possibility for the interviewers to uninstall Apps in Android (this may require restricting the user account and/or installation of third-party Apps delivering such specialized functionality).

The Interviewer App’s Data Cleared

Android OS allows an App’s data to be cleared. In the user selects this action all the data of that App is erazed, resulting in the deletion and loss of any interviews that haven’t been yet sent to the server.

Recommendations:

  1. Explain to the interviewers that clearing the Interviewer App’s data will erase all unsynchronized interviews.
  2. Explain to the interviewers that when they need to update the Interviewer App, they need to install the new version on top of the existing version, rather than clear the data for the previous version and install the newer one.
  3. Block the possibility for the interviewers to clear Apps’s data in Android (this may require restricting the user account and/or installation of third-party Apps delivering such specialized functionality).

The interviewer’s Mobile Device has been Re-Linked

When the interviewer links a new device to his/her account on the server, no data from the old device will be received by the server anymore. Correspondingly the old device should not be used for any data collection. But if it is not actully lost, stolen, or damaged, the interviewer may be tempted to continue using it (and may do so for a considerable time without realizing that she will not be able to send that data anywhere).

The Interviewer App issues a prominent warning about this including the warning of the data loss, which happens only when the interviewer confirms.

There are many different variations when this may occur even without the interviewer doing anything wrong, but they mostly depend on the interviewer’s login/password made known to other users.

Recommendations:

  1. Explain consequences of re-linking to interviewers.
  2. Do not share the passwords.
  3. Follow best practices: do not make passwords same for all the users, do not make passwords, which are predictable for the users (e.g. password same as the user name), and other bad practices.
  4. Keep track on which accounts have been issued to real persons (such as when you are distributing generic accounts interviewer1, interviewer2, etc). This is best done by populating the full name of the user in the account properties.
  5. Make sure the old device is successfully synchronized before re-linking to the new device! Remember that not every synchronization session is successful!

The Interviewer is ‘No Longer Responsible’

An interview is rejected to an interviewer X, and then after that interviewer synchronizes and receives the rejected interview, it is reassigned to another interviewer Y.

The person performing such reassingment receives a prominent warning from Survey Solutions that this action may result in such an undesirable result.

When interviewer X tries to submit the interview to the server, it is accepted by the server, is erased on the tablet, and the supervisor/HQ do not see the changes made by interviewer X when they review the interview.

This happens because the interview was already reassigned to interviewer Y. Correspondingly receiving it from interviewer X is not expected by the system and that data is discarded (technically it is stored in the broken packages, but it is irrecoverable for users’ purposes).

Recommendations:

  1. Only reassign if you know that original responsible will not be able to work on the interview.
  2. Notify the original responsible about the reassignment asap using other means (email, phone, messenger) that he/she is no longer responsible for the interview and request to synchronize asap, in that case the rejected interview card will be removed from the dashboard of that interviewer and he/she will not be able to work on that interview.

The Mobile Device of the Supervisor is Lost

When interviewers are synchronizing with the supervisor’s mobile device, rather than with the server directly, the supervisor’s device stores the data collected by all the interviewers of his/her team. If the supervisor’s device is lost, stolen, or damaged before the synchronization is performed, that destroys all of these interviews as well.

Recommendations:

  1. Synchronize the supervisor’s device as frequently as possible.
  2. Protect the supervisor’s device with extra care. This includes all sort of protection from damage (water damage, breaking damage, electric shock, battery overcharge/burn/explosion, etc) and theft. The survey coordinator must give explicit instructions to the field staff on what their behavior should be in case of physical threat to balance personal safety and safety of the data.

The Interviewer Discards the Data

The interviewer has the possibility to discard an interview (started or completed) in the Interviewer App. This functionality is available before the interview has been sent upstream (to the supervisor or to the server) at least once.

The interviewer gets a prominent warning that he/she is erasing the data and this can’t be undone, and the interview is discarded only when the interviewer confirms.

Recommendations:

  1. Explain to the interviewer that discarding an interview is an irreversible action.
  2. Evidence that an interview was discarded can be found in the detailed actions log for that interviewer’s account (after synchronization with the server).

The Headquarters Database was Restored from a Backup

Restoring the database from a backup reinstates it in that volume as it was backed up. Thus any interviews sent by the interviewers after the backup was done will be discarded when the database is restored from the backup.


If you are aware of any other situations where the data may appear to be ’lost’ purely because of the actions of the user, please, discuss in the users’ forum to append to this list.

The Interviewer App contains several tools in the Diagnostics menu, among which is Collect and send to HQ all tablet information, Send trace logs, and Generate support package. None of these tools was designed as a data backup/restore feature, nor should the end users attempt to use this functionality for this purpose. Even in cases when these files may contain the data of the interviews that the survey coordinator may wish to restore, the software developers have no capacity to assist with these matters.

\ No newline at end of file diff --git a/faq/cloud-server-request/index.html b/faq/cloud-server-request/index.html new file mode 100644 index 00000000..1acae19f --- /dev/null +++ b/faq/cloud-server-request/index.html @@ -0,0 +1,38 @@ +Survey Solutions Server Hosting +

Survey Solutions Server Hosting

February 13, 2024

Here are just some of the options you may have for placement of your +Survey Solutions data server:

When deciding on the proper server hosting, please:

  • consult all applicable laws and regulations of your country regarding +data storage, transfer and processing, especially when the service provider +indicates that the servers are physically located in a different country or +does not disclose their location.

  • note that your organization (educational, governmental, non-profit, etc) +may have rates and pricing different from the generic pricing conditions +that the cloud providers publish. Inquire directly with the cloud server +providers to get the most accurate information on the costs.

  • note that the costs may (and often do) vary by region.

\ No newline at end of file diff --git a/faq/comparing-floating-point-numbers-and-precision-problems/index.html b/faq/comparing-floating-point-numbers-and-precision-problems/index.html new file mode 100644 index 00000000..94ca384f --- /dev/null +++ b/faq/comparing-floating-point-numbers-and-precision-problems/index.html @@ -0,0 +1,52 @@ +Comparing floating point numbers and precision problems +

Comparing floating point numbers and precision problems

February 6, 2017

Our development team often receives reports on suspected bugs in Survey +Solutions on the grounds of a situation similar to the one described +below. These reports stem from misunderstanding of some fundamental +concepts of how computations are done by a computer, and not due to an +actual defect of the software.

Problem description

Suppose you have a questionnaire containing two numeric questions X and +Y, and a third question Z with an enabling condition (X*Y) == 21.6.

Some of the users report that the question Z doesn’t get enabled even +for the values where it seems to hold when checked manually, e.g. for +values X=18 and Y=1.2

The problem is that of comparing two floating point numbers, which is never +exact. This is not a Survey Solutions problem, this is how computers +work in general. One will have exactly the same situation in +Stata:

display 18*1.2
+display 18*1.2==21.6
+display %21x 18*1.2
+display %21x 21.6
+

The problem is not only of division or multiplication operations, but +also of addition and subtraction:

display 0.1+0.1+0.1==0.3
+

As the value 21.6 can’t be stored in computer’s memory exactly, it is +rounded, and it is rounded to a different value when it is obtained as a +result of a mathematical operation or entered directly. Same applies to +almost any programming language.

Bill Gould explains this (in the context of Stata) in a series of his +blog postings here:
http://blog.stata.com/2012/04/02/the-penultimate-guide-to-precision/

Examples for C# are plentiful all over internet, see e.g. here:
http://stackoverflow.com/questions/3420812/how-do-i-find-if-two-variables-are-approximately-equals

For in-depth overview of the problems associated with the floating point +representation of numbers and operations on them, see the following +article:
https://docs.oracle.com/cd/E19957-01/800-7895/800-7895.pdf

Recommendations for questionnaire designers

In most cases ask yourself first, whether you need an exact comparison. +In many cases exact comparison is not required. Where it is required, +ask yourself whether the values should indeed be represented as floating +point numbers, or perhaps they are integers by nature. When there is no +other way, compare the floating point numbers x and y as

Math.Abs(x-y)<$epsilon
+

where you define a macro $epsilon as a sufficiently small number, for +example 0.00000001.

It is also possible to instruct C# to conduct the comparison as +integers, where you know you indeed intend to compare integers:

(long)x==(long)y
+

You can find more about C# data types and their use in Survey Solutions +by reading the article on data types.

\ No newline at end of file diff --git a/faq/date-and-time-formats/index.html b/faq/date-and-time-formats/index.html new file mode 100644 index 00000000..0d168d91 --- /dev/null +++ b/faq/date-and-time-formats/index.html @@ -0,0 +1,45 @@ +Date and Time formats +

Date and Time formats

June 27, 2018

This document uses the following notation to describe the date and time +formats:

  • Y - year
  • M - month
  • D - day
  • h - hour
  • m - minute
  • s - second
  • T - exactly letter T
  • {AM|PM} - one of the two time specifications AM or PM.
  • Mon - month abbreviated to 3 letters
  • Month - full month name.
  • DOW - day of week (such as Monday, Tuesday, etc).
  • TZ - timezone

Exported data

Survey Solutions writes date and time as strings in exported data files. +Here is how:

In the main data file:

  • Date questions: YYYY-MM-DD
  • Timestamp (date question with the current time option): +YYYY-MM-DDThh:mm:ss in the device timezone.
  • Timestamp in GPS location question: YYYY-MM-DDThh:mm:ss in UTC +timezone.
  • Calculated variable of type DateTime: YYYY-MM-DDThh:mm:ss without +timezone adjustment.

In the interview_actions file:

  • Date: YYYY-MM-DD
  • Time: hh:mm:ss in UTC time zone

In the interview_comments file:

  • Date: MM/DD/YYYY
  • Time: hh:mm:ss in UTC time zone

In the survey paradata file:

  • Event timestamp: YYYY-MM-DDThh:mm:ss based on the server or tablet +clock (as applicable*), adjusted for UTC time zone
  • Answer to the date question: YYYY-MM-DD
  • Answer to the date question with the current time option: YYYY-MM-DD +hh:mm:ss based on the server or tablet clock (as applicable*) no +adjustment for time zone.
  • Variable of DateTime type recalculated: M/D/YYYY h:m:s{AM|PM}, no +adjustment for time zone.

In export__readme.txt file

  • DOW, Month DD, YYYY

In interviews.tab file (web links for assignments):

  • Date questions: YYYY-MM-DDT00:00:00
  • Timestamp (date question with the current time option): +YYYY-MM-DDThh:mm:ss

Tablet clock is used for events registered on the tablet, such as +answering an interviewer’s question in CAPI mode interviews. Server +clock is used for events registered on the server, such as rejection of +interview by a supervisor.

Interface

Survey Solutions displays date and time information in various places in +the interface. Here is how:

  • In the Questionnaires list (imported on, modified on, and created on +fields) and Assignments list (updated on and created on fields): Mon +DD, YYYY hh:mm in the current user timezone.
  • In the Interview status history dialog accessed from interview +details: Mon DD, YYYY hh:mm in the UTC timezone.
  • In the Interview status history dialog accessed from interview +context menu: Mon DD, YYYY hh:mm in the current user timezone.
  • Timestamp in identifying questions: YYYY-MM-DD hh:mm:ss recorded in +the current user timezone; displayed without further timezone +adjustment for users in other timezones.
  • Timestamp in interviewer’s questions: YYYY-MM-DD hh:mm:ss recorded +and displayed in the current user’s timezone. Other users will see +it adjusted for their timezones.
  • On completion of web interviews: M/D/YYYY h:m:s{AM|PM}
  • In audit log: YYYY-MM-DD hh:mm:ss -TZ timestamp of the server event +using server clock in server time zone with explicit specification +of time difference vs UTC time.
\ No newline at end of file diff --git a/faq/deleting-a-survey/images/deleting_a_survey_questionnaire.png b/faq/deleting-a-survey/images/deleting_a_survey_questionnaire.png new file mode 100644 index 00000000..d0bfccba Binary files /dev/null and b/faq/deleting-a-survey/images/deleting_a_survey_questionnaire.png differ diff --git a/faq/deleting-a-survey/index.html b/faq/deleting-a-survey/index.html new file mode 100644 index 00000000..6679c700 --- /dev/null +++ b/faq/deleting-a-survey/index.html @@ -0,0 +1,40 @@ +Deleting a survey +

Deleting a survey

September 10, 2020

Survey deletion is possible, but as a dangerous operation is made +available only to server administrators. When a survey is deleted all +data collected as part of that survey is irretrievably and irreversibly +lost. Hence the same steps should be applied as described in actions +after the end of the +survey.

Make sure you backup your data before deleting a survey! Even if this +was training, pre-test, or a field test. In some cases even data +collected as part of such exercises can be invaluable for improving the +questionnaire, estimating the performance of interviewers, or duration +of the survey.

There is rarely any need to delete a survey. Deleting a questionnaire +template +will delete the whole survey with all data associated with it.

Warning:

Any interviews data received at the server from any tablet after the +corresponding questionnaire has been deleted will also be +automatically deleted from the tablets and not retained at the server!

Make sure you synchronize the tablets before exporting the data and +deleting the survey questionnaire from the server.

Deleting a questionnaire may take a considerable time depending on the +size of the survey and server performance. While the survey is being +deleted its questionnaire still appears in the list of imported +questionnaires in the disabled state, such as ‘Census 2020 v2’ in the +following illustration. The questionnaire is automatically removed from +the list when the deletion process completes.

\ No newline at end of file diff --git a/faq/does-obtaining-a-gps-signal-require-an-internet-connection-/index.html b/faq/does-obtaining-a-gps-signal-require-an-internet-connection-/index.html new file mode 100644 index 00000000..81a6dd8f --- /dev/null +++ b/faq/does-obtaining-a-gps-signal-require-an-internet-connection-/index.html @@ -0,0 +1,22 @@ +Does obtaining a GPS signal require an internet connection?

Does obtaining a GPS signal require an internet connection?

September 7, 2016

No, GPS receiver in the tablets relies on satellites to obtain +coordinates. So, no internet (3G or WiFi connection) is required. +However, you can improve accuracy of GPS signal by pairing the satellite +signals with the coordinates obtained from mobile networks.

\ No newline at end of file diff --git a/faq/does-survey-solutions-require-constant-internet-connection-to-collect-data-/index.html b/faq/does-survey-solutions-require-constant-internet-connection-to-collect-data-/index.html new file mode 100644 index 00000000..b8112331 --- /dev/null +++ b/faq/does-survey-solutions-require-constant-internet-connection-to-collect-data-/index.html @@ -0,0 +1,28 @@ +Does Survey Solutions require constant internet connection to collect data? +

Does Survey Solutions require constant internet connection to collect data?

September 7, 2016

No, Survey Solutions does not require constant internet connection. The +data collection on tablet can be conducted offline. The internet +connectivity, either 3G/4G or WiFi, is required to synchronize tablet +with the server to send completed assignments and to receive new +assignments. In some cases, i.e., remote Pacific islands, interviewers +go without connection for several weeks. While it is possible not to +synchronize for an extended period of time, we recommend to synchronise +tablets as often as possible, preferably after each interview, if the +connectivity allows.

\ No newline at end of file diff --git a/faq/does-survey-solutions-support-data-exchange-from-one-tablet-to-another-with-bluetooth-point-to-point-or-usb-connection-/index.html b/faq/does-survey-solutions-support-data-exchange-from-one-tablet-to-another-with-bluetooth-point-to-point-or-usb-connection-/index.html new file mode 100644 index 00000000..430397b3 --- /dev/null +++ b/faq/does-survey-solutions-support-data-exchange-from-one-tablet-to-another-with-bluetooth-point-to-point-or-usb-connection-/index.html @@ -0,0 +1,24 @@ +Does Survey Solutions support data exchange from one tablet to another with Bluetooth, Point-to-Point or USB connection? +

Does Survey Solutions support data exchange from one tablet to another with Bluetooth, Point-to-Point or USB connection?

September 7, 2016

No, current version of Survey Solutions does not support such data +exchange. We see no reliable way to maintain and manage multiple copies +of the same questionnaire on several tablets. While we realize the +benefits of such transfer protocols in certain situations, the risk of +data losses is too high for us to implement this feature.

\ No newline at end of file diff --git a/faq/excessive-interviews/index.html b/faq/excessive-interviews/index.html new file mode 100644 index 00000000..22fa7f7f --- /dev/null +++ b/faq/excessive-interviews/index.html @@ -0,0 +1,52 @@ +Excessive interviews +

Excessive interviews

January 26, 2018

Situation

Every interview in Survey Solutions is created based on an assignment, +which dictates how many interviews (often just one) must be +collected.

In some cases users receive more interviews at the server then the +assignment required.

This corresponds to values in the column “Count” are bigger than in the +column “Size” in the table showing assignments.

Explanation

The reason for this is the following scenario:

  1. Supervisor gives assignment A to interviewer X;
  2. Interviewer X picks assignment A (synchronizes) and proceeds to the +enumeration area;
  3. The supervisor changes her mind and re-assigns assignment A to +interviewer Y;
  4. Interviewer Y picks assignment A (synchronizes) and proceeds to the +enumeration area;

At this moment both interviewers X and Y have assignment A on their +tablet and have the possibility to start an interview from it; note that +neither X nor Y know anything about the parallel copy of the assignment, +at should normally proceed to fulfill it because it appears on their +dashboards.

  1. Interviewers X and Y complete their copy of the interview (in any +order);
  2. Interviewers X and Y send completed interviews to the server +(synchronize in any order);

At this moment excessive interviews are visible in the server.

Recommendations

  1. Minimize re-assignments. It is better to give smaller portions of +work to interviewers and give more as they complete, rather then +give everything and re-assign later. Assignments that interviewers +have never received can be safely assigned to any other interviewer.
  2. If re-assignment is unavoidable, then before making a re-assignment +check if the assignment has been received. If it has been already +received by the interviewer X then re-assignment can potentially +result in excessive interviews.
  3. Make the interviewer X synchronize after step #3 in the above +sequence. This will withdraw the assignment A from his dashboard, +and when Interviewer Y picks it at step #4 no other copy of the +assignment will exist in the system.
  4. If synchronization of the Survey Solutions system is not possible +(for no network connection in the area reasons), the supervisor must +notify the interviewer X using other means not to start the +assignment A that he has received and specify the assignment number. +This not started assignment A will disappear from his dashboard at +the next successful synchronization.
  5. Instruct the interviewers to listen to what the respondents are +telling them. If they insist that they have already responded to +this survey, it may very well be true.
\ No newline at end of file diff --git a/faq/faq-for-email-support/images/copy_link_to_qnr.png b/faq/faq-for-email-support/images/copy_link_to_qnr.png new file mode 100644 index 00000000..2553dfd2 Binary files /dev/null and b/faq/faq-for-email-support/images/copy_link_to_qnr.png differ diff --git a/faq/faq-for-email-support/images/msg.png b/faq/faq-for-email-support/images/msg.png new file mode 100644 index 00000000..20ab8c41 Binary files /dev/null and b/faq/faq-for-email-support/images/msg.png differ diff --git a/faq/faq-for-email-support/index.html b/faq/faq-for-email-support/index.html new file mode 100644 index 00000000..971b452a --- /dev/null +++ b/faq/faq-for-email-support/index.html @@ -0,0 +1,77 @@ +FAQ for email support +

FAQ for email support

April 21, 2020
  1. Before writing your request, study the documentation +online, read the FAQ, and browse our users’ forum. +Don’t neglect Google or other search +engines. This is +usually the fastest way to get your issue resolved. It will also +help you to use the right terminology when asking a question.

  2. All of the questions of the kind +“Is it possible to do X in Survey Solutions?” +or “How do I do X in Survey Solutions?” +should not be sent to the support team directly, but rather be posted +to the user forum as public +questions.

  3. Write your request clearly. If we don’t understand it, we will not +be able to help and it will take multiple rounds of emails to obtain +clarification, ultimately resulting in a slower resolution. +Messages simply reporting “X doesn’t work” +or “X is not working” without steps to +reproduce the problem will be immediately returned to sender for +clarification without further investigation. Most of the reports of +the type “X doesn’t work” are +because X never existed or never intended to work the way you imagined +it. While describing the issue refer to the documentation +and indicate which instruction you’ve followed, and what was the specific +problem (which error message you received exactly, whether the program +has frozen, computer rebooted, etc).

  4. Introduce yourself, your survey and your questionnaire. Do not assume +we or other users know what BTLDMS or KVZTS/D is. If you experience a +compatibility issue (device related) introduce your device (brand, +model number, manufacturing year, OS version).

  5. Questions of the type +“What is the best way to do X?” typically +can’t be considered without a context. Make sure you include your +project description, any alternatives you are considering and associated +costs, risks, and benefits.

  6. Do not CC (copy) any other address in your request. Once you receive +the answer to your request, you can forward it to your partners/co-authors.

  7. Confirm promptly if the issue is resolved once you receive the answer. We +will not be able to address your case until all previous support cases are closed.

  8. Once the issue is resolved and you have a new issue, start a new request, +do not answer to the old thread of the resolved issue. Do not write +“Thank you for resolving issue A, and I have two +more questions B and C”. Instead close the thread of issue A +confirming it is resolved, start a new request for issue B and start +another for issue C.

  9. Urgent requests: all requests are urgent. Consequently all requests will be +served in the order they arrive.

  10. Use attachments to supplement your case description:

    • place screenshots for interface issues;

    • place long error messages verbatim in a separate text file;

    • include preloading files in text format; explain which tool was used to produce these files;

    • include PDF version of the questionnaire if necessary.

  11. If the issue is related to a particular questionnaire, copy the link +to it from the list of your questionnaires in the Designer.

  1. In general requests for server maintenance, such as erasing a survey, +resetting credentials, upgrading the version of the server +component, etc are expected from the person designated as +responsible for the server. We reserve the possibility to deny the +requests from other persons if we can’t reliably establish their +relationship to the data server in question.

  2. Check the support address. This is the support line for the Survey +Solutions software. If you are experiencing a device issue, perhaps +you should contact the device manufacturer? If your issue is related +to a statistical package, refer to the corresponding forum for that +software.

  3. Give each question you submit a meaningful title that explains in short +what the issue is about. Here are the top ten worse titles for the +questions we received: “Question”, “Request”, +“Inquiry”, “Survey Solutions”, “Server”, “Urgent”, “Hello!”, +“Need help!” , “Support”, “SOS”. Instead write +“Error 601 during download of binary data file”, +“Assignment appears on the dashboard of supervisor without a number”, +etc.

  4. This is not a private email. Do not expect the same agent to +respond to your every request; “How are things?” +is not a support question.

\ No newline at end of file diff --git a/faq/glossary/index.html b/faq/glossary/index.html new file mode 100644 index 00000000..c4a6035e --- /dev/null +++ b/faq/glossary/index.html @@ -0,0 +1,135 @@ +Glossary +

Glossary

June 10, 2021

The following is a brief overview of the specialized terms used in Survey +Solutions. The meaning of these terms may be different from what you may +have experienced in other systems. Follow the links inside for more detailed +explanations in the support site articles.

2FA

(aka Two-factor authentication)

Security-enhancing feature requiring authentication of users with +two different procedures. In Survey Solutions the two factors are:

  • password, selected by the user, and
  • time-sensitive token (number) generated using an authenticator app +(typically installed on the user’s smartphone).

Assignment

A request/order to conduct one or more interviews as part of a +certain survey to a specific user of the Survey Solutions system. +Typically contains answers to one or more identifying fields that specify +where the data must be collected. (typically 1 document per unit of survey).

Calculated variable

Element of a questionnaire document, which defines a calculated result based on +questions and/or other variables using a pre-defined syntax. +Variables may be intermediate or final, becoming part of the exported +survey data.

Calendar event

An attribute of an assignment and interview, which consists of a message, +date, and time components, typically used by interviewers to schedule +upcoming visits.

Categories filtering

An efficiency technique that reduces the number of choices in categorical +questions by removing the a priori invalid choices based on known information +(answers to earlier questions) and a pre-defined syntax expression, which is +evaluated for each option of a choice.

For example, a person who is 5 years old may not be related to the household +head as father or grandfather, so these categories may be removed from +the choices for this question. Yet these categories may be retained for a +person who is 60 years old.

Cloud server

A Survey Solutions data server that stores the user data, but is located not +in premises of the said user and is accessed not physically, but remotely +through communication means. Cf. local server.

Compilation error

An error reported by the Designer while compiling a +questionnaire. Questionnaires containing +compilation errors may not be imported to a data server and +the errors need to be fixed before a survey based on such a +questionnaire may start.

Data server

A server that stores the data and hosts the Survey Solutions server component +for managing the survey, controlling user accounts, exporting data and other +key tasks. Can be set up on a cloud server or a +local server.

Designer

An online tool (website) to develop electronic questionnaires +to be used by the Survey Solutions data servers.

Also, a person who is using this tool to design questionnaires.

Email service provider

An online service providing the capability to send large number of emails. +more info

Enabling

An interview flow control technique in which questions in an +interview are shown to the interviewer/respondent +("asked") or not shown ("skipped") depending on the answers +to earlier questions, preloaded information, calculated results, etc.

Interview

An electronic record of answers and comments to the questionnaire questions +delivered in fulfillment of an assignment. (typically 1 or +more documents per each assignment of survey).

Interviewing process

The process of filling out an interview by the interviewer (in +the CAPI, CATI modes) or respondent (in the CAWI mode).

Limit

A particular numeric value, specifying the bounds within which the developers +have implemented the functionality of the product. All limits chosen by the +developers are listed in the +following table.

Limit error

A compilation error caused by overshooting a particular +limit.

Linked question

A special kind of categorical question, the categories of which are not +defined during the design of the questionnaire, but are +defined during the interview when answering certain earlier questions in +the questionnaire. Typically replacing the questions “Who…?” +or “What is the line number of…?” in the paper-based surveys.

Local server

(aka: Standalone server) +A Survey Solutions data server that stores the user data and is located +on premises of the same user so that it can be accessed both physically +and through communication means. Cf. cloud server.

Metadata

A downloadable data file containing information about the survey, such as +which questions were posed or what options were given, but not individual +responses. Cf. paradata, survey data.

Multilingual questionnaire

A questionnaire that contains embedded translations of +questions, options and other text into 2 or more languages, and can be +switched between them during the interviewing process.

Paradata

A downloadable data file containing information on the progress of +interviews, which includes the actions by the interviewer +(such as answering the question) and the responses of the program (such as +indication of an error in response to an invalid answer). Cf. +metadata, survey data.

Preloading

Including information known at the start of the survey into +assignments to pre-populate interviews with +answers to questions already established in earlier waves of the same survey +or from other relevant data sources. Typically used in panel surveys, where +some attributes, such as date of birth of household members may be preloaded.

Questionnaire

An electronic equivalent of a blank questionnaire form containing questions, +skips and validation logic, images, lookup tables and other information +universally available in all interviews of the survey. +(typically 1 document per survey).

Respondent

In CAPI surveys it is the person answering the questions of the interviewer.

In CAWI surveys is the person completing the web form with answers to the +survey questions. Respondents typically know nothing about the working of +the Survey Solutions, don’t have any specialized training and treat the +interface as a common web page.

Role

A set of permissions, responsibilities and tools that are available to a +certain user. For example, HQ users may upload a +sample file, or export the survey data, but +can’t modify individual answers or complete interviews.

In Survey Solutions the roles are the following:

  • Administrator,
  • Headquarters,
  • Observer,
  • Supervisor,
  • Interviewer,
  • Designer, and Tester.
  • API user.

Roster

A special kind of subsection, which repeats its questions +multiple times. For example, a demographic section of a typical household +survey is a roster repeating questions on name, age, gender and education +for every household member. A roster typically appears as a table in +paper-based surveys. Some rosters have fixed dimensions (for example, if +questions have to be repeated for each of the 7 days of week), while others +may change their dimensions depending on the value of the roster trigger.

NB: roaster and rooster are incorrect spellings of roster that +sometimes occur in our users’ forum discussions.

Roster item

An element of a roster, part of a collection of items, over which +the questions are repeated. A roster item typically corresponds to a row in +a table in paper-based surveys.

Roster trigger

A question in the questionnaire that determines the size +(number of roster items) of the roster.

Sample file

An input to the sample-based survey, which contains identifying information for +all the units being surveyed. This file is used by Survey +Solutions to automatically create individual assignments for these units.

Section

A group of questions, subsections, static texts or other +elements of a questionnaire. Typically equivalent to a +chapter or module of a paper-based survey.

Subsection

A group of questions smaller than a section. May include other +subsections. Typically correspond to a smaller topic or a sub-topic of a survey.

Survey data

A downloadable data file containing answers to survey questions in a format +accessible by other systems. Cf. +metadata, paradata.

Survey unit

Units corresponding to the main level of the interview. Typically +these are:

  • households,
  • persons,
  • enterprises,
  • facilities, etc.

But could be more specialized:

  • transactions,
  • events,
  • measurements, etc.

Synchronization

A process of information exchange between two devices, in which they are +actualized to make sure each device has necessary information about the +activities that occurred on the other device.

Syntax

Formal notation for expressions and conditions used in Survey Solutions. It is +used by the questionnaire designer to specify enabling conditions, +validation conditions, filter conditions, +and define calculated variables.

Syntax error

A compilation error caused by invalid syntax +specification. A questionnaire free of syntax errors is not +necessarily correct (may still contain limit errors or implement invalid logic).

Team

All interviewers having a common supervisor. In some reports may include the +supervisor himself/herself. (In different arrangements the team may or may not +be travelling together, and the supervisor may or may not be joining the +interviewers in the travel).

Tester App

An Android-based app implementing the functionality for testing questionnaires +during their development and utilized by questionnaire designers and testers. +The Tester App is available from the +Google Play.

more info.

User

A registered and authenticated person that is using the Survey Solutions +system to perform a certain role in the survey data collection. +Users are different from respondents, which usually are +not registered.

Validation

A process of detecting problems with the responses to questions of an +interview. Involves using the responses (answers to questions) +as inputs in logically formulated expressions, the result of which determines +whether certain responses are acceptable or not. Validation may produce +validation errors.

Validation errors

Error messages issued as a result of the validation, indicating +that a certain answer or answers are not acceptable based on the logic of the +questionnaire developed by its author.

Workspace

A named logical compartment on the server containing +questionnaires, assignments, +interviews, and other information. Users may be given +permissions to access information in one or multiple workspaces by the +administrator. more info

\ No newline at end of file diff --git a/faq/how-can-i-request-localization-for-the-interviewer-and-tester-in-a-new-language-/index.html b/faq/how-can-i-request-localization-for-the-interviewer-and-tester-in-a-new-language-/index.html new file mode 100644 index 00000000..8a7d7d59 --- /dev/null +++ b/faq/how-can-i-request-localization-for-the-interviewer-and-tester-in-a-new-language-/index.html @@ -0,0 +1,29 @@ +How can I request localization for the Interviewer and Tester in a new language? +

How can I request localization for the Interviewer and Tester in a new language?

September 7, 2016

Please contact our developer team and +request the localization. We will review your request and, if approved, +we will send you Excel files with strings to translate. Once we receive +the files with translation from you, we will try integrating the new +translation into the next release.

However, you should realise that the initial translation is just part of +the localisation work. The most time consuming task is to support the +localization for the new versions. The localization files need to be +updated/expanded every time we add or change features in Survey +Solutions.

\ No newline at end of file diff --git a/faq/how-can-i-try-out-survey-solutions-/index.html b/faq/how-can-i-try-out-survey-solutions-/index.html new file mode 100644 index 00000000..e63cc24f --- /dev/null +++ b/faq/how-can-i-try-out-survey-solutions-/index.html @@ -0,0 +1,25 @@ +How can I try out Survey Solutions? +

How can I try out Survey Solutions?

July 22, 2016

Step 1: Develop a test questionnaire by following the instructions +in the Getting Started with Survey +Solutionsvideo tutorial.

Step 2: Explore the survey management system by following the +instructions in the Setting Up a Test Survey video tutorial.

Step 3: Should you have any further questions, please contact us.

\ No newline at end of file diff --git a/faq/how-much-does-survey-solutions-cost-/index.html b/faq/how-much-does-survey-solutions-cost-/index.html new file mode 100644 index 00000000..d0c8614f --- /dev/null +++ b/faq/how-much-does-survey-solutions-cost-/index.html @@ -0,0 +1,22 @@ +How much does Survey Solutions cost? +

How much does Survey Solutions cost?

July 22, 2016

The Survey Solutions software (both the server and the tablet components +that are necessary to conduct a survey) are available as a download from +our server for free.

\ No newline at end of file diff --git a/faq/how-secure-is-the-world-bank-cloud-/index.html b/faq/how-secure-is-the-world-bank-cloud-/index.html new file mode 100644 index 00000000..828c24f7 --- /dev/null +++ b/faq/how-secure-is-the-world-bank-cloud-/index.html @@ -0,0 +1,31 @@ +How secure is the World Bank Cloud? +

How secure is the World Bank Cloud?

June 7, 2017

The World Bank Cloud is doubly secure. +First, by relying on Amazon AWS, it provides best-in-class protections +for even the most security-sensitive organizations and their data. +External certifying bodies and independent security auditors have +awarded Amazon AWS the long list of security accreditations listed +below. Please visit AWS compliance resource +page for more +information.

Second, on top of Amazon AWS’ security protocols, the World Bank +provides an additional layer of protection through its own additional +security measures. Because its own data resides on its Cloud, the World +Bank provides its Cloud the highest level of protection.

 Certifications and Assurance ProgramsAmazon Web Services
1CIS (Center for Internet Security)
2CJIS (Criminal Justice Information Service)
3CLIA
4CMS Edge
5CMSR
6CSA
7DIACAP
8DISA Level 2
9DNB (Netherlands)
10DoD SRG
11EAR
12EU Data Protection Directive
13EU Safe Harbor / EU Model clauses
14FDA 21 CFR Part 11
15FedRAMP (SM)
16FERPA
17FIPS 140-2
18FISC
19FISMA
20GLBA
21GxP
22HIPAA
23HITECH
24ICREA
25IRAP (Australia)
26IRS - 1075
27IRS 1075
28ISO 27001
29ISO 27002
30ISO 27017
31ISO 27018
32ISO 9001
33ITAR
34IT-Grundschutz
35MITA 3.0
36MPAA
37MPLS Level 3 - Multi-Level Protection Scheme (China)
38MTCS Tier 3 Certification
39My Number Act (Japan)
40NERC
41NIST 800-53
42NZ GCIO
43PCI DSS Level 1
44PDPA (Malaysia)
45PDPA (Singapore)
46PHR
47Privacy Act (Australia)
48Privacy Act (New Zealand)
49Privacy Shield
50SEC Rule 17a-4(f)
51SEC Rule 17a-4(f)
52Section 508 / VPAT
53SOC 1/ ISAE 3402
54SOC 2
55SOC 3
56Spanish DPA Authorization
57U.K. DPA - 1988
58UK Cloud Security Principles
59UK Cyber Essentials Plus
60UK G-Cloud
61Uptime Institute Tiers
62VPAT / Section 508
\ No newline at end of file diff --git a/faq/how-to-cite-survey-solutions-in-a-publication-/index.html b/faq/how-to-cite-survey-solutions-in-a-publication-/index.html new file mode 100644 index 00000000..fcf83019 --- /dev/null +++ b/faq/how-to-cite-survey-solutions-in-a-publication-/index.html @@ -0,0 +1,24 @@ +How to cite Survey Solutions in a publication? +

How to cite Survey Solutions in a publication?

February 8, 2018

The suggested citation for Survey Solutions is:

The World Bank, 2018 Survey Solutions CAPI/CAWI platform: Release +5.26. Washington DC, The World Bank

Please, specify the version and year corresponding to the version you +were using at the time of the survey.

\ No newline at end of file diff --git a/faq/images/hq_farm.png b/faq/images/hq_farm.png new file mode 100644 index 00000000..7d7884d8 Binary files /dev/null and b/faq/images/hq_farm.png differ diff --git a/faq/images/hq_farm.py b/faq/images/hq_farm.py new file mode 100644 index 00000000..7e539c11 --- /dev/null +++ b/faq/images/hq_farm.py @@ -0,0 +1,27 @@ +from diagrams import Cluster, Diagram, Edge +from diagrams.custom import Custom +from diagrams.onprem.compute import Server +from diagrams.onprem.database import PostgreSQL +from diagrams.onprem.client import Users +from diagrams.onprem.network import Traefik + +from diagrams.onprem.network import Nginx + +graph_attr = { + "bgcolor": "transparent", + "pad": "1" +} + +clster_attr = { + "pad": "1" +} + +with Diagram("HQ Farm", show=False, graph_attr=graph_attr): + users = Users("users") + lb = Nginx("load balancer") + + with Cluster("Farm", direction="LR", graph_attr=clster_attr): + backend = [Server("HQ 1"), Server("HQ 2")] + + db = PostgreSQL("database") + users >> lb >> backend >> db diff --git a/faq/index.html b/faq/index.html new file mode 100644 index 00000000..2ff10670 --- /dev/null +++ b/faq/index.html @@ -0,0 +1,45 @@ +FAQ +

FAQ

Survey Solutions Server Hosting

Here are just some of the options you may have for placement of your +Survey Solutions data server:

Language

The Survey Solutions questionnaire can be designed in any language supported in Unicode. +See details in this article.

A questionnaire may be multilingual. See details in multilingual questionnaires

For the langauges applicable to Survey Solutions software components refer to the following table:

January 30, 2024

What tablets should I buy?

Technical Requirements

Survey Solutions software works with Android tablets with the following +specifications:

  • Version of Android OS:

    • Android 7.0 or better is required;
    • All versions of Android below 9.0 are +no longer supported +by the manufacturers and correspondingly tablets that can’t be updated to +Android 9.0 or above should be considered unsafe for the World Bank projects.
  • RAM: Minimum 1.5GB

    September 19, 2023

Server Requirements

Server requirements are periodically revised. The characteristics below are outlined for a server facilitating a survey of no more than 100,000 interviews. You may need a more powerful server if:

  • your survey is larger, or
  • you plan to host several surveys, or
  • if you plan to collect any multimedia data (photos, audio recordings, etc), or
  • there are other non-standard circumstances.

Requirements for the server depend on the use and the type of the survey. Below is a minimal configuration. Better hardware allows better performance.

August 28, 2023

Password issues

Click on the description of the case (1-15) below. Instructions vary depending on the type of password/login you are having an issue with.

1. Forgot your password for the Designer tool?
  1. Go to the Designer tool online: https://designer.mysurvey.solutions
  2. Click FORGOT PASSWORD?
  3. Enter your login (account name) or email address into the form field and click RESTORE.
  4. Check your email inbox for a new message with a password reset link.

IMPORTANT: The email address here is always the same email address that you’ve used to register.

June 22, 2023

Changing password

This article describes who can change passwords and for whom in the hierarchy of Survey Solutions users.

In the following table users assuming the role mentioned in the rows can change passwords of users mentioned in the columns.

ROLESadministratorheadquarterssupervisorinterviewerobserverAPI
administratoronly own passwordyesyesyesyesyes
headquartersnoonly own passwordonly if controlling this supervisor in all workspaces, to which the supervisor has accessonly if controlling this interviewer in all workspaces, to which the interviewer has accessnono
supervisornonoonly own passwordnonono
interviewernononoonly own passwordnono
observernononononono
APInononononono
Note also:
  1. To change own password the user needs to enter the old password in addition to the new password. To change the password of another user (when permitted) there is no need to enter the value of the old password.

    June 22, 2023

Navigation to Destination

This article describes the features of Survey Solutions related to guiding the +field workforce (interviewers and supervisors) to the particular destinations +(typically dwellings/households).

This is especially useful when the target location for interview is known +(coordinates known), which helps finding the proper way to the destination in +the situations of:

  • panel surveys (coordinates are known from previous wave of the survey);
  • cross-sectional surveys on geo-coded frames (households comprising the +sampling frame are recorded with their coordinates during the precedeing +listing or census enumeration);
  • cross-sectional multi-visit survey (coordinates are recorded during the +first visit, then re-used for subsequent visits);
  • audit survey (coordinates are recorded by the interviewers during the main +survey, then reused by auditors during the audit survey).

While we are mainly thinking of the location of the household or dwelling, it +is not essential for Survey Solutions, and the destination can equally be the +location of an enterprise, farm, plot, school, hospital, a generic facility, +a landmark, a water source, etc.

April 25, 2023

Android App Permissions

Android permissions regulate access of apps to particular functionality. When +it comes to Survey Solutions the following permissions are requested:

  1. Access to camera: is used to:
  • recognize qrcodes when setting up the application (enter synchronization point address);
  • recognize qrcodes/barcodes when answering the corresponding question type in the interview;
  • take pictures (answer picture type question).
  1. Access to microphone is used to:
  • answer audio type question;
  • record audio audit data during interview (all the time from the point of opening the interview to the point of closing the interview).
  1. Access to location is used to:
  • answer GPS location question;
  • answer geography question with automatic or semiautomatic modes;
  • permit near field communication for synchronization between the Interviewer and Supervisor apps.
  1. Access to files and media is used to:
  • pick photographs from the gallery as answers to picture questions;
  • store maps received from the HQ;
  • store troubleshooting packages.
  1. Access to nearby devices is used to:
  • establish connection for synchronization between the Interviewer and Supervisor apps.

The apps generally request the permissions when they are about to execute the +action, for which the permission is needed. For example, a camera permission +may be requested when the user wishes to answer a picture question.

April 24, 2023

Solutions website

Q: I am trying to access the website https://solutions.worldbank.org, +but it shows an error. What do I need to do?

A: In the past, the address https://solutions.worldbank.org has led to +the Designer tool from the Survey Solutions tool set. Now the Designer is +accessible from this page: https://designer.mysurvey.solutions.

Some older presentations or instructions guides may still refer to the older +address if they were not updated in the meanwhile.

April 21, 2023

Where is My Interview?

This page is summarizing information that may help resolve the issue of the user not being able to find interviews. All of the below situations were encountered in practice while troubleshooting users’ reports of “Data loss” (no matter how absurd they may sound).

None of the situations described below constitutes a defect or a bug, as in these cases data is not lost by the system itself, but rather it is erased as a result of a specific and predictable action by the user.

March 28, 2023
\ No newline at end of file diff --git a/faq/instructions-for-translators/index.html b/faq/instructions-for-translators/index.html new file mode 100644 index 00000000..6740e6ec --- /dev/null +++ b/faq/instructions-for-translators/index.html @@ -0,0 +1,43 @@ +Instructions for the Translators of the Survey Solutions Interface +

Instructions for the Translators of the Survey Solutions Interface

August 20, 2021
  • You receive a single Excel file and these instructions. You deliver just the translated Excel file.
  • Do not rename the spreadsheet. Do not convert to any other file format.
  • Translate text from column E (titled INVARIANT) to column F (titled with your language).
  • If you can’t translate the original text for any reason, the translation should be left blank (do not copy text from column E to column F in this case).
  • Do not modify any other text/cells anywhere else in the spreadsheet, even if there is a typo in +the original text (feel free to notify about any discovered typos or problems in your email message, but not in this file).
  • Do not add or remove any lines.
  • Do not distort the HTML tags, such as: <br/>
  • Do not touch anything inside the curly brackets {}, for example "{value}" must remain "{value}" , do +not translate the word “value” inside the curly brackets.
  • Some texts may contain terms in dual curly brackets {{}}, for example "{{count}} interviews will be approved.". Maintain the nesting in the translation. Do not reduce to {}.
  • The translation MUST HAVE all the same entries {0}, {1}, … as the +original! (If there were three in the original, must be the same three mentioned +in the translation). The order of mentioning may be changed, however, for example: +“File {0} may not be sent to {1}” –> “May not sent to {1} the following file {0}”
  • The meaning of placeholders {0}, {1} may only be guessed from the texts. The same +placeholder may be mentioned several times in the message, for example: +"{0} is wrong, enter any other value than {0}!". +In which case {0} means the same thing and it must be mentioned AT LEAST ONCE in the +message, but for convenience MAY BE mentioned more than once.
  • Messages may contain text that shouldn’t be translated, for example: +“Optionally can specify the following columns:<br/> +_responsible - username of a headquarters, supervisor or an +interviewer who will be responsible for the assignment;” +In this case the text "_responsible" is a specific column name and must remain the same word +in any translation. Same applies to:
    • emails: e.g. someone@mysurvey.solutions;
    • web addresses: https://designer.mysurvey.solutions (do not translate each word);
    • file extensions: .pdf, .zip, .xlsx, .dta, .sav, etc;
    • names of programs: Stata, SPSS, Survey Solutions;
    • terms that are internationally known under English abbreviation GPS, UTF-8, Unicode, +etc.
  • You may decide to translate units Kb, MB, GB, or keep them in English, whichever is more +prevalent/intuitive.
  • Pay attention to details. There may be very similar terms with minute differences.
  • The terms questionnaire, interview, and assignment mean different documents in +Survey Solutions and the difference must be maintained in the translation.
  • The terms interviewer and enumerator mean the same thing in Survey Solutions. +Translators may opt to use a single term do denote either.
  • You may want to refer to the glossary online to double check the meaning of some of the terms as we apply them.
  • Use of quotes: different languages have different conventions to quote the text. In some places (such as in HTML tags: <font color=“red”>No internet connection</font> +) specifically the unicode quotation mark character is expected (") (Unicode number +U+0022) and should not be replaced with any other type of quotes, such as («) („) etc.

Warning:

Copy/Pasting from other software may result in insertion of invisible control +characters, which may result in an unpredictable behavior or prevent integration +of the translation file. Hence it is recommended typing-in the translation +directly into the Excel spreadsheet.
\ No newline at end of file diff --git a/faq/is-internet-access-required-during-interviews-/index.html b/faq/is-internet-access-required-during-interviews-/index.html new file mode 100644 index 00000000..856cf54c --- /dev/null +++ b/faq/is-internet-access-required-during-interviews-/index.html @@ -0,0 +1,24 @@ +Is Internet access required during interviews? +

Is Internet access required during interviews?

September 7, 2016

No. Internet access is only required to synchronize data and case +assignments, and is not needed during interviews. In some cases the +interviewers might go without connection for weeks (for example, remote +islands in the Pacific). They synchronize with the server when they +reach the location with 3G of WiFi internet coverage.

\ No newline at end of file diff --git a/faq/is-the-designer-tool-online-now-/index.html b/faq/is-the-designer-tool-online-now-/index.html new file mode 100644 index 00000000..e3a76b51 --- /dev/null +++ b/faq/is-the-designer-tool-online-now-/index.html @@ -0,0 +1,36 @@ +Is the Designer tool online now? +

Is the Designer tool online now?

September 30, 2019

The Survey Solutions Designer tool is a web-based tool and is accessible +over the Internet. As with any website, when you can’t use the site, it +could be:

  • a problem with the site,
  • a problem with connection, or
  • a problem with your own device.

In order to identify if the problem is with the site or related +specifically to you, other devices can be used to try accessing the same +site. There are many services of this kind in the Internet, which by +probing from multiple IPs can conclude whether the site is up and +running, experiencing significant delays, or is working fine.

Before reporting that any of the sites (Survey Solutions cloud server or +Designer, etc) are “not working” verify it with one or more of the +tools below.

We watch the report generated by UptimeRobot here for our main sites.

Other tools may be used to check if the site is available, for example, +from your region. Please note that neither the World Bank Group, nor the +Survey Solutions developers are in any way affiliated with these +services:

Or use other tools of this kind that can provide an objective measure of +the availability of the resource. If the tools above indicate that the +site is available, but you still can’t reach it, please contact your +system or network administrator who will be able to help resolve the +situation.

\ No newline at end of file diff --git a/faq/is-there-an-offline-version-of-the-questionnaire-designer-/index.html b/faq/is-there-an-offline-version-of-the-questionnaire-designer-/index.html new file mode 100644 index 00000000..9c075990 --- /dev/null +++ b/faq/is-there-an-offline-version-of-the-questionnaire-designer-/index.html @@ -0,0 +1,26 @@ +Is there an offline version of the questionnaire designer? +

Is there an offline version of the questionnaire designer?

September 7, 2016

No. The Questionnaire Designer can only be used online. Survey Solutions +evolves very rapidly and we are introducing new features with each +monthly release. An online designer allows us to maintain the version +compatibility. Another argument in favor of online designer is that in +order to use any CAPI software a tablet has to communicate to a server. +So, the internet connection is necessary for data collection and thus +should also be available for Questionnaire Designer.

\ No newline at end of file diff --git a/faq/issue-reporting/index.html b/faq/issue-reporting/index.html new file mode 100644 index 00000000..59176436 --- /dev/null +++ b/faq/issue-reporting/index.html @@ -0,0 +1,26 @@ +Support checklists +

Support checklists

April 2, 2021

When reporting a technical problem in Survey Solutions, you may be requested by +our team member to collect the information based on one of the following lists.


Orange list

#information itemexample
1Full server name. Please, do not write 'my server', 'our server', 'one of our servers'.https://demo.mysurvey.solutions
2Exact date and time when you tried to access the server, specify +your time zone.Aug 7, 2019 at 16:34 UTC+2:00
or
Aug 1, 2019 at 06:59 Pacific Standard Time
3Include your IP address from which you tried to access the server. +To determine it, type my ip in the Google search +box.127.0.0.1
4A screenshot with the report of the tools listed here
5A screenshot with the server response (what you are seeing +when you are trying to access the server).

Red list

#information itemexample
1Full server name. Please, do not write 'my server', 'our server', 'one of our servers'.https://demo.mysurvey.solutions
2User name (login) of the user(s) experiencing the problemIntJohn
3Date and time when the problem was last experienced, (if known, also when the problem was first experienced)Aug 7, 2019 at 16:34 Pacific Standard Time.

Blue list

#information itemexample
1Full server name. Please, do not write 'my server', 'our server', 'one of our servers'.https://demo.mysurvey.solutions
2User name (login) of the user(s) experiencing the problemIntJohn
3Date and time when the problem was last experienced, (if known, also when the problem was first experienced)Aug 7, 2019 at 16:34 Pacific Standard Time.
4Version of the Android operating system on the tablet of the affected interviewerAndroid 6.0.1.
5Survey Solutions Interviewer App version on the tablet of the affected interviewer19.07.5 (build 25531).
6Send tablet information: on the tablet of the affected interviewer go to the
MENU --> Diagnostics --> 'Collect and send to HQ all tablet information'.
7Date and time when the support package was sent by that interviewer to the HQ (step #6)Aug 7, 2019 18:39 Pacific Standard Time.

Green list

#information itemexample
1Full server name. Please, do not write 'my server', 'our server', 'one of our servers'.https://demo.mysurvey.solutions
2User name (login) of the user(s) experiencing the problemIntJohn
3Date and time when the problem was last experienced, (if known, also when the problem was first experienced)Aug 7, 2019 at 16:34 Pacific Standard Time.
4Version of the Android operating system on the tablet of the affected interviewerAndroid 6.0.1.
5Survey Solutions Interviewer App version on the tablet of the affected interviewer19.07.5 (build 25531).
6Send tablet information: on the tablet of the affected interviewer go to the
MENU --> Diagnostics --> 'Collect and send to HQ all tablet information'.
7Date and time when the support package was sent by that interviewer to the HQ (step #6)Aug 7, 2019 18:39 Pacific Standard Time.
8Assignment number and/or the interview key and status with which the user is experiencing the probleminterview 32-64-12-90 from assignment nr. 2317.
\ No newline at end of file diff --git a/faq/language/images/languages_flags.jpg b/faq/language/images/languages_flags.jpg new file mode 100644 index 00000000..e9a818a3 Binary files /dev/null and b/faq/language/images/languages_flags.jpg differ diff --git a/faq/language/images/languages_flags_hu5891970841548951643.jpg b/faq/language/images/languages_flags_hu5891970841548951643.jpg new file mode 100644 index 00000000..57204e46 Binary files /dev/null and b/faq/language/images/languages_flags_hu5891970841548951643.jpg differ diff --git a/faq/language/index.html b/faq/language/index.html new file mode 100644 index 00000000..dd4ebd4d --- /dev/null +++ b/faq/language/index.html @@ -0,0 +1,23 @@ +Language +

Language

January 30, 2024

The Survey Solutions questionnaire can be designed in any language supported in Unicode. +See details in this article.

A questionnaire may be multilingual. See details in multilingual questionnaires

For the langauges applicable to Survey Solutions software components refer to the following table:


LanguageInterviewer (App)HeadquartersDesigner

English+++
Russian+++
French+++
Spanish+++
Chinese+++
Czech+++
Ukrainian+++

Arabic++-
Portuguese++-
Georgian++-
Romanian++-

Indonesian+--
Khmer+--
Thai+--
Vietnamese+--

How to switch the language?readmereadmereadme

\ No newline at end of file diff --git a/faq/local-installation-interviwer-app-cannot-connect-to-the-server-over-https/index.html b/faq/local-installation-interviwer-app-cannot-connect-to-the-server-over-https/index.html new file mode 100644 index 00000000..b04a1f77 --- /dev/null +++ b/faq/local-installation-interviwer-app-cannot-connect-to-the-server-over-https/index.html @@ -0,0 +1,41 @@ +Local Installation: Interviewer App cannot connect to the server over HTTPS +

Local Installation: Interviewer App cannot connect to the server over HTTPS

January 9, 2018

Note:

This issue has been resolved in version 18.12 (23416).

Symptoms:
When Interviewer app is trying to connect to the Headquarters +application on a local server over the secure http (https) protocol +synchronization process fails with an error “NO CONNECTION TO THE SURVEY +SOLUTIONS SUPERVISOR. PLEASE MAKE SURE THAT THE WEBSITE IS AVAILABLE”.

The Headquarters application is setup correctly, with a valid security +certificate, and in the mobile browser on the Android device users can +successfully access it without any errors or warnings.

The Headquarters application is hosted on a server running Windows 2016.

Explanation:
Communication fails due to a bug in one of the external libraries used +in Interviewer app. That library breaks when trying to setup a secure +connection over http/2 - version 2 of the http protocol.

The error doesn’t happen on 1.1 version, neither when using unsecured +http/2.

Starting from Windows 10 desktop and Windows 2016, IIS started +supporting (and using by default) http/2 and that is the reason why the +users who use this combination secured connection with the application +on Windows 2016 encounter the failed communication error.

Solution:
We are working on introducing changes in our code that would remedy this +error and once those changes are out, we will update this article and +consider the problem resolved.

Meanwhile, workarounds to this problem include:

  • Use Windows 2012.
  • Use http protocol (not recommended for real data-collection but +may be a quick solution during initial testing).
  • Disable http/2 in Windows 2016 and use http/1.1 instead.

You can disable using http/2 for https connections by adding DWORD +value with name EnableHttp2Tls to +HKEY\_LOCAL\_MACHINE\\System\\CurrentControlSet\\Services\\HTTP\\Parameters +and setting it to 0.

The changes will take effect after server is restarted.

Warning:

Serious problems might occur if you modify the registry +incorrectly so only attempt to do above if you are comfortable with +manually editing registry have a backup of the registry and/or whole +system.
\ No newline at end of file diff --git a/faq/my-questionnaire-is-not-as-fast-as-it-used-to-be-why-/index.html b/faq/my-questionnaire-is-not-as-fast-as-it-used-to-be-why-/index.html new file mode 100644 index 00000000..b70ef506 --- /dev/null +++ b/faq/my-questionnaire-is-not-as-fast-as-it-used-to-be-why-/index.html @@ -0,0 +1,35 @@ +My questionnaire is not as fast as it used to be. Why? +

My questionnaire is not as fast as it used to be. Why?

December 13, 2017

The Survey Solutions software is being very actively developed and every +new release adds new features, optimizations and efficiency +improvements. However, sometimes the support team receives inquiries +regarding the decrease of performance of the interviewer’s app, perhaps +after an update. Here it is important to make sure that a valid +comparison is made. A few common explanations to consider:

ReasonExplanation
1. The questionnaire has changedThis is by far the most common reason. The user tests a version of the questionnaire, then sends it to partners for feedback, then incorporates "the finishing touches": add two checks here, two checks there, two hundred checks over there. By the time all of these changes are made the questionnaire may not even resemble the original version before the pilot.
Comparisons are valid provided that the questionnaire is invariant!
2. Different testing scenario.The amount of checks performed by the device is data dependent. If the tests were done for "a family of two" the responsiveness may be very different when you redo it for "a family of twelve".
3. The tablet could have changed. The user tests the questionnaire using a tablet specifically purchased for the development team. But for the data collection team, a cheaper model questionnaire is purchased. It is expected the hardware will affect the performance. 
Test the questionnaire performs responsively on the model that you will be using for data collection!
4. The performance affected by 3rd party apps.Check if there are any other apps running on the tablet that may affect the performance. Remember that they may update themselves even without your involvement if application auto update is activated. They may compete for resources with Survey Solutions and decrease the performance.
Install only what you need. Uninstall everything you don't. Restrict interviewers' accounts to eliminate possibility of installing unwanted apps.
5. Imperfect measurement.User tested the "speed of the questionnaire" by measuring the total time it takes to enter some values. In the field the time became longer. This can be due to any of the reasons related to the real communication between two people (need to repeat questions, revise earlier answers, think about what is being asked, what are the answers, how to record them into the questionnaire, etc) compared to a rehearsed procedure of entering a specific test example.
6. Comparing apples with oranges."The questionnaire used to work faster before! Yes, before it was not in Survey Solutions, and not on an Android tablet, but on a Windows server, and we didn't have any validation checks or calculated expressions, but it was faster".
No comment.
7. Wishful thinking.No objective measurement was taken to measure the performance of the questionnaire during testing, then when the survey started and things start to matter, the questionnaire performance is deemed inadequate. 
Test during preparation.

Survey Solutions has very flexible and powerful language and multiple +strategies for questionnaire implementation. Copying paper +questionnaires is usually a common mistake that leads to inefficient +questionnaires and inadequate responsiveness. A second opinion of a +reviewer helps identify these inefficiencies and get an advice on how to +improve the questionnaire.

\ No newline at end of file diff --git a/faq/my-survey-solutions-server-is-not-the-latest-version-can-i-still-use-it-with-new-surveys-/index.html b/faq/my-survey-solutions-server-is-not-the-latest-version-can-i-still-use-it-with-new-surveys-/index.html new file mode 100644 index 00000000..15ea8547 --- /dev/null +++ b/faq/my-survey-solutions-server-is-not-the-latest-version-can-i-still-use-it-with-new-surveys-/index.html @@ -0,0 +1,25 @@ +My Survey Solutions server is not the latest version. Can I still use it with new surveys? +

My Survey Solutions server is not the latest version. Can I still use it with new surveys?

September 7, 2016

It is recommended that you upgrade your server to the latest version, but +as long as you use only features that were available on your version of +the server the new survey should work on the older server. Please note +that you will not be able to import to the server questionnaires with +features introduced in versions that are later than the version of your +server.

\ No newline at end of file diff --git a/faq/navigation-to-destination/images/dashboard.jpg b/faq/navigation-to-destination/images/dashboard.jpg new file mode 100644 index 00000000..dadafcba Binary files /dev/null and b/faq/navigation-to-destination/images/dashboard.jpg differ diff --git a/faq/navigation-to-destination/images/dashboard_show_location.jpg b/faq/navigation-to-destination/images/dashboard_show_location.jpg new file mode 100644 index 00000000..7eeaa5ec Binary files /dev/null and b/faq/navigation-to-destination/images/dashboard_show_location.jpg differ diff --git a/faq/navigation-to-destination/images/google_maps_destination.jpg b/faq/navigation-to-destination/images/google_maps_destination.jpg new file mode 100644 index 00000000..dfac7c93 Binary files /dev/null and b/faq/navigation-to-destination/images/google_maps_destination.jpg differ diff --git a/faq/navigation-to-destination/images/mapping_app_choice.png b/faq/navigation-to-destination/images/mapping_app_choice.png new file mode 100644 index 00000000..bb3f07b1 Binary files /dev/null and b/faq/navigation-to-destination/images/mapping_app_choice.png differ diff --git a/faq/navigation-to-destination/images/waze_destination.jpg b/faq/navigation-to-destination/images/waze_destination.jpg new file mode 100644 index 00000000..6c7d9a73 Binary files /dev/null and b/faq/navigation-to-destination/images/waze_destination.jpg differ diff --git a/faq/navigation-to-destination/index.html b/faq/navigation-to-destination/index.html new file mode 100644 index 00000000..57278ba6 --- /dev/null +++ b/faq/navigation-to-destination/index.html @@ -0,0 +1,81 @@ +Navigation to Destination +

Navigation to Destination

April 25, 2023

This article describes the features of Survey Solutions related to guiding the +field workforce (interviewers and supervisors) to the particular destinations +(typically dwellings/households).

This is especially useful when the target location for interview is known +(coordinates known), which helps finding the proper way to the destination in +the situations of:

  • panel surveys (coordinates are known from previous wave of the survey);
  • cross-sectional surveys on geo-coded frames (households comprising the +sampling frame are recorded with their coordinates during the precedeing +listing or census enumeration);
  • cross-sectional multi-visit survey (coordinates are recorded during the +first visit, then re-used for subsequent visits);
  • audit survey (coordinates are recorded by the interviewers during the main +survey, then reused by auditors during the audit survey).

While we are mainly thinking of the location of the household or dwelling, it +is not essential for Survey Solutions, and the destination can equally be the +location of an enterprise, farm, plot, school, hospital, a generic facility, +a landmark, a water source, etc.

In the specific case of spatial sampling, the coordinates may be those ones of +an imaginary grid cell’s center, which have no recognizable mark on the ground, +yet each interviewer may need to arrive to the spot from which they can explore.

One should remember that due to accuracy of the technology the location +coordinates may not be sufficient to identify the exact target and the +coordinates should be supplemented with other identification variables, which +vary by context of the survey, but commonly include the street address, +company name, or textual description of the destination.

Having the coordinates of the targeted households greately simplifies the +navigation of interviewers, who may need to return to the same location for +example, to finish the started interviews, that were postponed. But they are +even more important when the interviewers need to arrive to a particular +location, which they have not visited before, such as the location of the +households sampled from the list of the households in a particular area +enumerated during the census.

When the target coordinates are preloaded for the interviewers, they are +typically included in a question at the cover page, and thus are protected +from the interviewer’s modification (the interviewers can only see where the +household is located, but can’t change it). In other cases, the cover page +variable may be left blank, in which case the interviewer needs to fill it out +himself/herself, and which can be used subsequently for verification by the +supervisor or auditing interviewer.

1.

Identify one of the cards, corresponding to the household the +interviewer wishes to proceed next. Here we will try to reach +the household corresponding to assignment #19.

2.

Click on the three dots (horizontal) icon to unfold the card revealing the +START NEW INTERVIEW and SHOW LOCATION buttons. Click on the SHOW LOCATION +button.

3.

Select which external App will be used for navigation. Your mobile device may +sugget multiple choices from the Apps already installed (such as Google maps +or Uber) and you can extend these choices by adding another App from the +Google Play. These maps are mostly the Apps that handle maps or +transportation-related, such as various taxi apps.

Warning: some of these apps may cost you money! Check before downloading and +using! There is usually plenty of free alternatives, though they vary by +country, version of Android, and other factors.

Here we chose between Google Maps, Maps.Me, and Waze:

We can also specify whether the selected App should be used just once (for +this target only) or always (for this and all future ones).

4.

After we selected the App, it will start and receive the target coordinates +from the Survey Solutions Interviewer App, which can then be used to plan the +travel to the destination:

Depending on the App and connectivity status it may provide all or some of +the following:

  • indication of the current position on the map;
  • indication of the target position the map;
  • selection of various map layers (satellite, terrain, etc);
  • selection of labels (street names, etc);
  • position of visible landmarks;
  • calculation of distance from current location to target;
  • calculation of time needed to get from the current location to target;
  • correction of optimal route and time to travel depending on the preferred +mode of transportation (on foot, by bike, by car, using public transportation);
  • turn-by-turn navigation;
  • bus transfers, train transfers, etc;
  • traffic conjestion areas;
  • cost estimates;
  • street view photography.

Some of these apps support storing the data needed for their work on the +user’s device to allow working while disconnected, which may require setting up +while connected to the Internet (for example, cacheing of the map data by +Google Maps). Some functionality may not be available while disconnected (for +example, pedestrian navigation for Google Maps) where it requires processing on +that App’s server.

Users should realize that the accuracy of the maps, routing, timing and cost +estimates produced by these Apps are the responsibility of the corresponding +App’s authors and maintainers. Survey Solutions Interviewer App installed on a +mobile device collaborates with them by:

  • providing the destination coordinates only;
  • doing this only on demand of the interviewer (supervisor) that presses the +corresponding button;
  • installing of these Apps and usage of this service is optional.

Storing the data offline (mostly the map tiles/satellite photography) takes +considerable space on the mobile device and must be factored in when estimating +the required storage space needed for data collection/device procurement.

Some apps include additional restrictions on the use of the stored maps data. +For example, limiting the download and storage of a country’s map data only for +devices that are already located in that country, and not permitting storing it +for devices located abroad. Consult the individual App’s policies and support +to find out more details about the possible limitations.

See also:

\ No newline at end of file diff --git a/faq/notes-on-compatibility-with-version-5-21/index.html b/faq/notes-on-compatibility-with-version-5-21/index.html new file mode 100644 index 00000000..6abb2664 --- /dev/null +++ b/faq/notes-on-compatibility-with-version-5-21/index.html @@ -0,0 +1,80 @@ +Notes on Compatibility with version 5.21 +

Notes on Compatibility with version 5.21

July 5, 2017

With version 5.21, we are making a big change by replacing census and +sample mode with assignments. Previously when importing a questionnaire, +users had to decide between sample mode (with a quantity of 1 interview +per case) and census mode (with an unlimited quantity of interviews). +With version 5.21, users will simply import the questionnaire and then +proceed to making assignments with the imported template. Assignments +will give headquarters users more flexibility because they can now +specify the quantity of interviews they want when they generate each +assignment.

What’s New with Assignments

  • Users will no longer be asked to specify census mode or sample mode +when importing a questionnaire
  • Headquarters/admin can now specify the quantity of interviews they +would like an interviewer to perform for each assignment. +Headquarters/admin users will still be able to o specify an +unlimited number of interviews per assignment (previously known as +census mode). To specify an unlimited quantity when creating +assignments one at a time, leave the *Quantity *field blank when +creating the assignment. To add quantity in batch uploads for +assignments, add a column titled _quantity to your tab delimited +file to specify the quantity for each assignment. To specify an +unlimited quantity, put ‘-1’ in the _quantity column for that +assignment.
  • Assignments can now be made to either supervisors or interviewers. +Previously, assignments could only be made to supervisors.
  • Headquarter/admin users are no longer required to to fill out all +the identifying variables when making an assignment.
  • Interviewers can fill in any identifying information that was left +blank by the headquarters/admin users when the assignment was +created.
  • Interviewers can discard incomplete interviews that are made +accidentally or are no longer valid.

Compatibility with older versions

If you currently have a survey in the field and the tablets have the +Interviewer application of versions earlier than 5.21, it is not +necessary to update the interviewer application on the tablets to +proceed with fieldwork. To prevent disruption to your fieldwork, version +5.21 on the server will be backwards compatible with previous versions +of the Interviewer application. Below are important information on +compatibility:

  • Synchronization to the server: Synchronization of completed and +rejected interviews on tablets with Interviewer application versions +earlier than 5.21 will work the same as before.
  • Making assignments with a template imported in an older version: +Assignments can still be made to supervisors/interviewers with +templates imported on versions older than 5.21. The interviewer +application does not need to be updated to 5.21 to receive these +assignments made with questionnaires imported in an older version. +Similar to previous versions, interviewers will see one card per +interview. Additionally, assignments can be made using templates +imported in older versions to tablets running version 5.21 of +Interviewer applications. The cards for the assignments will look +the same as an assignment created with a template imported in +version 5.21.
  • Making assignments with a newly imported template to an older +version of the Interviewer application: If you make any +assignments with a questionnaire template imported after your server +has been updated to version 5.21, then the interviewers will have to +update their Interviewer applications to version 5.21 in order to +receive any assignments made with those templates. Interviewers will +see an error when they try to login prompting them to update their +Interviewer application. Interviewers can update in the Interviewer +application by going to the link in the Diagnostics screen.
  • Interviews created in previous versions: You will still be able +to see and complete interviews created with earlier versions after +updating the Interviewer application to version 5.21. However, these +interviews cannot be discarded.
  • Census mode questionnaires: Questionnaires imported as census +mode will have the same functionality as before. It will have the +added feature of being able to discard an interview that has been +started.
  • Batch upload of assignments: Users can continue to use the same +batch upload tab files that they used in previous versions. If the +tab file has no quantity column (column title: _quantity) or the +quantity is left blank, then one interview will automatically be +created for each assignment.
\ No newline at end of file diff --git a/faq/page/1/index.html b/faq/page/1/index.html new file mode 100644 index 00000000..776a03c0 --- /dev/null +++ b/faq/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/faq/ + \ No newline at end of file diff --git a/faq/page/2/index.html b/faq/page/2/index.html new file mode 100644 index 00000000..07241cd2 --- /dev/null +++ b/faq/page/2/index.html @@ -0,0 +1,94 @@ +FAQ +

FAQ

Browser requirements

The online components of Survey Solutions software (Designer, Web Tester, Headquarters, Web Interviewer) work with any modern web browser: Chrome, Safari, Firefox, Microsoft Edge.

Microsoft Internet Explorer of any version is neither recommended nor supported at this time.

January 25, 2023

Security review results

We are constantly on the lookout for new threats and periodically issue patches +for any detected vulnerabilities that have a proven potential to be exploited +to intercept data or intervene into the operation of the system, notably, our +recent release 21.06.

Our security policy is located +here. +The inventory of currently reported security advisories is published +here.

August 27, 2021

Instructions for the Translators of the Survey Solutions Interface

  • You receive a single Excel file and these instructions. You deliver just the translated Excel file.
  • Do not rename the spreadsheet. Do not convert to any other file format.
  • Translate text from column E (titled INVARIANT) to column F (titled with your language).
  • If you can’t translate the original text for any reason, the translation should be left blank (do not copy text from column E to column F in this case).
  • Do not modify any other text/cells anywhere else in the spreadsheet, even if there is a typo in +the original text (feel free to notify about any discovered typos or problems in your email message, but not in this file).
  • Do not add or remove any lines.
  • Do not distort the HTML tags, such as: <br/>
  • Do not touch anything inside the curly brackets {}, for example "{value}" must remain "{value}" , do +not translate the word “value” inside the curly brackets.
  • Some texts may contain terms in dual curly brackets {{}}, for example "{{count}} interviews will be approved.". Maintain the nesting in the translation. Do not reduce to {}.
  • The translation MUST HAVE all the same entries {0}, {1}, … as the +original! (If there were three in the original, must be the same three mentioned +in the translation). The order of mentioning may be changed, however, for example: +“File {0} may not be sent to {1}” –> “May not sent to {1} the following file {0}”
  • The meaning of placeholders {0}, {1} may only be guessed from the texts. The same +placeholder may be mentioned several times in the message, for example: +"{0} is wrong, enter any other value than {0}!". +In which case {0} means the same thing and it must be mentioned AT LEAST ONCE in the +message, but for convenience MAY BE mentioned more than once.
  • Messages may contain text that shouldn’t be translated, for example: +“Optionally can specify the following columns:<br/> +_responsible - username of a headquarters, supervisor or an +interviewer who will be responsible for the assignment;” +In this case the text "_responsible" is a specific column name and must remain the same word +in any translation. Same applies to:
    • emails: e.g. someone@mysurvey.solutions;
    • web addresses: https://designer.mysurvey.solutions (do not translate each word);
    • file extensions: .pdf, .zip, .xlsx, .dta, .sav, etc;
    • names of programs: Stata, SPSS, Survey Solutions;
    • terms that are internationally known under English abbreviation GPS, UTF-8, Unicode, +etc.
  • You may decide to translate units Kb, MB, GB, or keep them in English, whichever is more +prevalent/intuitive.
  • Pay attention to details. There may be very similar terms with minute differences.
  • The terms questionnaire, interview, and assignment mean different documents in +Survey Solutions and the difference must be maintained in the translation.
  • The terms interviewer and enumerator mean the same thing in Survey Solutions. +Translators may opt to use a single term do denote either.
  • You may want to refer to the glossary online to double check the meaning of some of the terms as we apply them.
  • Use of quotes: different languages have different conventions to quote the text. In some places (such as in HTML tags: <font color=“red”>No internet connection</font> +) specifically the unicode quotation mark character is expected (") (Unicode number +U+0022) and should not be replaced with any other type of quotes, such as («) („) etc.

Warning:

Copy/Pasting from other software may result in insertion of invisible control +characters, which may result in an unpredictable behavior or prevent integration +of the translation file. Hence it is recommended typing-in the translation +directly into the Excel spreadsheet.

August 20, 2021

Glossary

The following is a brief overview of the specialized terms used in Survey +Solutions. The meaning of these terms may be different from what you may +have experienced in other systems. Follow the links inside for more detailed +explanations in the support site articles.

2FA

(aka Two-factor authentication)

Security-enhancing feature requiring authentication of users with +two different procedures. In Survey Solutions the two factors are:

  • password, selected by the user, and
  • time-sensitive token (number) generated using an authenticator app +(typically installed on the user’s smartphone).

Assignment

A request/order to conduct one or more interviews as part of a +certain survey to a specific user of the Survey Solutions system. +Typically contains answers to one or more identifying fields that specify +where the data must be collected. (typically 1 document per unit of survey).

June 10, 2021

Support checklists

When reporting a technical problem in Survey Solutions, you may be requested by +our team member to collect the information based on one of the following lists.


Orange list

#information itemexample
1Full server name. Please, do not write 'my server', 'our server', 'one of our servers'.https://demo.mysurvey.solutions
2Exact date and time when you tried to access the server, specify +your time zone.Aug 7, 2019 at 16:34 UTC+2:00
or
Aug 1, 2019 at 06:59 Pacific Standard Time
3Include your IP address from which you tried to access the server. +To determine it, type my ip in the Google search +box.127.0.0.1
4A screenshot with the report of the tools listed here
5A screenshot with the server response (what you are seeing +when you are trying to access the server).

Red list

#information itemexample
1Full server name. Please, do not write 'my server', 'our server', 'one of our servers'.https://demo.mysurvey.solutions
2User name (login) of the user(s) experiencing the problemIntJohn
3Date and time when the problem was last experienced, (if known, also when the problem was first experienced)Aug 7, 2019 at 16:34 Pacific Standard Time.

Blue list

#information itemexample
1Full server name. Please, do not write 'my server', 'our server', 'one of our servers'.https://demo.mysurvey.solutions
2User name (login) of the user(s) experiencing the problemIntJohn
3Date and time when the problem was last experienced, (if known, also when the problem was first experienced)Aug 7, 2019 at 16:34 Pacific Standard Time.
4Version of the Android operating system on the tablet of the affected interviewerAndroid 6.0.1.
5Survey Solutions Interviewer App version on the tablet of the affected interviewer19.07.5 (build 25531).
6Send tablet information: on the tablet of the affected interviewer go to the
MENU --> Diagnostics --> 'Collect and send to HQ all tablet information'.
7Date and time when the support package was sent by that interviewer to the HQ (step #6)Aug 7, 2019 18:39 Pacific Standard Time.

Green list

#information itemexample
1Full server name. Please, do not write 'my server', 'our server', 'one of our servers'.https://demo.mysurvey.solutions
2User name (login) of the user(s) experiencing the problemIntJohn
3Date and time when the problem was last experienced, (if known, also when the problem was first experienced)Aug 7, 2019 at 16:34 Pacific Standard Time.
4Version of the Android operating system on the tablet of the affected interviewerAndroid 6.0.1.
5Survey Solutions Interviewer App version on the tablet of the affected interviewer19.07.5 (build 25531).
6Send tablet information: on the tablet of the affected interviewer go to the
MENU --> Diagnostics --> 'Collect and send to HQ all tablet information'.
7Date and time when the support package was sent by that interviewer to the HQ (step #6)Aug 7, 2019 18:39 Pacific Standard Time.
8Assignment number and/or the interview key and status with which the user is experiencing the probleminterview 32-64-12-90 from assignment nr. 2317.

April 2, 2021

Slow Tablets

Use the instructions below to diagnose tablets’ performance issues, which can manifest themselves as:

  • slowness (occasional or permanent) while working with the Interviewer App;
  • freezes for a considerable period of time;
  • crashes and restarts of the application;

or a combination of the above.

NB: For troubleshooting the synchronization errors, refer to the synchronization problems article.

  1. Check that the tablet is not in the low-power mode. If in the low-power mode, change to normal mode and retry (some tablets may need to restart, or sleep and wake up for the mode switch to become effective).

    February 8, 2021

Scalability of Survey Solutions

Overview

The Survey Solutions supports horizontal scaling and may be +deployed as a web-farm for servicing a large number of +client connections.

This is especially important for operations like population +censuses and large national surveys.

A web-farm installation is implemented on multiple systems +(called nodes) working in concert to service the received +requests. Increasing the number of nodes in the farm allows +to improve the overall performance: the responsiveness of +the system and number of users working simultaneously.

February 5, 2021

Deleting a survey

Survey deletion is possible, but as a dangerous operation is made +available only to server administrators. When a survey is deleted all +data collected as part of that survey is irretrievably and irreversibly +lost. Hence the same steps should be applied as described in actions +after the end of the +survey.

Make sure you backup your data before deleting a survey! Even if this +was training, pre-test, or a field test. In some cases even data +collected as part of such exercises can be invaluable for improving the +questionnaire, estimating the performance of interviewers, or duration +of the survey.

September 10, 2020

FAQ for email support

  1. Before writing your request, study the documentation +online, read the FAQ, and browse our users’ forum. +Don’t neglect Google or other search +engines. This is +usually the fastest way to get your issue resolved. It will also +help you to use the right terminology when asking a question.

  2. All of the questions of the kind +“Is it possible to do X in Survey Solutions?” +or “How do I do X in Survey Solutions?” +should not be sent to the support team directly, but rather be posted +to the user forum as public +questions.

    April 21, 2020

Is the Designer tool online now?

The Survey Solutions Designer tool is a web-based tool and is accessible +over the Internet. As with any website, when you can’t use the site, it +could be:

  • a problem with the site,
  • a problem with connection, or
  • a problem with your own device.

In order to identify if the problem is with the site or related +specifically to you, other devices can be used to try accessing the same +site. There are many services of this kind in the Internet, which by +probing from multiple IPs can conclude whether the site is up and +running, experiencing significant delays, or is working fine.

September 30, 2019
\ No newline at end of file diff --git a/faq/page/3/index.html b/faq/page/3/index.html new file mode 100644 index 00000000..8cfcde91 --- /dev/null +++ b/faq/page/3/index.html @@ -0,0 +1,72 @@ +FAQ +

FAQ

Server Not Working

Occasionally our users receive messages from their interviewers +that a certain server “…is not working”. In most cases this +is a problem with the user’s equipment used to access the server, +rather than the server itself.

The following tools may be helpful in determining whether it is +indeed a problem with the server or with a specific user’s device +trying to access that server:

These are the third-party tools and we neither produce, nor provide +any training or support related to these tools.

September 30, 2019

Which languages can be used in Survey Solutions questionnaires?

This article discusses the appearance (fonts / scripts) of a Survey Solutions +questionnaire. You may also be interested in:

The questionnaire instrument (questions, options, section names, error and warning messages, etc) +can be designed in any language supported in +Unicode. Survey Solutions allows text entry in Unicode +and the entered values will be preserved in the exported data (UTF-8).

September 18, 2019

Tablet manufacturers

If you need to get device-specific information or solve a hardware issue, +contact your tablet manufacturer for support or consult other users in +manufacturer-specific forums. Here are a few community forums lead by +the respective manufacturers:

August 23, 2019

Date and Time formats

This document uses the following notation to describe the date and time +formats:

  • Y - year
  • M - month
  • D - day
  • h - hour
  • m - minute
  • s - second
  • T - exactly letter T
  • {AM|PM} - one of the two time specifications AM or PM.
  • Mon - month abbreviated to 3 letters
  • Month - full month name.
  • DOW - day of week (such as Monday, Tuesday, etc).
  • TZ - timezone

Exported data

Survey Solutions writes date and time as strings in exported data files. +Here is how:

June 27, 2018

How to cite Survey Solutions in a publication?

The suggested citation for Survey Solutions is:

The World Bank, 2018 Survey Solutions CAPI/CAWI platform: Release +5.26. Washington DC, The World Bank

Please, specify the version and year corresponding to the version you +were using at the time of the survey.

February 8, 2018

Excessive interviews

Situation

Every interview in Survey Solutions is created based on an assignment, +which dictates how many interviews (often just one) must be +collected.

In some cases users receive more interviews at the server then the +assignment required.

This corresponds to values in the column “Count” are bigger than in the +column “Size” in the table showing assignments.

Explanation

The reason for this is the following scenario:

January 26, 2018

Local Installation: Interviewer App cannot connect to the server over HTTPS

Note:

This issue has been resolved in version 18.12 (23416).

Symptoms:
When Interviewer app is trying to connect to the Headquarters +application on a local server over the secure http (https) protocol +synchronization process fails with an error “NO CONNECTION TO THE SURVEY +SOLUTIONS SUPERVISOR. PLEASE MAKE SURE THAT THE WEBSITE IS AVAILABLE”.

January 9, 2018

My questionnaire is not as fast as it used to be. Why?

The Survey Solutions software is being very actively developed and every +new release adds new features, optimizations and efficiency +improvements. However, sometimes the support team receives inquiries +regarding the decrease of performance of the interviewer’s app, perhaps +after an update. Here it is important to make sure that a valid +comparison is made. A few common explanations to consider:

ReasonExplanation
1. The questionnaire has changedThis is by far the most common reason. The user tests a version of the questionnaire, then sends it to partners for feedback, then incorporates "the finishing touches": add two checks here, two checks there, two hundred checks over there. By the time all of these changes are made the questionnaire may not even resemble the original version before the pilot.
Comparisons are valid provided that the questionnaire is invariant!
2. Different testing scenario.The amount of checks performed by the device is data dependent. If the tests were done for "a family of two" the responsiveness may be very different when you redo it for "a family of twelve".
3. The tablet could have changed. The user tests the questionnaire using a tablet specifically purchased for the development team. But for the data collection team, a cheaper model questionnaire is purchased. It is expected the hardware will affect the performance. 
Test the questionnaire performs responsively on the model that you will be using for data collection!
4. The performance affected by 3rd party apps.Check if there are any other apps running on the tablet that may affect the performance. Remember that they may update themselves even without your involvement if application auto update is activated. They may compete for resources with Survey Solutions and decrease the performance.
Install only what you need. Uninstall everything you don't. Restrict interviewers' accounts to eliminate possibility of installing unwanted apps.
5. Imperfect measurement.User tested the "speed of the questionnaire" by measuring the total time it takes to enter some values. In the field the time became longer. This can be due to any of the reasons related to the real communication between two people (need to repeat questions, revise earlier answers, think about what is being asked, what are the answers, how to record them into the questionnaire, etc) compared to a rehearsed procedure of entering a specific test example.
6. Comparing apples with oranges."The questionnaire used to work faster before! Yes, before it was not in Survey Solutions, and not on an Android tablet, but on a Windows server, and we didn't have any validation checks or calculated expressions, but it was faster".
No comment.
7. Wishful thinking.No objective measurement was taken to measure the performance of the questionnaire during testing, then when the survey started and things start to matter, the questionnaire performance is deemed inadequate. 
Test during preparation.

Survey Solutions has very flexible and powerful language and multiple +strategies for questionnaire implementation. Copying paper +questionnaires is usually a common mistake that leads to inefficient +questionnaires and inadequate responsiveness. A second opinion of a +reviewer helps identify these inefficiencies and get an advice on how to +improve the questionnaire.

December 13, 2017

Notes on Compatibility with version 5.21

With version 5.21, we are making a big change by replacing census and +sample mode with assignments. Previously when importing a questionnaire, +users had to decide between sample mode (with a quantity of 1 interview +per case) and census mode (with an unlimited quantity of interviews). +With version 5.21, users will simply import the questionnaire and then +proceed to making assignments with the imported template. Assignments +will give headquarters users more flexibility because they can now +specify the quantity of interviews they want when they generate each +assignment.

July 5, 2017

How secure is the World Bank Cloud?

The World Bank Cloud is doubly secure. +First, by relying on Amazon AWS, it provides best-in-class protections +for even the most security-sensitive organizations and their data. +External certifying bodies and independent security auditors have +awarded Amazon AWS the long list of security accreditations listed +below. Please visit AWS compliance resource +page for more +information.

Second, on top of Amazon AWS’ security protocols, the World Bank +provides an additional layer of protection through its own additional +security measures. Because its own data resides on its Cloud, the World +Bank provides its Cloud the highest level of protection.

June 7, 2017
\ No newline at end of file diff --git a/faq/page/4/index.html b/faq/page/4/index.html new file mode 100644 index 00000000..838eeb01 --- /dev/null +++ b/faq/page/4/index.html @@ -0,0 +1,95 @@ +FAQ +

FAQ

Comparing floating point numbers and precision problems

Our development team often receives reports on suspected bugs in Survey +Solutions on the grounds of a situation similar to the one described +below. These reports stem from misunderstanding of some fundamental +concepts of how computations are done by a computer, and not due to an +actual defect of the software.

Problem description

Suppose you have a questionnaire containing two numeric questions X and +Y, and a third question Z with an enabling condition (X*Y) == 21.6.

February 6, 2017

What to do in case a tablet gets broken, damaged, or destroyed.

The tablets used for data collection may get damaged or broken during +the field work. If this happens:

  1. interviewer should immediately report this to his/her supervisor;
  2. supervisor should inspect the tablet and confirm the damage (often +interviewers report tablets as broken when the tablets completely +discharge and require long-press for power button to power up);
  3. supervisor should record the loss of a tablet and issue a +replacement (possibly taking notes on the specifics of the devices +lost and issued: model, serial number, date, interviewer name and +login, circumstances of the loss, etc).
  4. interviewer should login to the new tablet issued, synchronize, and +continue working.

Consequences
The following information is lost: data +stored on the tablet that hasn’t been synchronized to the data server.

January 23, 2017

Should and could I modify my questionnaire when the survey is in the field?

You could modify your questionnaire when the survey is already in the +field. Survey Solutions treats any modifications of a questionnaire as a +new survey. Even if the changes are minor, the modified questionnaire +will be shown as a new survey both on tablets and in the HQ/Supervisor +application.

In general, we strongly advise against making changes in the +questionnaire after the survey goes to the field. We do advise to plan +extensive pre-testing and piloting survey prior to the field. You want +to eliminate as many problems with the questionnaire and the survey +design at the stage of piloting, so that when the survey goes to the +field, no changes are necessary. Modifying questionnaires during the +field work might result in incompatible data generated by the different +versions of the same questionnaire. Even minor changes in the validation +or enablement conditions might lead to disablement of the whole sections +and an rerouting of the questionnaire flow.

October 21, 2016

Should I buy cheap tablets?

Our users often ask us about the minimal specification for the tablets +to be used with Survey Solutions. While we understand the desire to cut +costs of conducting surveys, we recommend purchasing the most powerful +tablets you can afford. With a very few exceptions, the total survey +budget is much larger compared to the budget you spend even on the most +powerful tablets. Modern tablets provide much better interviewer +experience: they are more responsive and have longer battery life. What +is more important, such tablets have lower per survey costs on the long +run - you will be able to use them for the next two or three years in +multiple surveys.

September 20, 2016

Why does the time recorded through date/time question is different from the time reported in GPS question?

An Android tablet has its internal clock. That clock is set based on +specifications of the tablet manufacturer and on the user settings. For +example, the tablet clock can be synchronized to the network time, or +can be set by tablet users manually.

The time reported in GPS question comes from the GPS signal provider. We +recommend acquiring the GPS signal through satellites disabling the wifi +coordinate services. However, geographic coordinates might be acquired +through wifi. Survey Solutions records satellite time for the GPS +coordinates received through satellites. When coordinates come from wifi +or 3G, the time of the wifi router will be recorded as a time when GPS +coordinate was acquired.

September 9, 2016

My Survey Solutions server is not the latest version. Can I still use it with new surveys?

It is recommended that you upgrade your server to the latest version, but +as long as you use only features that were available on your version of +the server the new survey should work on the older server. Please note +that you will not be able to import to the server questionnaires with +features introduced in versions that are later than the version of your +server.

September 7, 2016

Does Survey Solutions require constant internet connection to collect data?

No, Survey Solutions does not require constant internet connection. The +data collection on tablet can be conducted offline. The internet +connectivity, either 3G/4G or WiFi, is required to synchronize tablet +with the server to send completed assignments and to receive new +assignments. In some cases, i.e., remote Pacific islands, interviewers +go without connection for several weeks. While it is possible not to +synchronize for an extended period of time, we recommend to synchronise +tablets as often as possible, preferably after each interview, if the +connectivity allows.

September 7, 2016

How can I request localization for the Interviewer and Tester in a new language?

Please contact our developer team and +request the localization. We will review your request and, if approved, +we will send you Excel files with strings to translate. Once we receive +the files with translation from you, we will try integrating the new +translation into the next release.

However, you should realise that the initial translation is just part of +the localisation work. The most time consuming task is to support the +localization for the new versions. The localization files need to be +updated/expanded every time we add or change features in Survey +Solutions.

September 7, 2016

Is Internet access required during interviews?

No. Internet access is only required to synchronize data and case +assignments, and is not needed during interviews. In some cases the +interviewers might go without connection for weeks (for example, remote +islands in the Pacific). They synchronize with the server when they +reach the location with 3G of WiFi internet coverage.

September 7, 2016

Is there an offline version of the questionnaire designer?

No. The Questionnaire Designer can only be used online. Survey Solutions +evolves very rapidly and we are introducing new features with each +monthly release. An online designer allows us to maintain the version +compatibility. Another argument in favor of online designer is that in +order to use any CAPI software a tablet has to communicate to a server. +So, the internet connection is necessary for data collection and thus +should also be available for Questionnaire Designer.

September 7, 2016
\ No newline at end of file diff --git a/faq/page/5/index.html b/faq/page/5/index.html new file mode 100644 index 00000000..dbb8d810 --- /dev/null +++ b/faq/page/5/index.html @@ -0,0 +1,45 @@ +FAQ +

FAQ

What kind of support does the Survey Solutions team provide to the users.

  • Basic remote support (FREE)
  • Extended remote support (Skype, email)
  • On site support (missions of Survey Solutions staff to the country)
  • Training and capacity building.

September 7, 2016

Does obtaining a GPS signal require an internet connection?

No, GPS receiver in the tablets relies on satellites to obtain +coordinates. So, no internet (3G or WiFi connection) is required. +However, you can improve accuracy of GPS signal by pairing the satellite +signals with the coordinates obtained from mobile networks.

September 7, 2016

Can data collected with Survey Solutions be saved/backed up on a USB stick or micro-SD card?

No, we do not support such functionality. This feature will unavoidably +lead to data losses and increases in survey management costs. Saving +data to UBS generates multiple versions of data that is very difficult +to maintain without overriding the useful data. To avoid duplication, +Survey Solutions imposes a rule where a particular questionnaire can be +only with one agent in the system.

September 7, 2016

What kind of tablets should we purchase to use with Survey Solutions?

Survey Solutions is designed to work on Android tablets. The interface +is optimized to work on tablets with a screen of 7-inch or larger. +Survey Solutions will work on devices with smaller screens (5-inch) but +some users might experience difficulties in reading small fonts.

Minimal requirements for tablets are described in the following article +What tablets should I buy?.

September 7, 2016

What are the costs associated with using Survey Solutions?

Survey Solutions is free software distributed under a Global Public +Goods licence. The licence agreement puts no restrictions on the use of +Survey Solutions by either public or private companies. However, to use +Survey Solutions you will need to purchase tablets and arrange space of +a server to run the Survey Solutions HQ application.

September 7, 2016

Does Survey Solutions support data exchange from one tablet to another with Bluetooth, Point-to-Point or USB connection?

No, current version of Survey Solutions does not support such data +exchange. We see no reliable way to maintain and manage multiple copies +of the same questionnaire on several tablets. While we realize the +benefits of such transfer protocols in certain situations, the risk of +data losses is too high for us to implement this feature.

September 7, 2016

How can I try out Survey Solutions?

Step 1: Develop a test questionnaire by following the instructions +in the Getting Started with Survey +Solutionsvideo tutorial.

Step 2: Explore the survey management system by following the +instructions in the Setting Up a Test Survey video tutorial.

Step 3: Should you have any further questions, please contact us.

July 22, 2016

How much does Survey Solutions cost?

The Survey Solutions software (both the server and the tablet components +that are necessary to conduct a survey) are available as a download from +our server for free.

July 22, 2016
\ No newline at end of file diff --git a/faq/password-change/index.html b/faq/password-change/index.html new file mode 100644 index 00000000..8d1274e2 --- /dev/null +++ b/faq/password-change/index.html @@ -0,0 +1,22 @@ +Changing password +

Changing password

June 22, 2023

This article describes who can change passwords and for whom in the hierarchy of Survey Solutions users.

In the following table users assuming the role mentioned in the rows can change passwords of users mentioned in the columns.

ROLESadministratorheadquarterssupervisorinterviewerobserverAPI
administratoronly own passwordyesyesyesyesyes
headquartersnoonly own passwordonly if controlling this supervisor in all workspaces, to which the supervisor has accessonly if controlling this interviewer in all workspaces, to which the interviewer has accessnono
supervisornonoonly own passwordnonono
interviewernononoonly own passwordnono
observernononononono
APInononononono
Note also:
  1. To change own password the user needs to enter the old password in addition to the new password. To change the password of another user (when permitted) there is no need to enter the value of the old password.

  2. There is no functionality to reveal own password (or the password of another user) in clear text after that password is set. If the user forgets the password, the password for that account needs to be reset. See also Password issues.

  3. If the password for a user account has been assigned by a user other than the owner of that account that password must be changed on first login by the account owner (own password enforcement). For interviewers and supervisors that can be done from the tablet application or by logging in to the server, for other user accounts only by logging in to the server. Own password enforcement does not apply to accounts in API and administrator roles.

\ No newline at end of file diff --git a/faq/password-issues/index.html b/faq/password-issues/index.html new file mode 100644 index 00000000..d120d54c --- /dev/null +++ b/faq/password-issues/index.html @@ -0,0 +1,22 @@ +Password issues +

Password issues

June 22, 2023

Click on the description of the case (1-15) below. Instructions vary depending on the type of password/login you are having an issue with.

1. Forgot your password for the Designer tool?
  1. Go to the Designer tool online: https://designer.mysurvey.solutions
  2. Click FORGOT PASSWORD?
  3. Enter your login (account name) or email address into the form field and click RESTORE.
  4. Check your email inbox for a new message with a password reset link.

IMPORTANT: The email address here is always the same email address that you’ve used to register.

2. Forgot your username for the Designer tool?

You can login with the email address that you’ve submitted during registration. Just specify your email address instead of the login in the same field.

3. Forgot your email address in the Designer tool?

You can login with the account name instead, then check with which email address you’ve registered by selecting MANAGE ACCOUNT menu.

4. Changed your email address? Update your account information in the Designer tool.

You can update the email address associated with your account:

  1. Login to the Designer tool online: https://designer.mysurvey.solutions ;
  2. Click on your username as displayed in the top-right of the page;
  3. Click MANAGE ACCOUNT;
  4. Update the email address in the corresponding field;
  5. Click CHANGE to save your changes.
5. Forgot your password and/or username for the users' forum?

Users’ forum is located at https://forum.mysurvey.solutions .

It uses the same accounts as the Designer, so follow the steps for resetting the password in the Designer if you’ve lost access to the users’ forum.

6. Forgot password and/or username for the Android Tester App?

The Android Tester App imports questionnaires from the Designer, so it is using the same accounts as the Designer. Hence, follow the steps for resetting the password in the Designer if you can’t log in to the Tester App.

7. Forgot password for your PDS server? (your role was Administrator at that PDS server)
  1. Login to the PDS portal: https://pds.mysurvey.solutions with the Designer credentials.
  2. Click on the SERVERS tab.
  3. Click on the server name.
  4. Select Request password reset from the menu.
  5. You will receive a password reset link to your email inbox. +Follow the instructions in this email.

Click for more information.

8. Forgot password for an account on a PDS server? (your role is any other than Administrator at that PDS server).

Contact the administrator of that PDS server for assistance. If you don't know who the administrator is, contact the person who has issued you the account credentials in the first place. The new password assigned to the user by the Administrator will need to be reset by that user after the first successful login.

A headquarters user may perform the password reset operation for user accounts of interviewers and supervisors only if that headquarters user is controlling that interviewer (resp. supervisor) in all workspaces that that interviewer (resp. supervisor) has access to. Otherwise only the server administrator may do the password reset for that user.

9. Forgot password for an account on a data collection server? (your role is any other than Administrator at that server).

Contact the administrator of that data collection server for assistance. If you don't know who the administrator is, contact the person who has issued you the account credentials in the first place. The new password assigned to the user by the Administrator will need to be reset by that user after the first successful login.

A headquarters user may perform the password reset operation for user accounts of interviewers and supervisors only if that headquarters user is controlling that interviewer (resp. supervisor) in all workspaces that that interviewer (resp. supervisor) has access to. Otherwise only the server administrator may do the password reset for that user.

10. Forgot password for an account on a data collection server? (Your role is Administrator on that server).

Use the command line support tool as described here.

Using this tool requires file-level access to the server. If you don’t have access to the server at the file level (no access to the command-line) contact the person who does. (Typically this is the person who assisted you in installing the Survey Solutions server).

11. Forgot the password for the export data archive?

Export data archive password is set up by the server administrator (separately for each workspace). If you are the user of exported data and can’t unpack the data because it requires the password that you don’t know, or the password that you know does not allow the data to be unpacked you need to contact your Survey Solutions Administrator, this must be the person who created an account for you.

12. Assignment

In case when you’ve sent an invitation for a respondent to participate in a web-survey and that respondent has accidentally deleted that email:

  1. seek through the assignments for mentioning of the respondent’s email address;
  2. If the assignment with this email is located, click on the assignment number and in the assignment details you will find both the link (URL) to the assignment page and the password to start it.

Note, that there may exist multiple assignments to the same email address, for example if you are running multiple surveys and the same respondent is a participant in 2 or more of them.

Make sure you are responding to the same email to which the original invitation has been sent or have otherwise reliably identified that the person requesting this password is the intended original respondent.

13. Can't login to the Interviewer App on the tablet?
  1. Ask your server’s administrator to reset your account’s password.
  2. Verify that it was reset by signing in online. If it is, then you will be asked to create a new password for your account (your own password, different from the one issued to you by the administrator).
  3. On the tablet when logging in login with the new password that you’ve selected. Do this for at least 5 times and the login form will display an additional button TRY TO SIGN IN ONLINE. Use this button to let the tablet connect to the server and get updated information on the changed password. The tablet must be connected to the internet at this step.

Click for more information.

14. Survey Solutions database restored from backup

The account password information is stored in the database on the server. If this database is restored from a backup then the passwords effective at the moment of the backup will be restored as current. Users not remembering their old passwords will need to utilize the above-listed procedures as appropriate for their role.

15. Interviewer can sign in to the account online, but can't sign in to the tablet.

A firewall between your tablet and server may be preventing successful communication of the Interviewer App with the server. This has been experienced by several users, see e.g. here.

The recommendations vary by situation, but the general advice is to work with the network administrator to identify the device/program responding instead of Survey Solutions, which happens to be the underlying reason for this problem.

Administrators of the servers in the WB can contact the WB LBADMIN to help detect and troubleshoot this issue.

      

Instruction to the Survey Solutions administrators on how to reset user passwords.

  1. Login to the data server under your administrative account.
  2. Click on the gear-icon in the top-right of the screen.
  3. Click on the Users in the menu that appears.
  4. In the users’ click on the user account for the user requesting the password reset.
  5. Select the Change password tab.
  6. Enter the new password twice and confirm the change by clicking UPDATE.
  7. If necessary reset the 2FA for the user (see below).

Note that the user will have to select a new password the first time he or she logs into the system after such a password reset.

      

Instruction to the Survey Solutions administrators on how to reset user two factor authentication (2FA)

Users that have lost the possibility to login to their accounts e.g. due to a loss of the authenticating device have to ask the Survey Solutions data server administrator to reset the 2FA for them.

As the administrator you:

  1. Login to the data server under your administrative account.
  2. Click on the gear-icon in the top-right of the screen.
  3. Click on the Users in the menu that appears.
  4. In the list of the users find and click on the user account for the user requesting the password reset.
  5. Select the Two factor authentication tab.
  6. Click the RESET AUTHENTICATOR button and follow the instructions.

If the 2FA must be reset for a user in the Administrator role, then it must be done with the support tool.

Click for more information on the 2FA.

      

Other reasons for not being able to log in

There are multiple other possible reasons why a user is not able to login:

  • the user attempts to log in to an incorrect synchronization point: check the synchronization point address (the address of the server the user connects to);
  • account has been locked by a superior user: users in the Administrator role can unlock it;
  • account has been archived: users in the Administrator role can un-archive the user; more;
  • account in the disabled workspace: users in the Administrator role can enable or disable workspaces; more;
  • account is locked-out by the system: this happens when there are too many unsuccessful login attempts, this issue will resolve itself after a cooling-off period; more;
  • account has been deleted as part of the workspace that has been deleted: this account access is not recoverable.

      

See also

\ No newline at end of file diff --git a/faq/security-review/images/locks.jpg b/faq/security-review/images/locks.jpg new file mode 100644 index 00000000..83f42806 Binary files /dev/null and b/faq/security-review/images/locks.jpg differ diff --git a/faq/security-review/index.html b/faq/security-review/index.html new file mode 100644 index 00000000..133fc7bf --- /dev/null +++ b/faq/security-review/index.html @@ -0,0 +1,31 @@ +Security review results +

Security review results

August 27, 2021

We are constantly on the lookout for new threats and periodically issue patches +for any detected vulnerabilities that have a proven potential to be exploited +to intercept data or intervene into the operation of the system, notably, our +recent release 21.06.

Our security policy is located +here. +The inventory of currently reported security advisories is published +here.

Users may conduct their own security analysis and share with us. We do not +provide these reports on request of third parties.

Should you conduct such a security analysis, please do this on your own +server/installation of Survey Solutions. Specifically, do not conduct +security analysis on the PDS servers or any other servers hosted by the +World Bank as this will negatively affect other users.

\ No newline at end of file diff --git a/faq/server-not-working/index.html b/faq/server-not-working/index.html new file mode 100644 index 00000000..793e516f --- /dev/null +++ b/faq/server-not-working/index.html @@ -0,0 +1,43 @@ +Server Not Working +

Server Not Working

September 30, 2019

Occasionally our users receive messages from their interviewers +that a certain server “…is not working”. In most cases this +is a problem with the user’s equipment used to access the server, +rather than the server itself.

The following tools may be helpful in determining whether it is +indeed a problem with the server or with a specific user’s device +trying to access that server:

These are the third-party tools and we neither produce, nor provide +any training or support related to these tools.

If the above tools indicate that the server is functional, then the +problem is likely in the device (physical or software configuration, +settings) or the connectivity (reliability of the connection lines, +signal strength or security mechanisms and protocols present in your +network).

If you are reporting a problem with a demo server or a personal demo +server (PDS) please include into your report the information according to the ORANGE checklist.

Specifying all of this information will expedite the handling of +the issue. If any of this information is missing, we may need to contact +you to obtain it, which will delay the troubleshooting.

Occasionally we perform servers maintenance, which may involve +rebooting the server(s) and hence a brief interruption in service. These +operations are rare and usually completed within a 15-minute period. If +you are experiencing a server access issue, kindly make sure you have +allowed at least 20 minutes to elapse, and retried before submitting the +server access problem report.

If the problem is related to the server that is not managed by our team, +please contact the corresponding server administrator. Correspondingly, +if the server is hosted in a cloud, contact the corresponding cloud +provider, who will be able to assist you further.

\ No newline at end of file diff --git a/faq/server-requirements/index.html b/faq/server-requirements/index.html new file mode 100644 index 00000000..343cbd6c --- /dev/null +++ b/faq/server-requirements/index.html @@ -0,0 +1,21 @@ +Server Requirements +

Server Requirements

August 28, 2023

Server requirements are periodically revised. The characteristics below are outlined for a server facilitating a survey of no more than 100,000 interviews. You may need a more powerful server if:

  • your survey is larger, or
  • you plan to host several surveys, or
  • if you plan to collect any multimedia data (photos, audio recordings, etc), or
  • there are other non-standard circumstances.

Requirements for the server depend on the use and the type of the survey. Below is a minimal configuration. Better hardware allows better performance.

Hardware:

  • CPU: 4 physical cores, 64-bit
  • RAM: 16GB
  • DISK: 500GB SSD

If you are planning to purchase new hardware and wish for the server to be operational over the next few years, it is recommended to double the minimal specifications above.

Software:

During the installation, the Survey Solutions installer will examine the presence of necessary libraries and if any of them is missing, will attempt to download and install them from their distribution sites.

On Microsoft Windows Survey Solutions is working under Microsoft IIS which is built-in into the OS.

Server environment:

The server must be:

  • properly cooled;
  • physically secured;
  • reliably powered 24/7;
  • reliably connected to the network/internet with appropriate bandwidth;
  • protected from the elements (flooding, fire, etc).

See also:

You may find other useful information and advice in:

\ No newline at end of file diff --git a/faq/should-and-could-i-modify-my-questionnaire-when-the-survey-is-in-the-field-/index.html b/faq/should-and-could-i-modify-my-questionnaire-when-the-survey-is-in-the-field-/index.html new file mode 100644 index 00000000..a60a58e3 --- /dev/null +++ b/faq/should-and-could-i-modify-my-questionnaire-when-the-survey-is-in-the-field-/index.html @@ -0,0 +1,34 @@ +Should and could I modify my questionnaire when the survey is in the field? +

Should and could I modify my questionnaire when the survey is in the field?

October 21, 2016

You could modify your questionnaire when the survey is already in the +field. Survey Solutions treats any modifications of a questionnaire as a +new survey. Even if the changes are minor, the modified questionnaire +will be shown as a new survey both on tablets and in the HQ/Supervisor +application.

In general, we strongly advise against making changes in the +questionnaire after the survey goes to the field. We do advise to plan +extensive pre-testing and piloting survey prior to the field. You want +to eliminate as many problems with the questionnaire and the survey +design at the stage of piloting, so that when the survey goes to the +field, no changes are necessary. Modifying questionnaires during the +field work might result in incompatible data generated by the different +versions of the same questionnaire. Even minor changes in the validation +or enablement conditions might lead to disablement of the whole sections +and an rerouting of the questionnaire flow.

\ No newline at end of file diff --git a/faq/should-i-buy-cheap-tablets-/index.html b/faq/should-i-buy-cheap-tablets-/index.html new file mode 100644 index 00000000..db40b4f2 --- /dev/null +++ b/faq/should-i-buy-cheap-tablets-/index.html @@ -0,0 +1,29 @@ +Should I buy cheap tablets? +

Should I buy cheap tablets?

September 20, 2016

Our users often ask us about the minimal specification for the tablets +to be used with Survey Solutions. While we understand the desire to cut +costs of conducting surveys, we recommend purchasing the most powerful +tablets you can afford. With a very few exceptions, the total survey +budget is much larger compared to the budget you spend even on the most +powerful tablets. Modern tablets provide much better interviewer +experience: they are more responsive and have longer battery life. What +is more important, such tablets have lower per survey costs on the long +run - you will be able to use them for the next two or three years in +multiple surveys.

See also Which tablets should I buy?

\ No newline at end of file diff --git a/faq/slow-tablets/images/tablet_slow.jpg b/faq/slow-tablets/images/tablet_slow.jpg new file mode 100644 index 00000000..62320eb2 Binary files /dev/null and b/faq/slow-tablets/images/tablet_slow.jpg differ diff --git a/faq/slow-tablets/index.html b/faq/slow-tablets/index.html new file mode 100644 index 00000000..a11e8163 --- /dev/null +++ b/faq/slow-tablets/index.html @@ -0,0 +1,25 @@ +Slow Tablets +

Slow Tablets

February 8, 2021

Use the instructions below to diagnose tablets’ performance issues, which can manifest themselves as:

  • slowness (occasional or permanent) while working with the Interviewer App;
  • freezes for a considerable period of time;
  • crashes and restarts of the application;

or a combination of the above.

NB: For troubleshooting the synchronization errors, refer to the synchronization problems article.

  1. Check that the tablet is not in the low-power mode. If in the low-power mode, change to normal mode and retry (some tablets may need to restart, or sleep and wake up for the mode switch to become effective).

  2. Check that the tablets are using an up-to-date version of Survey Solutions and update if necessary. (versions are important for troubleshooting and we need to know that the newest version is still affected, or else this is the solution.). Confirm the latest version is used.

  3. Check whether there is a similar case reported in the users’ forum. If yes, indicate which thread/threads are mentioning the same symptoms.

  4. Check whether the issue occurs on a new tablet that is not part of the interviewers’ stock. Interviewers are people and can do many bad things to the tablets intentionally or unintentionally, so we need to exclude this factor. Use a factory reset if there is no other tablet to try. (any unsynchronized data will be lost as a result of the factory reset or uninstall). Clearly report the tablet brand, model, model number if the issue persists.

  5. Check whether the problem occurs on all, some or one tablet only. Describe in detail:

    • what is common between the tablets in ‘working’ group, and similarly
    • what is common for the tablets in the ‘non-working group’, and
    • what is different between the ‘working’ and ’non-working’ groups. +For example: “the issue occurs with Survey Solutions v24.09 on all Samsung SMT-9399 tablets running Android 12.7 and doesn’t occur on Samsung SMT-9897 tablets running Android 12.7 nor in Dell PowerTab-3000 running Android 18.0. The characteristics of these devices are as follows (indicate memory, storage, available storage, CPU type)…”
    • refer to the diagnostics dialog to obtain the descriptive information of the tablet and Interviewer App.
  6. Check whether there were any OS-updates (or third party software updates) installed recently on the tablets in the ’non-working’ group. Clearly state what version and update of the Android OS is set up on the affected device(s).

  7. Have a security check (antivirus, antimalware) of the affected tablets, especially when there is no systematic difference between the ‘working’ and ’non-working’ groups in hardware characteristics or OS version and configuration.

  8. Check tablets for presence of any other applications that may be competing for the resources with the Interviewer App (social networks, games, messengers, unknown applications). Uninstall everything that is not needed for the normal work of an interviewer.

  9. Try a different questionnaire: create a simple questionnaire of a handful of questions and see if the issue occurs there too. Exercise your judgement as to how big this should be and what questions to include. When in doubt use 10 questions of different types or model the section of your actual questionnaire where the slowness appears. For a quick check use a public questionnaire ‘ServiceB2’ from the ‘Service and maintenance’ folder. If the benchmark questionnaire is responsive the problem is likely related to your particular questionnaire. If not responsive, then this benchmark questionnaire can be used in all subsequent steps/tests.

  10. If the benchmark/example questionnaire does not exhibit the issue, start reducing your questionnaire by cutting off some of the pieces of it (work on a copy, of course). Delete sections, individual questions or their conditions. And periodically retest the questionnaire. Once it becomes responsive again, review the recent deletions to identify which one has caused the performance to improve.

    • Note that the size of a syntax condition (in characters or lines) is not necessarily a good predictor for the time that will be needed to execute it.
    • Even a one-liner can freeze a powerful computer with a slow loop-like code structure.
    • Slowness may occur due to entirely not obvious things, such as usage of text substitutions in questions, not related to syntax at all.
  11. The issue may be data related: the checks in a 20-person household are going to be slower than in a 10-person household, and much slower than in a 1-person household. See whether the issue is sensitive to the amount of data being preloaded by varying the input data volume. Include your findings in your report.

  12. Use the Tester App to measure the actual response time in milliseconds. If the issue occurs only in some sections/rosters/etc which is not immediately obvious, include instructions on what input must be entered (which values and in which sequence). +If the slowness is observed in an up-to-date version of Survey Solutions Interviewer/Tester with a benchmark questionnaire this could very well be its actual performance. Explain why the observed values are considered by you as ‘abnormal/slow’.

Google provides the following recommendations for speeding up a slow Android device.

\ No newline at end of file diff --git a/faq/solutions/index.html b/faq/solutions/index.html new file mode 100644 index 00000000..c5a40449 --- /dev/null +++ b/faq/solutions/index.html @@ -0,0 +1,26 @@ +Solutions website +
\ No newline at end of file diff --git a/faq/tablet-manufacturers/index.html b/faq/tablet-manufacturers/index.html new file mode 100644 index 00000000..1871d254 --- /dev/null +++ b/faq/tablet-manufacturers/index.html @@ -0,0 +1,24 @@ +Tablet manufacturers +

Tablet manufacturers

August 23, 2019

If you need to get device-specific information or solve a hardware issue, +contact your tablet manufacturer for support or consult other users in +manufacturer-specific forums. Here are a few community forums lead by +the respective manufacturers:

\ No newline at end of file diff --git a/faq/web-farm/index.html b/faq/web-farm/index.html new file mode 100644 index 00000000..3cbf3aea --- /dev/null +++ b/faq/web-farm/index.html @@ -0,0 +1,43 @@ +Scalability of Survey Solutions +

Scalability of Survey Solutions

February 5, 2021

Overview

The Survey Solutions supports horizontal scaling and may be +deployed as a web-farm for servicing a large number of +client connections.

This is especially important for operations like population +censuses and large national surveys.

A web-farm installation is implemented on multiple systems +(called nodes) working in concert to service the received +requests. Increasing the number of nodes in the farm allows +to improve the overall performance: the responsiveness of +the system and number of users working simultaneously.

The number of nodes in the farm may be dynamically changed +(new nodes introduced or existing nodes shut down) without +the interruption of work of the other nodes.

The overall performance of the web-farm is determined by +the performance of individual nodes (higher processing +power, memory, and drive speed will positively affect the +overall performance).

The exact moment when a web-farm must be introduced depends +on multiple factors, including the desired responsiveness, +number of simultaneous users, performance of the nodes, size +and complexity of the questionnaire.

Even a very powerful web-farm may still be limited by the +bandwidth of the internet connection, which must be taken +into account when the Survey Solutions deployment is being +planned.

Deployment scheme

For Web Farm mode Survey Solutions Headquarters should run behing load balancer or reverse proxy with load balancing capabilities. Load Balancer should support Web Sockets and sticky sessions. Modern reverse proxy servers are already support this.

Survey Solutions require that both WebSockets and StickySessions are enabled for all survey modes.

Survey Solutions Configuration

For Survey Solutions Headquarters configuration following settings should be enabled for ALL instances of HQ in [Scheduler] settings

[Scheduler]
+InstanceId=AUTO
+IsClustered=true
+

IIS

It’s possible to run IIS in Web Farm mode - https://docs.microsoft.com/en-us/iis/web-hosting/scenario-build-a-web-farm-with-iis-servers/configure-a-web-farm-with-iis-servers

\ No newline at end of file diff --git a/faq/what-are-the-costs-associated-with-using-survey-solutions-/index.html b/faq/what-are-the-costs-associated-with-using-survey-solutions-/index.html new file mode 100644 index 00000000..cac8c3e6 --- /dev/null +++ b/faq/what-are-the-costs-associated-with-using-survey-solutions-/index.html @@ -0,0 +1,24 @@ +What are the costs associated with using Survey Solutions? +

What are the costs associated with using Survey Solutions?

September 7, 2016

Survey Solutions is free software distributed under a Global Public +Goods licence. The licence agreement puts no restrictions on the use of +Survey Solutions by either public or private companies. However, to use +Survey Solutions you will need to purchase tablets and arrange space of +a server to run the Survey Solutions HQ application.

\ No newline at end of file diff --git a/faq/what-kind-of-support-does-the-survey-solutions-team-provide-to-the-users-/index.html b/faq/what-kind-of-support-does-the-survey-solutions-team-provide-to-the-users-/index.html new file mode 100644 index 00000000..3a4e4f73 --- /dev/null +++ b/faq/what-kind-of-support-does-the-survey-solutions-team-provide-to-the-users-/index.html @@ -0,0 +1,20 @@ +What kind of support does the Survey Solutions team provide to the users. +

What kind of support does the Survey Solutions team provide to the users.

September 7, 2016
  • Basic remote support (FREE)
  • Extended remote support (Skype, email)
  • On site support (missions of Survey Solutions staff to the country)
  • Training and capacity building.
\ No newline at end of file diff --git a/faq/what-kind-of-tablets-should-we-purchase-to-use-with-survey-solutions-/index.html b/faq/what-kind-of-tablets-should-we-purchase-to-use-with-survey-solutions-/index.html new file mode 100644 index 00000000..32266cb2 --- /dev/null +++ b/faq/what-kind-of-tablets-should-we-purchase-to-use-with-survey-solutions-/index.html @@ -0,0 +1,25 @@ +What kind of tablets should we purchase to use with Survey Solutions? +

What kind of tablets should we purchase to use with Survey Solutions?

September 7, 2016

Survey Solutions is designed to work on Android tablets. The interface +is optimized to work on tablets with a screen of 7-inch or larger. +Survey Solutions will work on devices with smaller screens (5-inch) but +some users might experience difficulties in reading small fonts.

Minimal requirements for tablets are described in the following article +What tablets should I buy?.

\ No newline at end of file diff --git a/faq/what-tablets-should-i-buy-/index.html b/faq/what-tablets-should-i-buy-/index.html new file mode 100644 index 00000000..50671643 --- /dev/null +++ b/faq/what-tablets-should-i-buy-/index.html @@ -0,0 +1,60 @@ +What tablets should I buy?

What tablets should I buy?

September 19, 2023

Technical Requirements

Survey Solutions software works with Android tablets with the following +specifications:

  • Version of Android OS:

    • Android 7.0 or better is required;
    • All versions of Android below 9.0 are +no longer supported +by the manufacturers and correspondingly tablets that can’t be updated to +Android 9.0 or above should be considered unsafe for the World Bank projects.
  • RAM: Minimum 1.5GB

  • Storage: 8GB of flash memory storage. At least 1GB of available +space must be available for Survey Solutions’ use. The Survey Solutions +software installation package (.apk) is less than 200MB, but more space +will be required during the operation of the software. The ultimate +requirements for space depend on the kind of survey (questionnaire) and +the mode of use of the tablet (number of assignments, simultaneously +started interviews, rejections, use of offline maps, audio recording, etc.

  • WiFi module, which can be used for software setup, upgrades, and +synchronization while in the office.

  • 3G/4G connectivity module is required for synchronization from +the field.

  • Hardware architecture: Survey Solutions Interviewer will not be +able to display maps on +devices based on x86 architecture, for example, on devices based on +the Intel Atom Z3745 chip. This incompatibility is known and will +not be fixed. Users installing the Interviewer App on such devices +must opt for the version without the maps.

Minimal requirements are not necessarily going to be optimal for a +particular application. Better technical characteristics will improve +responsiveness of the program and the user experience. Conduct your +independent testing before volume purchases of tablets.

Optional:

  • Screen size 7-8-inch screens are often chosen. Bigger screens +consume more power and reduce autonomous work. The choice of the +screen depends on the convenience of use with the software and is +usually determined experimentally.
  • Android 8.0 or higher is recommended because of +Project Treble, +which should make it easier for the manufacturers to update produced +devices.

Testing Devices

We conduct periodic tests of the software and use a range of devices with +different characteristics. The objective of this testing is to make sure +each of our releases continues to work on the declared platform. +Availability, prices and support by manufacturers of these devices vary +greatly.

We recommend conducting your own independent testing especially before +purchasing of tablets in bulk.

The World Bank-Survey Solutions team is not in the position of recommending +specific devices, brands, or vendors.

Share your experience

Survey Solutions users’ forum is an +excellent place to share your feedback about particular devices (tablets, +phones) that you’ve tried. Most readers will be interested in compatibility, +performance and usability details that you can provide.

Whether you are providing positive or negative feedback, please, try to +stay objective and keep it informative and supplemented with useful data. +Please, mention the device brand, model number, version of Android, and +version of the Survey Solutions Interviewer app that you’ve tried, and +any other details you think may be helpful.

\ No newline at end of file diff --git a/faq/what-to-do-in-case-a-tablet-gets-broken-damaged-or-destroyed-/index.html b/faq/what-to-do-in-case-a-tablet-gets-broken-damaged-or-destroyed-/index.html new file mode 100644 index 00000000..c166d40d --- /dev/null +++ b/faq/what-to-do-in-case-a-tablet-gets-broken-damaged-or-destroyed-/index.html @@ -0,0 +1,49 @@ +What to do in case a tablet gets broken, damaged, or destroyed. +

What to do in case a tablet gets broken, damaged, or destroyed.

January 23, 2017

The tablets used for data collection may get damaged or broken during +the field work. If this happens:

  1. interviewer should immediately report this to his/her supervisor;
  2. supervisor should inspect the tablet and confirm the damage (often +interviewers report tablets as broken when the tablets completely +discharge and require long-press for power button to power up);
  3. supervisor should record the loss of a tablet and issue a +replacement (possibly taking notes on the specifics of the devices +lost and issued: model, serial number, date, interviewer name and +login, circumstances of the loss, etc).
  4. interviewer should login to the new tablet issued, synchronize, and +continue working.

Consequences
The following information is lost: data +stored on the tablet that hasn’t been synchronized to the data server.

The following information survives: +survey assignments created at HQ and data that has been previously +synchronized from the tablet, including assignments previously +synchronized and rejected back to the interviewer.

If the supervisor fails to inspect the tablet and confirm the damage and +the tablet is later found to be working while the replacement tablet has +been already introduced to the stock, the data from the old tablet will not be accepted by the system. See +warnings illustrated in this +article.

To minimize damages from the physical damage:

  • issue appropriate protection for the tablets (cases, bags, screen +covers, etc);
  • explain to the interviewers during training that the tablets are +fragile, explain how to handle them, what to do and what not to do;
  • synchronize tablets as often as possible to minimize the amount of +data stored on the tablet that is not also sent to the server.

Alternatives:
Tablets usually contain few parts and are not easy to repair, especially +in the field conditions. In some cases if the battery fails the tablet +could still be powered up from an external battery or an external power +source. This could help prevent loss of data on the tablet by letting it +to synchronize one last time (in that case all started assignments must +be declared as completed so that they are transferred to the server).
Some tablets allow replacements of the screen when it is damaged.

Such alternatives are usually expensive, require careful planning and +can’t be conducted in the field. It is universally cheaper to repeat the +interviews than to attempt a forensic recovery of the remnants of the +data from a damaged tablet.

The developers of the Survey Solutions software can not provide such +services of data recovery from damaged tablets.

\ No newline at end of file diff --git a/faq/which-languages-can-be-used/images/test_lang_entry.png b/faq/which-languages-can-be-used/images/test_lang_entry.png new file mode 100644 index 00000000..d3ed21f0 Binary files /dev/null and b/faq/which-languages-can-be-used/images/test_lang_entry.png differ diff --git a/faq/which-languages-can-be-used/images/test_lang_entry_hu13382280461137356416.png b/faq/which-languages-can-be-used/images/test_lang_entry_hu13382280461137356416.png new file mode 100644 index 00000000..98c0b999 Binary files /dev/null and b/faq/which-languages-can-be-used/images/test_lang_entry_hu13382280461137356416.png differ diff --git a/faq/which-languages-can-be-used/images/test_lang_ltr.png b/faq/which-languages-can-be-used/images/test_lang_ltr.png new file mode 100644 index 00000000..c079941b Binary files /dev/null and b/faq/which-languages-can-be-used/images/test_lang_ltr.png differ diff --git a/faq/which-languages-can-be-used/images/test_lang_ltr_hu10179682921812562488.png b/faq/which-languages-can-be-used/images/test_lang_ltr_hu10179682921812562488.png new file mode 100644 index 00000000..b05a72c2 Binary files /dev/null and b/faq/which-languages-can-be-used/images/test_lang_ltr_hu10179682921812562488.png differ diff --git a/faq/which-languages-can-be-used/images/test_lang_rtl.png b/faq/which-languages-can-be-used/images/test_lang_rtl.png new file mode 100644 index 00000000..671a4aef Binary files /dev/null and b/faq/which-languages-can-be-used/images/test_lang_rtl.png differ diff --git a/faq/which-languages-can-be-used/images/test_lang_rtl_hu18189335899829963003.png b/faq/which-languages-can-be-used/images/test_lang_rtl_hu18189335899829963003.png new file mode 100644 index 00000000..174a668d Binary files /dev/null and b/faq/which-languages-can-be-used/images/test_lang_rtl_hu18189335899829963003.png differ diff --git a/faq/which-languages-can-be-used/index.html b/faq/which-languages-can-be-used/index.html new file mode 100644 index 00000000..7931afb7 --- /dev/null +++ b/faq/which-languages-can-be-used/index.html @@ -0,0 +1,32 @@ +Which languages can be used in Survey Solutions questionnaires? +

Which languages can be used in Survey Solutions questionnaires?

September 18, 2019

This article discusses the appearance (fonts / scripts) of a Survey Solutions +questionnaire. You may also be interested in:

The questionnaire instrument (questions, options, section names, error and warning messages, etc) +can be designed in any language supported in +Unicode. Survey Solutions allows text entry in Unicode +and the entered values will be preserved in the exported data (UTF-8).

The variable names utilized in the questionnaire must be written strictly using English +alphabet (AB..Zab..z), digits and the underscore character. For complete set of rules for variable names see the +variable names article.

Note:

Some scripts may require an update of the operating system to a version that +supports it. For example, Thaana +characters are supported by OS Android 6.0 and higher. So even though +Survey Solutions can be started on a lower version of Android OS, the Thaana +characters may appear incorrectly rendered or not appear at all. Update your +Android OS if necessary.

The following public questionnaire demonstrates various text messages written in different languages:

Figure 1 : text rendered in various left-to-right languages.

Figure 2 : text rendered in various right-to-left languages.

Figure 3 : free text entry.

\ No newline at end of file diff --git a/faq/why-does-the-time-recorded-through-date-time-question-is-different-from-the-time-reported-in-gps-question-/index.html b/faq/why-does-the-time-recorded-through-date-time-question-is-different-from-the-time-reported-in-gps-question-/index.html new file mode 100644 index 00000000..0debba7f --- /dev/null +++ b/faq/why-does-the-time-recorded-through-date-time-question-is-different-from-the-time-reported-in-gps-question-/index.html @@ -0,0 +1,31 @@ +Why does the time recorded through date/time question is different from the time reported in GPS question?

Why does the time recorded through date/time question is different from the time reported in GPS question?

September 9, 2016

An Android tablet has its internal clock. That clock is set based on +specifications of the tablet manufacturer and on the user settings. For +example, the tablet clock can be synchronized to the network time, or +can be set by tablet users manually.

The time reported in GPS question comes from the GPS signal provider. We +recommend acquiring the GPS signal through satellites disabling the wifi +coordinate services. However, geographic coordinates might be acquired +through wifi. Survey Solutions records satellite time for the GPS +coordinates received through satellites. When coordinates come from wifi +or 3G, the time of the wifi router will be recorded as a time when GPS +coordinate was acquired.

In general, we cannot guarantee that the time recorded through data/time +question will coincide with the time recorded while getting a GPS +signal.

\ No newline at end of file diff --git a/fonts/RobotoBold.eot b/fonts/RobotoBold.eot new file mode 100644 index 00000000..e819141c Binary files /dev/null and b/fonts/RobotoBold.eot differ diff --git a/fonts/RobotoBold.svg b/fonts/RobotoBold.svg new file mode 100644 index 00000000..39113303 --- /dev/null +++ b/fonts/RobotoBold.svg @@ -0,0 +1,9419 @@ + + + + +Created by FontForge 20150824 at Thu Oct 27 14:00:20 2016 + By Everything Fonts +Font data copyright Google 2012 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fonts/RobotoBold.ttf b/fonts/RobotoBold.ttf new file mode 100644 index 00000000..9c025695 Binary files /dev/null and b/fonts/RobotoBold.ttf differ diff --git a/fonts/RobotoBold.woff b/fonts/RobotoBold.woff new file mode 100644 index 00000000..426e22c1 Binary files /dev/null and b/fonts/RobotoBold.woff differ diff --git a/fonts/RobotoBold.woff2 b/fonts/RobotoBold.woff2 new file mode 100644 index 00000000..2a7b3751 Binary files /dev/null and b/fonts/RobotoBold.woff2 differ diff --git a/fonts/RobotoLight.eot b/fonts/RobotoLight.eot new file mode 100644 index 00000000..1206b5b5 Binary files /dev/null and b/fonts/RobotoLight.eot differ diff --git a/fonts/RobotoLight.svg b/fonts/RobotoLight.svg new file mode 100644 index 00000000..351b2a64 --- /dev/null +++ b/fonts/RobotoLight.svg @@ -0,0 +1,10158 @@ + + + + +Created by FontForge 20150824 at Thu Oct 27 13:45:00 2016 + By Everything Fonts +Font data copyright Google 2012 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fonts/RobotoLight.ttf b/fonts/RobotoLight.ttf new file mode 100644 index 00000000..96bfd1ce Binary files /dev/null and b/fonts/RobotoLight.ttf differ diff --git a/fonts/RobotoLight.woff b/fonts/RobotoLight.woff new file mode 100644 index 00000000..2de59e21 Binary files /dev/null and b/fonts/RobotoLight.woff differ diff --git a/fonts/RobotoLight.woff2 b/fonts/RobotoLight.woff2 new file mode 100644 index 00000000..c2ed751e Binary files /dev/null and b/fonts/RobotoLight.woff2 differ diff --git a/fonts/RobotoRegular.eot b/fonts/RobotoRegular.eot new file mode 100644 index 00000000..4fc2122c Binary files /dev/null and b/fonts/RobotoRegular.eot differ diff --git a/fonts/RobotoRegular.svg b/fonts/RobotoRegular.svg new file mode 100644 index 00000000..7bf41382 --- /dev/null +++ b/fonts/RobotoRegular.svg @@ -0,0 +1,9553 @@ + + + + +Created by FontForge 20150824 at Wed Sep 21 09:26:40 2016 + By Everything Fonts +Font data copyright Google 2012 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fonts/RobotoRegular.ttf b/fonts/RobotoRegular.ttf new file mode 100644 index 00000000..8d193feb Binary files /dev/null and b/fonts/RobotoRegular.ttf differ diff --git a/fonts/RobotoRegular.woff b/fonts/RobotoRegular.woff new file mode 100644 index 00000000..8c07464b Binary files /dev/null and b/fonts/RobotoRegular.woff differ diff --git a/fonts/RobotoRegular.woff2 b/fonts/RobotoRegular.woff2 new file mode 100644 index 00000000..97ad550b Binary files /dev/null and b/fonts/RobotoRegular.woff2 differ diff --git a/fonts/TrebuchetMSBold.eot b/fonts/TrebuchetMSBold.eot new file mode 100644 index 00000000..a204a8df Binary files /dev/null and b/fonts/TrebuchetMSBold.eot differ diff --git a/fonts/TrebuchetMSBold.svg b/fonts/TrebuchetMSBold.svg new file mode 100644 index 00000000..ad5af960 --- /dev/null +++ b/fonts/TrebuchetMSBold.svg @@ -0,0 +1,1502 @@ + + + + +Created by FontForge 20150824 at Fri Oct 28 09:09:23 2016 + By Everything Fonts +Copyright (c) 1996 Microsoft Corporation. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fonts/TrebuchetMSBold.ttf b/fonts/TrebuchetMSBold.ttf new file mode 100644 index 00000000..25601ad3 Binary files /dev/null and b/fonts/TrebuchetMSBold.ttf differ diff --git a/fonts/TrebuchetMSBold.woff b/fonts/TrebuchetMSBold.woff new file mode 100644 index 00000000..e92a71cb Binary files /dev/null and b/fonts/TrebuchetMSBold.woff differ diff --git a/fonts/TrebuchetMSBold.woff2 b/fonts/TrebuchetMSBold.woff2 new file mode 100644 index 00000000..dce9dbc9 Binary files /dev/null and b/fonts/TrebuchetMSBold.woff2 differ diff --git a/getting-started/assignments/index.html b/getting-started/assignments/index.html new file mode 100644 index 00000000..76f03293 --- /dev/null +++ b/getting-started/assignments/index.html @@ -0,0 +1,109 @@ +Assignments +

Assignments

July 24, 2017

Survey Solutions system is based on the hierarchy of users which perform +their responsibilities based on the commands of superior users.

Every survey starts by a headquarters user deciding on the questionnaire +(importing the questionnaire from the Designer to the data server) and +making assignments to supervisors, which can in turn assign to +individual interviewers.

Assignment are orders to subordinate users to take part in the survey. +Not only they are directed at a particular user, but most importantly +the assignments determine the area of responsibility of that user. So +that in the system it is clear that not only interviewers A and B are +collecting, say census data, but also that interviewer A is responsible +for enumeration areas 1,2,3 and interviewer B for 4,5,6. Of course the +responsibilities can be divided not by enumeration areas, but by some +other attributes or address components: streets or villages for +household surveys, facilities for patient surveys, markets for price +surveys, etc.

An assignment is thus comprised of several obligatory components:

  1. survey questionnaire - which survey must be conducted, which +questionnaire to be used?
  2. responsible person - who must perform this task?
  3. identifying information - where the interviewers should collect the +response?
  4. number of interviews - how many interviews must be collected?

The first attribute, survey name never changes: from the time the +assignment is created for a particular survey, it stays unchanged +throughout the circulation of it in the system.

The person responsible for an assignment may change. The original +responsible may be changed to a different person, for example the +supervisor may pass an assignment to one of her interviewers, or +re-assign an assignment to a different interviewer.

With regards to the third attribute, the identifying information, we can +think of assignments as precise or imprecise. Precise assignments have +all their identifying questions answered, while imprecise assignments +have only some, but not all identifying questions answered. It is +typical for an imprecise assignment to result in multiple interviews. In +fact this is very natural for survey planners to think in these +categories: how many individual households to interview in a particular +enumeration area, or how many patients in a particular health facility, +etc. This number (capacity, quota) may be known, such as 12 households +from enumeration area, or unknown, such as all households located +between N.Lincoln Ave, N.Halstedt St, and W.Webster Ave in Chicago, +IL.

Of course, the addressing system is different in different countries and +for different contexts. But once the questionnaire is designed, it does +have one or more identifying questions. When an assignment is made, the +headquarters user decides, which questions he can answer, and which ones +he leaves unanswered. It becomes the responsibility of the interviewer +to fill out all the identifying questions that were not assigned values +by the headquarters user that has created the assignment.

For example, if the assignment is to interview 16 households in the city +block located between N.Lincoln Ave, N.Halstedt St, and W.Webster Ave in +Chicago, IL, then the interviewer may be expected to fill out the fields +of the street number, floor, and apartment number as well as the name of +the household head. Once this information is entered by an interviewer, +it can no longer be changed.

For scenarios where the number of interviews is unknown, an infinite +limit may be imposed by setting the number of interviews to -1 (negative +one). In this case the interviewer will be able to create as many new +interviews as necessary. Both the number of conducted interviews and the +number of remaining interviews in an assignment are displayed at +interviewer’s dashboard. The limit can be revised (increased or +decreased) by the headquarters users. During batch upload of interviews, +this limit is placed into the variable _quantity. If this variable is +not specified, 1 is assumed. The person responsible for the assignment +may be specified in the variable _responsible (accepts login names of +supervisors or interviewers).

Other attributes of an assignment
I addition to the above attributes, Survey Solutions assigns a unique +identifier to each assignment, tracks the date of the creation and last +modification of an assignment. The progress of completion is reflected +with:

  • number of submitted interviews and total interviews for the +supervisors/headquarters users, and 
  • number of created interviews and number of remaining interviews for +the interviewers.

Difference between an assignment and interview.
It is important to recognize the difference between an assignment and an +interview. An assignment is a different entity, and is being tracked in +Survey Solutions separately from interviews data. An assignment is thus +a permission to instantiate interviews, all of them will be marked by +the identifying information contained in the original assignment. 

Recall from the basic description of the work of a supervisor is that +his two main tasks are managing of the work load of his interviewers and +performing quality control of collected interviews. The supervisor is +doing them by distributing the assignments (obtained from Headquarters) +and by doing quality control (verifying answers, exchanging comments) of +the interviews.

Note that assignments are not reflected in the reports on interviews, +and they may not be opened for inspection. An assignment may be deleted +by the headquarters users, in which case the corresponding card will be +removed from the interviewer’s dashboard after synchronization. For any +incompleted assignments,any interviews that have been already sent to +the server by an interviewer are not deleted when an incompleted +assignment is deleted, but after synchronization the interviewer will no +longer have a possibility to collect data based on such assignment.

Transition notes
Earlier versions of Survey Solutions had two distinct modes of data +collection: Sample mode and Census mode. 

For users that conducted their surveys in the sample mode, there is +little to no distinction with the earlier operation. The same sample +preloading files may be used with newer versions, but there is no need +(or in fact a possibility) to specify any mode during the questionnaire +import.

For users that conducted their surveys in the census mode, there is a +change. The change is that the interviewers cannot start working without +prior having an assignment, and hence a headquarters user must upload an +assignments file with two columns _responsible and _quantity , where +_responsible contains names of all interviewers and _quantity is set +to -1 (negative one) for each of them. This completely replicates the +earlier mode, but the survey planner may decide to involve only part of +the interviewers in a particular survey, give them some quotas or +partial identifying information for their targets, or otherwise make use +of the new powerful assignments management features of Survey Solutions.

\ No newline at end of file diff --git a/getting-started/computer-assisted-web-interviewing-cawi-/index.html b/getting-started/computer-assisted-web-interviewing-cawi-/index.html new file mode 100644 index 00000000..f0987603 --- /dev/null +++ b/getting-started/computer-assisted-web-interviewing-cawi-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/cawi/web-interviewing/ + \ No newline at end of file diff --git a/getting-started/creating-assignments-one-at-time/index.html b/getting-started/creating-assignments-one-at-time/index.html new file mode 100644 index 00000000..dd8cb9a0 --- /dev/null +++ b/getting-started/creating-assignments-one-at-time/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/creating-assignments-one-at-time/ + \ No newline at end of file diff --git a/getting-started/distributing-assignments-to-interviewers/index.html b/getting-started/distributing-assignments-to-interviewers/index.html new file mode 100644 index 00000000..6e4cbb37 --- /dev/null +++ b/getting-started/distributing-assignments-to-interviewers/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/distributing-assignments-to-interviewers/ + \ No newline at end of file diff --git a/getting-started/download-and-install-the-interviewer-application/index.html b/getting-started/download-and-install-the-interviewer-application/index.html new file mode 100644 index 00000000..e6431deb --- /dev/null +++ b/getting-started/download-and-install-the-interviewer-application/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/download-and-install-the-interviewer-application/ + \ No newline at end of file diff --git a/getting-started/faq-for-it-personnel/index.html b/getting-started/faq-for-it-personnel/index.html new file mode 100644 index 00000000..39875245 --- /dev/null +++ b/getting-started/faq-for-it-personnel/index.html @@ -0,0 +1,40 @@ +FAQ for IT personnel +

FAQ for IT personnel

February 8, 2019

The recommended minimal hardware specifications required for Survey +Solutions to function properly for a questionnaire of about 500 +questions and for the survey of about 10,000 respondents. The minimal +requirements represent the specifications for the oldest tablets that can +run Survey Solutions. We advise to procure newest devices with the +latest version of Android for the projects that expect to run for two or +three years. Please refer to google.com for the +information on the latest version of Android OS and for the list of +devices supporting this latest version.

Contact support for a consultation prior to setup if your survey is 100,000 interviews or more, or if you are collecting any multimedia data.
1. What are the requirements for the server?

Server requirements are periodically revised as the Survey Solutions program evolves hence we've created the following pages on:

2. Is it possible to use our existing server for Survey Solutions?
  • It depends: If the hardware requirements are met, and the software prerequisites are available, there might be a possibility to reuse the existing server.
  • Note that in that case existing services will compete with Survey Solutions for resources. So this solution is possible only with a very powerful server, or non-demanding other services.
  • The maintenance of the other software should not affect availability, integrity and security of Survey Solutions service.
3. How do we configure our security software to collaborate with Survey Solutions?
4. We have necessary server equipment, but no specialists to install the Survey Solutions software. Is it possible to get help?
5. We don’t have a proper server. Is a server necessary for Survey Solutions, or can we use the software with the tablets only?
  • A server provides essential functionality and is absolutely required for data collection with Survey Solutions.
6. We don’t have a proper server. Are there any alternatives?
  • You can install Survey Solutions using major cloud server providers: Amazon, Google, Microsoft and others. The software and functionality is the same regardless whether it is installed in the cloud or on a local machine.
7. How many servers will we need?
  • One server can handle hundreds of interviewers and supervisors, and is sufficient for a typical household survey with tens of thousands households.
  • In some situations multiple servers may present additional convenience, or even be required.
8. Does the World Bank Group provide connectivity devices and cover connection charges for Survey Solutions?
  • No. It is up to the client to arrange proper network infrastructure, purchase any necessary devices, obtain SIM-cards (if necessary), and cover the traffic usage fees.
9. Is it possible to ”synchronize” the server periodically or do I need a constant connection?
  • The interviewers and supervisors will attempt to connect to the server at their convenience, so the server must be reachable at all times when the interviewers may decide to synchronize.
  • The server connection to Internet must hence be fast and reliable.
10. Should my server be connected to Internet?
  • The tablets will need to send data to the server, so it must be visible and reachable.
  • In most cases this means the tablets and the server are communicating over the Internet.
  • For physical installations it is possible to send the data through a LAN without sending the data over the Internet, but the tablets must also be connected to the same LAN. Usually this means the tablets must be within the WiFi range from the server (up to about 20-30 meters away). Since the tablets are expected to synchronize frequently, this is an inconvenient and rare scenario.
11. Do the tablets need a network connection during an interview?
  • No. The interviews are conducted while the tablets are not connected.
  • Internet connection is not required and 3G/4G or WiFi traffic is not consumed during interviews.
  • Survey Solutions accumulates collected data on the tablet and sends it to the server during synchronization.
12. 3G/4G coverage is rather spotty in our country. Is it still possible to use Survey Solutions?
  • Connection can be utilized when available, but spotty coverage would imply more travelling to the areas where signal is available for synchronizations.
13. How often should the tablets synchronize?
  • This depends on the protocol of a particular survey.
  • For example: every day; or twice a day.
  • More frequent synchronizations allow faster turnaround.
14. We don’t want to send our data over the air. Is it possible to avoid using WiFi?
  • Modern Android-based tablets usually do not have an Ethernet socket for wired connection and provide exclusively WiFi, and (for some models) 3G/4G connectivity.
  • This is the limitation of the devices, not the Survey Solutions software.
15. Is the communication over the Internet secure?
  • Survey Solutions uses password protection and authorization procedures to authenticate all users and communications.
  • Installing an SSL certificate for the server allows additional encryption of all data.
  • Our experts are available to discuss particular risks and other specific security concerns.
16. Which brand and model of tablets should I buy?
  • The World Bank is not in the position to point to a particular brand and model as ”the tablet” for Survey Solutions.
  • The choice depends on multiple different characteristics and the decision on the model depends on the client, subject to the technical requirements and market availability.
  • The characteristics to evaluate are usually: performance, memory, storage, connectivity, screen, battery, price, convenience and ergonomics. Other characteristics may affect the decision if used in the data collection: GPS sensor, optical camera, etc.
17. What requirements does Survey Solutions have for the tablets?
18. What screen size is best for Survey Solutions?
  • 7-8-inch screens are often picked as suitable in typical operations. Bigger screens consume more power and reduce autonomous work.
  • The choice of the screen should depend on the convenience of use with the software and is usually determined experimentally.
19. Will we need additional batteries?
  • Modern tablets have battery life typically ranging from 6 to 12 hours, which is usually sufficient for a day of work of an interviewer.
  • If the interviewers remain in a remote area without access to power grid for a prolonged period, they may need additional sources of power.
  • External batteries of various capacities can provide a quick solution. Other things being equal it is useful to have a charge indicator on a battery.
  • Charging from car batteries or portable generators may also bepossible depending on the survey situation.
20. Can autonomous life of a tablet be extended without any additional equipment?
  • It is possible to use the device settings to minimize power consumption:
  • adjust screen brightness;
  • switch off bluetooth;
  • switch off GPS if not used;
  • switch off WiFi when not in use, etc;
21. Should we buy new tablets specifically for Survey Solutions or is it possible to use our existing stock of tablets?
  • If the tablets you have satisfy the hardware and software requirements, they usually can be used with the Survey Solutions.
  • Note that the capacity of the batteries found in most tablets reduces sharply after about 1.5-2 years. Older tablets might thus still be used but may require more maintenance and power backup options.
  • If the tablets are still in use for other purposes, other software installed on them will be competing for the resources (memory and CPU). Make sure there is sufficient storage space available to install and operate Survey Solutions.
22. Should all the tablets used in the survey be identical brand and model?
  • No. Different tablet models may be used as long as they satisfy the minimal requirements. Typical situations are:
    • Note that 3G/4G connectivity adds to the cost of the device. If the interviewers in a particular region are expected to be always covered by WiFi connectivity, for example if they are coming to the office daily, they might use a tablet without 3G/4G connectivity.
    • Another situation is when the operations are scaled up from a smaller survey or pilot to a full size survey, or a larger survey, and the original model is no longer available on the market. In that case a new model can be used alongside the older ones, as long as they are still functioning.
  • Using the same model usually simplifies the support. If there is a problem or an advisory, the survey administrator knows that it affects all the eqipment in a similar fashion.
23. How many tablets will we need to purchase?
  • One per interviewer. Have some spares in case a tablet gets lost, stolen, or damaged.
  • Number of spares depends on the particular situation. Reserving 1 spare tablet for every 20 active interviewers is indicative.
24. We plan to start fieldwork on May 1 and the supplier promised to deliver the tablets by April 30. That’s ok, right?
  • Entirely up to you, but someone will need to check and register all the devices, charge them, install the software, create user accounts, verify everything is in order and fix what’s not.
  • The training for use of the tablets as instruments of data collection is essential, and it is only successful if it includes practice with the actual devices. Thus the devices should arrive before the interviewers’ training.
25. How many tablets will we need to purchase for the supervisors?
  • None. Supervisors work with computers, not tablets.
  • If the supervisors travel with the interviewers, they should be equipped with a laptop to work in the field.
  • If the supervisors stay in the office, they may use a laptop or a desktop computer.
26. What are the requirements for a supervisor’s computer?
  • Windows-based computer, OS Windows 7, Windows 8, or Windows 10;
  • 4GB RAM, 120GB hard drive space (SSD drive is preferable);
  • If the supervisor is working in the field, then connectivity from the field via 3G or 4G, (built-in, USB, or external wireless modem, or a similar device).
27. What database does Survey Solutions use to store data? How can we access it from our system?
  • Survey Solutions uses a PostgreSQL system to store and retrieve the data. If in the future, the DB engine is changed in favor of a different database management system, the installation instruction and requirements will be updated.
  • The exact database structure is changing frequently between the versions and it should be assumed that there will be more changes in the future. For that reason, the data in the Survey Solutions database should not be accessed directly by any other software the client might use for other operations.
  • The data is exported by the Survey Solutions server on demand in the form of a downloadable file.
28. What is the format of the exported file? Is it suitable for our software X?
  • The software exports the data as an archive containing multiple files in tab-delimited unicode text format. Binary files (images) are downloaded separately. Survey Solutions documentation explains the particulars on how questions of different types (numeric, text, choice, etc) are saved in the data file.
  • Tab-delimited text format is a popular data interchange format suitable for import for many modern databases, spreadsheets, and statistical packages.
  • Consult your software operating manual on the support of tab-delimited (also known as tab-separated) data.
  • Additionally, the survey data may be exported in the binary formats of Stata or SPSS statistical packages.
29. Our system is set up and running. Should we change anything?
  • Installing updates is one of the most common tasks to be performed.
  • Install the updates and especially security updates for the server as recommended by the OS provider.
  • For tablets there is usually no additional benefit to install further OS updates if the Survey Solutions is already working smoothly.
  • There is a need to periodically update Survey Solutions as well. The most convenient time for this is in between the surveys.
30. If we host Survey Solutions on our own server, how do we make sure that we get the updates?
  • Notifications about new version releases are routinely posted as: Release notes
  • The update of the server component of Survey Solutions is not automatic and should be undertaken by the server administrator after careful consideration of the new features and current data collection situation.
  • The updates procedure depends both on the most recent and the installed version of Survey Solutions.
  • Lagging behind for several versions is not recommended as this means you are not getting the bugfixes and access to the new features.
  • If you are reporting a bug, our first recommendation is usually to catch up with the currently released version.
31. Can we restrict the tablets so that no other software can be used on the tablets?
  • Survey Solutions generally doesn’t mind presence of other software as long as it is not demanding too much of the tablet’s resources. But in some cases the survey administrators restrict the use of other software, for example, to reduce wireless bills due to unwanted communications.
  • Depending on your choice of the tablet and desired functionality, this possibility may be provided by the operating system (restricted account), third party software, or a combination of both.
32. If a tablet is lost or damaged before synchronizing, is there any way to retrieve the data that has not yet been synchronized?
  • If a tablet is lost, the unsynchronized data is lost with it.
  • If a tablet is damaged, sometimes data can be recovered from it (depends on the damage). For example, if only the tablet’s battery fails, the data could be recovered by connecting the tablet to an external power source, replacing the battery, or using other similar techniques. The World Bank does not provide technicians for this kind of recovery operations.
  • In some cases, if a tablet is damaged, the data cannot be recovered (memory damage, etc).
  • Data recovery from a damaged device is usually a costly operation. In practice it may be more cost-efficient to collect a number of replacement observations instead of trying to recover a handful of observations from a damaged device.
  • To minimize the risks of data loss, synchronize tablets often and protect the tablet (cover case, rugged jacket, carrying bag, etc).
33. If an interviewer is assigned a new tablet during the field work can she use the same log in information on the new tablet to retrieve the surveys she needs to complete?
  • Starting from version 4.1 of Survey Solutions each interviewer can work only on one device tracked by the system.
  • In case of tablet’s loss or damage the interviewer can switch to using a replacement tablet.
  • Depending on the circumstances of loss or damage the change of credentials may be recommended as well.
  • After logging in from the new device the interviewer has to confirm the switch of the device.
  • Old device is automatically excluded and no data from it will ever be accepted.
  • The interviewer can continue her work on the new replacement device from the point consistent with the last synchronization.
34. We want to host Survey Solutions on our own server. Can we back up it’s database?
  • Yes. When Survey Solutions stores data on your server you have a possibility to do data backups, including automatic/scheduled backups with your desired frequency.
35. If I have to make changes to the questionnaire during the field work, for example I want to add response options to a question, how do I get these changes to the interviewers?
  • Any changes to questionnaires are not automatically delivered to interviewers.
  • Each Survey Solutions server contains a copy of the questionnaire used for data collection, which is imported by the headquarter user.
  • Importing a new version of the questionnaire to the Survey Solutions server does not affect existing assignments for that survey, but defines the questionnaire that will be used for future assignments.
  • To update the questionnaire for existing assignments, they must be deleted (technically archived) and recreated using the newly imported version of the questionnaire. Survey Solutions provides an "assignments upgrade" feature to do this automatically when a questionnaire is imported. This is only possible for new assignments and not for started / completed / rejected / approved interviews.
  • Updating questionnaire after the fieldwork has started is not recommended.
36. Is the data on the Designer site shared between the users?
  • The Designer site http://designer.mysurvey.solutions/ is intended for designing the survey questionnaires. It does not store or share the data collected during surveys using those questionnaires, but stores blank forms only.
  • Multiple users can collaborate and work on developing questionnaire forms together.
37. Can we use tablets or Apple computers to design a survey using the online designer tool?
  • The implementation of browser functionality differs between different browsers and different platforms.
  • Survey Solutions Designer does not explicitly rule out the use of any particular browser or platform. However, the use of anything else beyond the current Windows versions of Google Chrome, Mozilla Firefox, and Microsoft Edge is not tested, not supported, and not guaranteed.
  • The use of Microsoft Internet Explorer has been deprecated.
  • To download a compatible browser visit links below:
  • Google Chrome
  • Mozilla Firefox
  • Microsoft Edge
38. What is a Survey Solutions Demo server?
  • Demo Headquarter server is set up for demonstration purposes so that anyone can try how the Survey Solutions program works and evaluate its functionality and suitability for their survey.

  • For that reason, the access to the headquarter server is not restricted and anyone can login there.

  • The Demo server is not intended for any real data collection.

  • Read more about the use of the demo server (including login and password to access it) in this article.

39. We like your system and we want to change it (improve it, modify it, customize it). How should we start?
  • We listen to the suggestions of our users. If there is a useful feature that is missing from our functionality, please let us know in the forum.
  • We do not distribute the source code of Survey Solutions.
  • Survey Solutions' code is published in GitHub in the following public repository: Survey Solutions.
\ No newline at end of file diff --git a/getting-started/getting-started-checklist/index.html b/getting-started/getting-started-checklist/index.html new file mode 100644 index 00000000..33b149c6 --- /dev/null +++ b/getting-started/getting-started-checklist/index.html @@ -0,0 +1,35 @@ +Getting Started Checklist +

Getting Started Checklist

June 29, 2017
  1. Headquarters user imports the +questionnaire from the +Questionnaire Designer
  2. Headquarters user creates user +accounts for +at least one supervisor and one enumerator ​
  3. Headquarters user create assignments one at a +time or +create many assignments at a +time with a +tab delimited file
  4. Supervisor Distribute assignments to +interviewers
  5. Supervisor or enumerator downloads and installs the +interviewer application on +the tablet  
  6. Enumerator synchronizes the +tablet and completes the survey case assignment, and synchronizes +again (sends the completed survey cases to the server)
  7. Supervisor approves or rejects the +questionnaire.
  8. Headquarters user approves or rejects the +questionnaire.
\ No newline at end of file diff --git a/getting-started/headquarters-user-browsing-the-completed-interview/index.html b/getting-started/headquarters-user-browsing-the-completed-interview/index.html new file mode 100644 index 00000000..30e630f7 --- /dev/null +++ b/getting-started/headquarters-user-browsing-the-completed-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/headquarters-user-browsing-the-completed-interview/ + \ No newline at end of file diff --git a/getting-started/implementing-a-capi-survey/images/preparation_timeline.png b/getting-started/implementing-a-capi-survey/images/preparation_timeline.png new file mode 100644 index 00000000..4480251b Binary files /dev/null and b/getting-started/implementing-a-capi-survey/images/preparation_timeline.png differ diff --git a/getting-started/implementing-a-capi-survey/index.html b/getting-started/implementing-a-capi-survey/index.html new file mode 100644 index 00000000..f83f389a --- /dev/null +++ b/getting-started/implementing-a-capi-survey/index.html @@ -0,0 +1,172 @@ +Implementing a CAPI survey with Survey Solutions +

Implementing a CAPI survey with Survey Solutions

September 13, 2018

The Decision to Use CAPI

The decision to use computer-assisted personal interviewing (CAPI) instead of paper +and pencil (PAPI) is an important one and should not be taken lightly. It is a step into +modern technology that may be more expensive for the first one or two surveys, but +subsequent surveys will be far less expensive, will provide much higher data quality, +and the data will be available for analysis much faster than when using PAPI. The staff +members who implement a CAPI survey will gain experience in a technology that is +rapidly becoming the standard throughout the world of data collection, so your entire +organization will be more competitive.

The decision to use CAPI should go hand-in-hand with the choice of data entry and +management software that is used. Many factors should be considered when making +these decisions:

  • Should CAPI be considered at all? For example, will a paper trail be required, +or will a statistical database be sufficient? Do local laws and regulations +permit the electronic storage and transmission of survey data?
  • Will the fieldwork require constant or frequent monitoring? For some software +this would suggest the need for widely available cell phone or Internet service.
  • Will the interviews be conducted in multiple languages?1
  • Does the questionnaire include more than one respondent?
  • Are you willing and able to pay the initial costs of tablets and training for the +long-term benefits of CAPI?
  • Will the listing be conducted prior to or during the interviewing process?

The answers to these questions will help to guide the decision whether to use CAPI, +and if so, which software to use. Every CAPI software package has strengths and +weaknesses, and they should be taken into account during this decision-making +process. For a comparison of the different CAPI packages (except Survey Solutions) +see this World Bank-funded [report from 2011] +(http://siteresources.worldbank.org/INTSURAGRI/Resources/7420178-1294259038276/CAPI.Software.Assessment.Main.Report.pdf).

Direct Costs

One component of CAPI costs is for the tablets on which the data are collected. The +most popular of these devices, and at present the least expensive, run on the Android +operating system. Each interviewer must have her or his own tablet computer for data +collection, so this can represent a substantial initial investment. Fortunately these +devices can be reused on future surveys, so after this initial investment the only +costs will be for replacements of lost or damaged units.

As of the spring of 2015, an Android tablet powerful enough to run Survey +Solutions cost at about US$150-$250 in the USA. A list of tablet computers +that have been tested for use with Survey Solutions can be found +here.

Cost should not be the only consideration when selecting the appropriate tablet for +data collection. The operating system should be the first consideration, since most +data entry packages run on either Windows or Android tablets, although some run on +both. These considerations include battery life, charging time, screen size and +resolution, connectivity options (such as cell phone, Bluetooth, USB, wifi, and +connectivity between tablets), and durability under harsh environmental conditions +(such as hot and code temperatures, rain, and sand storms). Note that prices of both +Windows and Android tablets have been dropping dramatically over the past several +years and there is every reason to believe they will continue to do so.

Another cost of CAPI surveys is for training of interviewers. Interviewer training is also +required for PAPI surveys, but CAPI interviewers must also be trained on the use of +the tablets. Field supervisors and headquarters staff will also need to be trained on +the use of these devices, as well as the differences in the way CAPI surveys are +managed. These differences typically result in a more streamlined process which +provides field teams with faster, more targeted feedback than with PAPI surveys, and +that provides higher data quality.

Another cost relates to communications and connectivity. Depending on availability, +the data and quality control information must be exchanged between the field teams +and headquarters using either cell phone or Internet connectivity. Whichever is used, +additional user accounts will likely be required.

Most CAPI systems now rely on case and data management systems that reside on local, +remote, or cloud-based servers. If the server is local this will include the cost of +the server hardware and software as well as server maintenance. If the server is +hosted remotely or in the cloud, monthly costs may amount to US$150 per server. Each +server may host multiple surveys.

Survey Solutions offers many options for configuring servers. These options are +described here.

Indirect Costs

Technical support is the major cost to consider when deciding whether to switch to +CAPI. Depending on the CAPI system these costs can total several hundred thousand US +dollars and might completely overshadow the direct costs of CAPI equipment and training.

Survey Solutions is designed to minimize indirect costs. Still, there is likely +to be the need for some technical assistance for the first one or two surveys. +The extent of this TA will depend on the specific requirements in each country +and will be determined after discussions with the Survey Solutions team.

Benefits

There are many benefits to using CAPI to replace PAPI data collection. First and +foremost is the improvement of data quality. When data are rapidly available for +assessment after they are collected, errors in fieldwork can be corrected and +changes in procedures, if needed, can be implemented quickly.

Another benefit is the elimination of paper questionnaires, reducing printing costs and +reducing the burden on field teams to ensure they have sufficient numbers of blank +forms. Transmission of the results of the interviews is done electronically so a +package delivery network is no longer needed.

The day that fieldwork is completed the data are immediately available for review and +cleaning without the need to finish entering data from the remaining paper forms. This +means that analysis can begin sooner and results will be available earlier.

An advantage of Survey Solutions is that it does not require extensive programming; it +can be implemented by survey research organizations with no or minimal need for outside +consultants.

CAPI Scheduling

A typical CAPI survey requires at least 3 months for fieldwork preparation. This is +somewhat longer than for PAPI surveys, due to the need for tablet procurement for +initial surveys, and the need for additional staff training. However, this schedule should +be reduced after the first or second CAPI survey since most of the tablets will still be +available and most of the staff will already be trained. Also, the data will be available +for analysis earlier than they would be for a PAPI survey.

An example of a typical CAPI survey is shown in Figure 1. While the schedule of a +specific survey may be somewhat different from this example, it will not vary +substantially based on the size of the sample. The length of fieldwork may vary +considerably based on the ratio of size of the fieldwork team to the size of the sample, +and whether listing efforts will take place before or during fieldwork. The example in +Figure 1 does not include listing and assumes it is undertaken as a separate task.

  1. Obtain coverage maps for Internet access and from cellular providers: +If you are planning to transmit data and monitor fieldwork directly from the data +entry tablets, than widely available cellular and/or Internet coverage is essential. +On the other hand, if frequent data transmission is not critical, or if fieldwork +monitoring is available in the field, the need for widespread connectivity can be +somewhat relaxed.
Survey Solutions provides the option for field supervisors to manage and
+monitor data collection with infrequent cell phone or Internet connections.
+
  1. Select sample PSUs and compare with coverage maps: Once the sample +PSUs are selected, coverage maps will help determine the best provider and +routing of interviewer teams to optimize their opportunities to transfer data. If +necessary use a combination of providers to increase coverage of selected +PSUs or develop field work routines to cope with uncovered locations.
  2. Decision to use CAPI: This should be done in consultation with all +stakeholders and with a clear understanding of this new technology. A major +part of this decision includes the data network to use, whether it uses the +Internet or cell phone infrastructure, or a combination of both. A comparison +should be made between the selected primary sampling units (PSUs) and the +availability of cell phone and/or Internet connectivity along with the anticipated +frequency of remote fieldwork monitoring.
  3. Android tablet procurement: Procurement of the tablets should be started +at an early stage. Check whether they are available in the country, and re- +confirm their compatibility with the selected data entry software.
  4. Questionnaire implementation on tablets: Ideally training on the process +of loading your questionnaire onto the interviewers’ tablets should +only be required the first time the software is used. Some data entry +software requires the use of programming languages, and provides +extensive flexibility and power for large, complex questionnaires. +These packages generally require substantial training of technical staff or the +extensive reliance on consulting assistance. Other software packages require +little or no programming but are appropriate only for use with simple +questionnaires and sample designs. Therefore the selection of survey +processing software should take into account the types of surveys that are +expected in the future.
Learning to use the Survey Solutions questionnaire designer will enable your staff
+to create a data entry system for your current and future surveys regardless of their
+complexity. The trainees are not required to have programming skills, and after a brief
+training period should be able to create data entry systems for complex surveys with little
+or no additional outside assistance.
+
  1. In-house questionnaire testing. An initial test of the tablet data entry system +should be conducted within your office, ideally by staff members who are familiar +with the questionnaire and subject matter. This will help to resolve the most +obvious errors prior to the field pre-test. Survey Solutions provides an easy- +to-use questionnaire tester that enables any staff member with a user name, +password, and tablet to test your questionnaire.

  2. Supervisor and Interviewer training: +Supervisors should participate in the +same training as interviewers to provide them with a clear understanding of +the questionnaire and the use of the tablets.

  3. Field pre-test: This is the first opportunity to test the tablet-based data entry +system under realistic conditions. Locations should be identified that are not +included in the survey sample, and interviewers and supervisors should +conduct realistic interviews with real households. This provides both a training +experience for the field staff and a test of the data entry system.

  4. Modifications to questionnaire based on pre-test: Based on observations +from the pre-test, problems with field procedures and the tablet questionnaire +must be resolved. If necessary, changes should be made to the data entry +system on the tablets. The result of this task is the final version of the data +entry system.

  5. Pilot test: After the questionnaire is finalized in the previous task, the pilot will +test the final questionnaire as it is implemented on the tablets, and will also +focus on connectivity and communications. This will test your network +infrastructure and ensure that interviewers and supervisors are familiar with +data transfer procedures. This will ensure that all of the changes based on the +first pre-test have been properly implemented and that the data can be +transferred when needed. It will also ensure that all supervisors are able to +provide the necessary support to their teams in the event of a technical failure +in the field.

  6. Supervisor training: This training should clearly define the role of the field +supervisors, and enable them to use the data and case management tools they +will be using in the field. This will enable the supervisors to take advantage of CAPI by +checking the quality and completeness of the data as they are collected. In most +data collection software, this is done by visually checking the data on the +tablets or using separate management software.

  7. Fieldwork: When considering the trade-off between a larger field team and +an extended period of fieldwork, it is generally preferable to have a longer +period of fieldwork. This provides the survey team with more time to learn +about and respond to problems in the field.

  8. Training on data export, import, and analysis: This training should only be +required the first time Survey Solutions is used. Survey Solutions provides a +straightforward method for exporting its data to tab-delimited files. These files +are organized as a relational database, with the ability to easily import and +merge them into files that can be used for statistical analysis. We provide the +training to export, import, and analyse the Survey Solutions data.

  9. Data cleaning and analysis: This is the final step in the primary use of the +survey data. With Survey Solutions, data cleaning should be minimal since +the data entry and built-in case management systems check for most of the +fieldwork problems encountered with other data entry systems.

A manual for field supervisors using Survey Solutions can be found here. +Survey Solutions has data and case management tools built in, as the +Headquarters Guide. Training on this component will only be +needed for the first survey using Survey Solutions. It will enable the supervisors +to check questionnaires, communicate with the field teams and headquarters, and to +generate and interpret reports.

Figure 1 : CAPI Survey Schedule Example


  1. All languages supported by Microsoft Windows are available in Survey Solutions↩︎

\ No newline at end of file diff --git a/getting-started/implementing-a-capi-survey/resources/infrastructure.pdf b/getting-started/implementing-a-capi-survey/resources/infrastructure.pdf new file mode 100644 index 00000000..a24a7905 Binary files /dev/null and b/getting-started/implementing-a-capi-survey/resources/infrastructure.pdf differ diff --git a/getting-started/import-the-questionnaire/index.html b/getting-started/import-the-questionnaire/index.html new file mode 100644 index 00000000..cdffd7ec --- /dev/null +++ b/getting-started/import-the-questionnaire/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/import-the-questionnaire/ + \ No newline at end of file diff --git a/getting-started/index.html b/getting-started/index.html new file mode 100644 index 00000000..3a6ec7c5 --- /dev/null +++ b/getting-started/index.html @@ -0,0 +1,68 @@ +Getting Started +

Getting Started

Overview: Printable materials

An overview booklet about Survey Solutions can be downloaded here as +printable PDF in English +and French languages +(16 pages, less than 1MB).
An older overview flyer is also downloadable (in English only, 2 pages, less than 2MB).
The Statistics Division of the Food and Agriculture Organization of the United Nations (FAO) +has published overview booklets in English +and French (8 pages, less than 1MB).



(Their GSARS.ORG website is no longer accessible, but the preserved copies are linked here.)

November 1, 2023

Instructions for respondents to Web Surveys with Survey Solutions

This document provides necessary instructions for respondents to the Web Surveys with Survey Solutions.

The rest of this site describes the Survey Solutions software for survey managers and developers and is of little relevance to the respondents.

March 3, 2019

FAQ for IT personnel

The recommended minimal hardware specifications required for Survey +Solutions to function properly for a questionnaire of about 500 +questions and for the survey of about 10,000 respondents. The minimal +requirements represent the specifications for the oldest tablets that can +run Survey Solutions. We advise to procure newest devices with the +latest version of Android for the projects that expect to run for two or +three years. Please refer to google.com for the +information on the latest version of Android OS and for the list of +devices supporting this latest version.

February 8, 2019

Implementing a CAPI survey with Survey Solutions

The Decision to Use CAPI

The decision to use computer-assisted personal interviewing (CAPI) instead of paper +and pencil (PAPI) is an important one and should not be taken lightly. It is a step into +modern technology that may be more expensive for the first one or two surveys, but +subsequent surveys will be far less expensive, will provide much higher data quality, +and the data will be available for analysis much faster than when using PAPI. The staff +members who implement a CAPI survey will gain experience in a technology that is +rapidly becoming the standard throughout the world of data collection, so your entire +organization will be more competitive.

September 13, 2018

Assignments

Survey Solutions system is based on the hierarchy of users which perform +their responsibilities based on the commands of superior users.

Every survey starts by a headquarters user deciding on the questionnaire +(importing the questionnaire from the Designer to the data server) and +making assignments to supervisors, which can in turn assign to +individual interviewers.

Assignment are orders to subordinate users to take part in the survey. +Not only they are directed at a particular user, but most importantly +the assignments determine the area of responsibility of that user. So +that in the system it is clear that not only interviewers A and B are +collecting, say census data, but also that interviewer A is responsible +for enumeration areas 1,2,3 and interviewer B for 4,5,6. Of course the +responsibilities can be divided not by enumeration areas, but by some +other attributes or address components: streets or villages for +household surveys, facilities for patient surveys, markets for price +surveys, etc.

July 24, 2017

Getting Started Checklist

  1. Headquarters user imports the +questionnaire from the +Questionnaire Designer
  2. Headquarters user creates user +accounts for +at least one supervisor and one enumerator ​
  3. Headquarters user create assignments one at a +time or +create many assignments at a +time with a +tab delimited file
  4. Supervisor Distribute assignments to +interviewers
  5. Supervisor or enumerator downloads and installs the +interviewer application on +the tablet  
  6. Enumerator synchronizes the +tablet and completes the survey case assignment, and synchronizes +again (sends the completed survey cases to the server)
  7. Supervisor approves or rejects the +questionnaire.
  8. Headquarters user approves or rejects the +questionnaire.

June 29, 2017
\ No newline at end of file diff --git a/getting-started/overview-printable/images/book_fao.png b/getting-started/overview-printable/images/book_fao.png new file mode 100644 index 00000000..29ce1e41 Binary files /dev/null and b/getting-started/overview-printable/images/book_fao.png differ diff --git a/getting-started/overview-printable/images/brochure.png b/getting-started/overview-printable/images/brochure.png new file mode 100644 index 00000000..97986736 Binary files /dev/null and b/getting-started/overview-printable/images/brochure.png differ diff --git a/getting-started/overview-printable/images/brochure_gs.png b/getting-started/overview-printable/images/brochure_gs.png new file mode 100644 index 00000000..a366d693 Binary files /dev/null and b/getting-started/overview-printable/images/brochure_gs.png differ diff --git a/getting-started/overview-printable/images/flyer.png b/getting-started/overview-printable/images/flyer.png new file mode 100644 index 00000000..cc43f0e8 Binary files /dev/null and b/getting-started/overview-printable/images/flyer.png differ diff --git a/getting-started/overview-printable/index.html b/getting-started/overview-printable/index.html new file mode 100644 index 00000000..e583846c --- /dev/null +++ b/getting-started/overview-printable/index.html @@ -0,0 +1,25 @@ +Overview: Printable materials +

Overview: Printable materials

November 1, 2023
An overview booklet about Survey Solutions can be downloaded here as +printable PDF in English +and French languages +(16 pages, less than 1MB).
An older overview flyer is also downloadable (in English only, 2 pages, less than 2MB).
The Statistics Division of the Food and Agriculture Organization of the United Nations (FAO) +has published overview booklets in English +and French (8 pages, less than 1MB).



(Their GSARS.ORG website is no longer accessible, but the preserved copies are linked here.)

The Food and Agriculture Organization of the United Nations (UN FAO) and Asian Development Bank (ADB) have compiled a handbook "Conducting Tablet-Based Field Data Collection with Survey Solutions: A Handbook (2020)" (81 pages, 16MB) which will be useful for beginners to familiarize with the components of the system and its functionality as it was around 2018-2019.
\ No newline at end of file diff --git a/getting-started/overview-printable/resources/CA7691EN.pdf b/getting-started/overview-printable/resources/CA7691EN.pdf new file mode 100644 index 00000000..3115d297 Binary files /dev/null and b/getting-started/overview-printable/resources/CA7691EN.pdf differ diff --git a/getting-started/overview-printable/resources/GS-CAPI-SUSO-BROCHURE-05.pdf b/getting-started/overview-printable/resources/GS-CAPI-SUSO-BROCHURE-05.pdf new file mode 100644 index 00000000..4e9ea22c Binary files /dev/null and b/getting-started/overview-printable/resources/GS-CAPI-SUSO-BROCHURE-05.pdf differ diff --git a/getting-started/overview-printable/resources/GS-CAPI-SUSO-BROCHURE-FR-001.pdf b/getting-started/overview-printable/resources/GS-CAPI-SUSO-BROCHURE-FR-001.pdf new file mode 100644 index 00000000..253aacc2 Binary files /dev/null and b/getting-started/overview-printable/resources/GS-CAPI-SUSO-BROCHURE-FR-001.pdf differ diff --git a/getting-started/overview-printable/resources/SurveySolutionsBooklet_2018oct(ENG).pdf b/getting-started/overview-printable/resources/SurveySolutionsBooklet_2018oct(ENG).pdf new file mode 100644 index 00000000..18f2ac4e Binary files /dev/null and b/getting-started/overview-printable/resources/SurveySolutionsBooklet_2018oct(ENG).pdf differ diff --git a/getting-started/overview-printable/resources/SurveySolutionsBooklet_2018oct(FRA).pdf b/getting-started/overview-printable/resources/SurveySolutionsBooklet_2018oct(FRA).pdf new file mode 100644 index 00000000..c0225ae8 Binary files /dev/null and b/getting-started/overview-printable/resources/SurveySolutionsBooklet_2018oct(FRA).pdf differ diff --git a/getting-started/overview-printable/resources/flyer2.pdf b/getting-started/overview-printable/resources/flyer2.pdf new file mode 100644 index 00000000..3fedc20f Binary files /dev/null and b/getting-started/overview-printable/resources/flyer2.pdf differ diff --git a/getting-started/page/1/index.html b/getting-started/page/1/index.html new file mode 100644 index 00000000..19d5a9e1 --- /dev/null +++ b/getting-started/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/getting-started/ + \ No newline at end of file diff --git a/getting-started/portal/index.html b/getting-started/portal/index.html new file mode 100644 index 00000000..33c146b8 --- /dev/null +++ b/getting-started/portal/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/personal-demo-server/ + \ No newline at end of file diff --git a/getting-started/supervisor-browsing-the-completed-interview/index.html b/getting-started/supervisor-browsing-the-completed-interview/index.html new file mode 100644 index 00000000..cb245763 --- /dev/null +++ b/getting-started/supervisor-browsing-the-completed-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/supervisor/supervisor-browsing-the-completed-interview/ + \ No newline at end of file diff --git a/getting-started/synchronization-completing-the-interview/index.html b/getting-started/synchronization-completing-the-interview/index.html new file mode 100644 index 00000000..faed3d03 --- /dev/null +++ b/getting-started/synchronization-completing-the-interview/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/synchronization-completing-the-interview/ + \ No newline at end of file diff --git a/getting-started/uploading-many-assignments-at-a-time/index.html b/getting-started/uploading-many-assignments-at-a-time/index.html new file mode 100644 index 00000000..4308b331 --- /dev/null +++ b/getting-started/uploading-many-assignments-at-a-time/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/uploading-many-assignments-at-a-time/ + \ No newline at end of file diff --git a/getting-started/web-interview/index.html b/getting-started/web-interview/index.html new file mode 100644 index 00000000..32a955da --- /dev/null +++ b/getting-started/web-interview/index.html @@ -0,0 +1,21 @@ +Instructions for respondents to Web Surveys with Survey Solutions +

Instructions for respondents to Web Surveys with Survey Solutions

March 3, 2019

This document provides necessary instructions for respondents to the Web Surveys with Survey Solutions.

The rest of this site describes the Survey Solutions software for survey managers and developers and is of little relevance to the respondents.

\ No newline at end of file diff --git a/getting-started/web-interview/resources/web_help.pdf b/getting-started/web-interview/resources/web_help.pdf new file mode 100644 index 00000000..2ceb501e Binary files /dev/null and b/getting-started/web-interview/resources/web_help.pdf differ diff --git a/google4f10625726abf154.html b/google4f10625726abf154.html new file mode 100644 index 00000000..1aa585c9 --- /dev/null +++ b/google4f10625726abf154.html @@ -0,0 +1 @@ +google-site-verification: google4f10625726abf154.html \ No newline at end of file diff --git a/headquarters/accounts/account-types/index.html b/headquarters/accounts/account-types/index.html new file mode 100644 index 00000000..95182379 --- /dev/null +++ b/headquarters/accounts/account-types/index.html @@ -0,0 +1,21 @@ +Survey Solutions Account Types +

Survey Solutions Account Types

March 30, 2021

Survey Solutions Data Server provides the following account types:

  • administrator - manages the server, creates workspaces, user accounts.
  • headquarters - starts surveys, creates assignments, conducts top-level quality review of interviews, exports data
  • supervisor - manages teams if interviewers, distributes work between interviewers, quality check of interviews;
  • interviewer - conducts interviews;
  • observer - observes operations on the server;
  • API user - user account for user-written extensions accessing the server.

The Survey Solutions Designer site account may not be used to log in to the data server.

\ No newline at end of file diff --git a/headquarters/accounts/adding-users-to-workspaces/images/accessdenied.png b/headquarters/accounts/adding-users-to-workspaces/images/accessdenied.png new file mode 100644 index 00000000..b1328c57 Binary files /dev/null and b/headquarters/accounts/adding-users-to-workspaces/images/accessdenied.png differ diff --git a/headquarters/accounts/adding-users-to-workspaces/images/accesstoworkspaces.png b/headquarters/accounts/adding-users-to-workspaces/images/accesstoworkspaces.png new file mode 100644 index 00000000..7ae8a61b Binary files /dev/null and b/headquarters/accounts/adding-users-to-workspaces/images/accesstoworkspaces.png differ diff --git a/headquarters/accounts/adding-users-to-workspaces/images/addtoworkspace.png b/headquarters/accounts/adding-users-to-workspaces/images/addtoworkspace.png new file mode 100644 index 00000000..ce5fa0a5 Binary files /dev/null and b/headquarters/accounts/adding-users-to-workspaces/images/addtoworkspace.png differ diff --git a/headquarters/accounts/adding-users-to-workspaces/images/removefromworkspace.png b/headquarters/accounts/adding-users-to-workspaces/images/removefromworkspace.png new file mode 100644 index 00000000..925278d8 Binary files /dev/null and b/headquarters/accounts/adding-users-to-workspaces/images/removefromworkspace.png differ diff --git a/headquarters/accounts/adding-users-to-workspaces/index.html b/headquarters/accounts/adding-users-to-workspaces/index.html new file mode 100644 index 00000000..e9d139ac --- /dev/null +++ b/headquarters/accounts/adding-users-to-workspaces/index.html @@ -0,0 +1,41 @@ +Adding Users to Workspaces +

Adding Users to Workspaces

March 1, 2021

Some users (Headquarters, API users) may be granted access to more than 1 +workspace. This access is granted by the server administrator at the Server Administration –> User Management page.

To give access to a certain workspace, the administrator selects the user +account(s) from the list of all user accounts on the server, then selects +Add to Workspaces.

In the dialog window that appear, administrator should select the names +of the workspaces that the user should be granted access to, and confirm +the changes. As a result, the selected users are granted access to the +workspaces, which are selected in the dialog. Any other workspaces that +they had access to previously will be still accessible.

To remove access to a certain workspace, the administrator selects the +user account(s) from the list of all user accounts on the server, then +selects Remove from Workspaces.

In the dialog window that appear, administrator should select the names +of the workspaces that the user should be eliminated from, and confirm +the changes. As a result, the selected users are denied access to the +workspaces, which are selected in the dialog. Any other workspaces that +they had access to previously will be still accessible.

Alternatively, for a single user the administrator can access the account +profile in the server and select the workspaces tab.

The checkmarks in this dialog indicate the workspaces that the selected +user currently has access to. The administrator can add or remove access +to any workspaces by adding and removing the appropriate checkboxes. Any +such changes are applied immediately on pressing the Update button.

Note also that a user may be left without access to any workspace. In this +case when that user tries to log in, he or she will be denied access to the +system:

\ No newline at end of file diff --git a/headquarters/accounts/autolock/images/3state.png b/headquarters/accounts/autolock/images/3state.png new file mode 100644 index 00000000..ebec4020 Binary files /dev/null and b/headquarters/accounts/autolock/images/3state.png differ diff --git a/headquarters/accounts/autolock/images/hq_view.png b/headquarters/accounts/autolock/images/hq_view.png new file mode 100644 index 00000000..9374527e Binary files /dev/null and b/headquarters/accounts/autolock/images/hq_view.png differ diff --git a/headquarters/accounts/autolock/images/locked_account.png b/headquarters/accounts/autolock/images/locked_account.png new file mode 100644 index 00000000..edc42c02 Binary files /dev/null and b/headquarters/accounts/autolock/images/locked_account.png differ diff --git a/headquarters/accounts/autolock/images/locked_account_with_captcha.png b/headquarters/accounts/autolock/images/locked_account_with_captcha.png new file mode 100644 index 00000000..f4625bb7 Binary files /dev/null and b/headquarters/accounts/autolock/images/locked_account_with_captcha.png differ diff --git a/headquarters/accounts/autolock/images/unlock_button.png b/headquarters/accounts/autolock/images/unlock_button.png new file mode 100644 index 00000000..a1578141 Binary files /dev/null and b/headquarters/accounts/autolock/images/unlock_button.png differ diff --git a/headquarters/accounts/autolock/index.html b/headquarters/accounts/autolock/index.html new file mode 100644 index 00000000..f6ade09a --- /dev/null +++ b/headquarters/accounts/autolock/index.html @@ -0,0 +1,46 @@ +Autolock +

Autolock

June 23, 2021

To protect the safety of the data and prevent disruptions to the operations due +to hacker attacks, the system responds to attempts to guess a user’s password.

In the normal state, the user needs to enter just the login name and password to +access the system. If, however, she makes multiple attempts to log in with an +incorrect password, the system raises to the elevated state.

To log in in the elevated state the user needs to supply her login name, +password, and additionally solve a CAPTCHA challenge. +Read more about CAPTCHAs.

If the user enters multiple wrong combinations of user names and passwords in +the elevated state, the system passes to the locked state, where the user +with this name cannot log in for the predefined duration of time.

The parameters of this defensive strategy are:

  • the number of attempts before transition from normal to elevated state +is fixed at 5;

  • the number of attempts before transition from elevated to locked state +is defined in MaxFailedAccessAttemptsBeforeLockout parameter in the +Authentication section of appsettings.production.ini file;

  • duration of the locked state, as defined in the parameter LockoutDuration +in the following format d.hh:mm:ss, where:

    • d is days (assumed 0 if omitted);
    • hh two digits for hours (mandatory);
    • mm two digits for minutes (mandatory);
    • ss two digits for seconds (mandatory).

The exact values of these parameters are up to the security expert to determine.

Note that the counters of incorrect login attempts and locking are on the +per user basis. For example, if the accounts of users John and Mary are +locked, users Peter and Irene may still be able to log in.

Note also that when autolock gets activated, this doesn’t disable the user that +has already logged in.

System administrators should not rely solely on these CAPTCHA and autolock +features to ensure the safety of their data. They should use the time of the +automatic lockout to trace the IP addresses from which the attack is being +staged to disable further communication with them, and apply all other tools +available to them to prevent unauthorized access to the collected data.

Releasing the autolock by the administrators using the UI

The Survey Solutions administrator can release the autolock that has been +engaged from the user’s profile by pressing the UNLOCK button.

Administrator's view of the autolocked account.

The users in HQ role can see the status of the account, but can not remove +the autolock:
HQ-user's view of the autolocked account.


Releasing the autolock from console

To release the autolock that has already engaged before it expires automatically +requires OS-access to the server where Survey Solutions is installed. This +maintenance can be performed by the person who installed Survey Solutions.

We will need to run the command: releaselock with parameters +--username or --login. For example:

.\WB.UI.Headquarters.exe manage users releaselock --login loginName
+

You need to run this command while in the directory where the file +WB.UI.Headquarters.exe is located.

\ No newline at end of file diff --git a/headquarters/accounts/batch-user-upload/index.html b/headquarters/accounts/batch-user-upload/index.html new file mode 100644 index 00000000..7e840f83 --- /dev/null +++ b/headquarters/accounts/batch-user-upload/index.html @@ -0,0 +1,63 @@ +Batch User Upload +

Batch User Upload

April 29, 2021

Up to 10,000 user accounts can be created from a single tab-delimited +file, which must include the login, password, and role +of the user, and may include additional attributes, like email or +phone.

Batch creation of user accounts comes handy when:

  • the same accounts need to be replicated on a different server;
  • migrating from a different CAPI system with established accounts;
  • the survey is so huge that manual creation of accounts via a web +interface would take a significant amount of time.

Creating user accounts in batch mode is available to both the +administrator and the headquarter users. For new supervisor accounts the +role must be specified as Supervisor (case-sensitive). For +interviewer accounts the role must be specified as Interviewer +(case-sensitive), and in addition the login of the supervisor must be +specified, which determines the team where the interviewer account will +be added. Interviewers may be added to existing supervisors, or to new +supervisors mentioned anywhere in the users list.

To upload the list of users in batch mode select: Menu → +Teams and RolesBatch User Upload.

Survey Solutions will request a file with the user accounts to be created, +validate the uploaded file, and create the user accounts. If any problems or +inconsistencies are found in the uploaded file, they will be reported and +accounts not created.

Depending on the number of users and server performance this process may +take a few minutes.

File format

The file with user accounts to be created must be prepared as a tab-delimited +text file, with the first line listing the column names and subsequent lines +(up to 10,000) listing user accounts (one account per each line).

The column names (case-insensitive) are as following:

Column nameColumn meaning
Mandatory fields
LoginThe login name of the user to be created. Note that the +spelling (capitalization) of the user name will be retained in the reports and +selections in the HQ. Note also, that the specified login name for an account +may not be changed in the future (though the whole account may be locked).

The login name must be between 3 and 15 characters long, and may contain only +letters, digits and the underscore symbol. The letters must be from Latin +(English) alphabet only: 'A'..'Z' or 'a'..'z'. Other letters (Cyrillic, Arabic, +etc.) are not valid for usage in login names.
PasswordThe password to the user account. The password is +case-sensitive.

An account password must satisfy the following complexity requirements:
  • be at least 10 characters long, letters from non-Latin alphabets (Cyrillic, +Arabic, etc.) may be included in the password,
  • include at least one digit ('0'-'9'),
  • include at least one uppercase ('A'-'Z') letter,
  • include at least one lowercase ('a'-'z') letter.
RoleThe Survey Solutions user role assigned to the newly created +user account. It is one of the following words: Supervisor, +Interviewer. The spelling of the role is case-insensitive.
SupervisorThis value must only be specified for interviewer +accounts and denotes the login-name of the supervisor, to whose team this +interviewer account is added. The spelling of the supervisor's login-name +is case-insensitive.
Optional fields
FullnameReal full name of the user that receives this account.

Person's name must be no longer than 100 characters and may only consist of +letters, dots, spaces, and apostrophes.
EmailEmail address of the user that receives this account.

An email address must conform to the rules of email addresses. Invalid email +addresses may not be stored.
PhonenumberPhone number of the user that receives this account.

The phone number must be numeric and no longer than 15 digits.

Note that the fields login, password and role are mandatory, and +must be filled out for every user in the list. The supervisor field must +be specified for the interviewers’ accounts only.

Example file

Here is an example file, which creates a new team of supervisor +Heidy Jones, and adds two new interviewer accounts for +Mary Smith and John Smith to this team.

Do not use this file to create actual interviewer accounts as it shows the +passwords publicly in clear text.

Possible problems that may be reported

Survey Solutions will validate the uploaded list of the users report if +any problems are found:

  • empty required fields (login, password, role);
  • duplicate user accounts;
  • passwords not conforming to the security requirements (too short, +etc);
  • unknown supervisors (all interviewers created must become part of +the team of a supervisor known to the system);
  • and other checks as described in the fields’ descriptions above.
\ No newline at end of file diff --git a/headquarters/accounts/batch-user-upload/users.tab b/headquarters/accounts/batch-user-upload/users.tab new file mode 100644 index 00000000..eadc9902 --- /dev/null +++ b/headquarters/accounts/batch-user-upload/users.tab @@ -0,0 +1,4 @@ +login password role supervisor fullname email phonenumber +IntJohnSmith Secret989898 interviewer SupHeidyJones John Smith johnsmith@myorganization.org 12025554321 +IntMarySmith Secret887766 interviewer SupHeidyJones Mary Smith marysmith@myorganization.org 12025551234 +SupHeidyJones Secret323288 supervisor Heidy Jones heidyjones@myorganization.org \ No newline at end of file diff --git a/headquarters/accounts/captcha/images/captcha_default.png b/headquarters/accounts/captcha/images/captcha_default.png new file mode 100644 index 00000000..79107a33 Binary files /dev/null and b/headquarters/accounts/captcha/images/captcha_default.png differ diff --git a/headquarters/accounts/captcha/images/captcha_tractors.png b/headquarters/accounts/captcha/images/captcha_tractors.png new file mode 100644 index 00000000..f0fc89df Binary files /dev/null and b/headquarters/accounts/captcha/images/captcha_tractors.png differ diff --git a/headquarters/accounts/captcha/index.html b/headquarters/accounts/captcha/index.html new file mode 100644 index 00000000..eed636ac --- /dev/null +++ b/headquarters/accounts/captcha/index.html @@ -0,0 +1,35 @@ +CAPTCHA +

CAPTCHA

June 29, 2021

A brute-force attack +(aka BF-attack) is an attack on the system by probing of all possible +combinations of inputs to the login forms (user names, passwords, and any +other information there).

If a system is able to tell humans from computers apart, it can defend itself +from mechanical guesses.

A CAPTCHA is a challenge that humans +can solve easily, while computers have difficulties with. Thus a CAPTCHA +serves as an effective, (though not completely bullet-proof) mechanism for +protecting a system from brute-force attacks.

When a certain number of incorrect login attempts occur, the Survey Solutions +login form will start asking a CAPTCHA challenge:

The above shown CAPTCHA shows if the server administrator has configured +Survey Solutions to utilize Google’s captcha service. +If this service is not used, Survey Solutions will rely on its built in +CAPTCHA, which appears like the following:

If the user continues to enter incorrect combinations of login/password even +with the CAPTCHA, an autolock will +eventually engage.

\ No newline at end of file diff --git a/headquarters/accounts/deleting-accounts/images/archive.png b/headquarters/accounts/deleting-accounts/images/archive.png new file mode 100644 index 00000000..6e45199d Binary files /dev/null and b/headquarters/accounts/deleting-accounts/images/archive.png differ diff --git a/headquarters/accounts/deleting-accounts/index.html b/headquarters/accounts/deleting-accounts/index.html new file mode 100644 index 00000000..2144513e --- /dev/null +++ b/headquarters/accounts/deleting-accounts/index.html @@ -0,0 +1,24 @@ +Deleting accounts +

Deleting accounts

July 28, 2020

Deleting accounts

An account that is created in Survey Solutions can not be deleted. Ever. This is because the account is mentioned in the history of the events that were originated by that user (such as created or completed an interview).

Yet an account can be archived, which is the closest thing to deleting it.

This action is available to an administrator only, which can (1) select the interviewer account to be archived and (2) click the Archive button to perform the action:

Only interviewer and supervisors accounts may be archived. +A confirmation will be required to make sure you don’t disable an account by mistake.

An account that is archived:

  • may not be used to log in to the system through the web interface;
  • will not be accepted for synchronization;
  • will not be available as a selection in drop-down selections for responsible for interviews and assignments, and be similarly suppressed from other dialogs in the system which imply an active account;
  • any web interviews or web assignments for which the archived +interviewer was responsible will stay open and valid.

Accounts that are archived may be subsequently un-archived. To do this, as an administrator proceed to the interviewers page, select “Archived interviewers” instead of the default “Active interviewers” in the filter. Then select the account and click Unarchive.

The procedure for the supervisors is exactly the same. Take a note, then when a supervisor account is archived, all of its interviewers’ accounts are also archived.

\ No newline at end of file diff --git a/headquarters/accounts/headquarters/survey-solutions-server-observer/index.html b/headquarters/accounts/headquarters/survey-solutions-server-observer/index.html new file mode 100644 index 00000000..6d86e88b --- /dev/null +++ b/headquarters/accounts/headquarters/survey-solutions-server-observer/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-observer/ + \ No newline at end of file diff --git a/headquarters/accounts/index.html b/headquarters/accounts/index.html new file mode 100644 index 00000000..76966a9d --- /dev/null +++ b/headquarters/accounts/index.html @@ -0,0 +1,60 @@ +Managing User Accounts +

Managing User Accounts

Restricted user accounts

A user account can be set as restricted, which means the user holding such an account is restricted from changing its properties:

Survey Solutions Server Administrator

Every Survey Solutions server has an administrator. This is the first user +account created after Survey Solutions is installed, typically by the same +person who performed the installation.


Administrator is a privileged account and can do important actions which +may result in damage to data. Assign a responsible and informed person +as an administrator! We recommend that the administrator has attended a comprehensive +Survey Solutions training.

An administrator can do (almost) everything an HQ user can do plus some +exclusive actions:

May 17, 2023

Workspaces

Workspaces allow partitioning of a single server into multiple compartments that have limited impact on each other.

The following are the rules guiding the use and functioning of the workspaces:

  1. An administrator has access to all workspaces.
  2. A user with an HQ and observer accounts may belong to one, some, or all workspaces, as designated by the administrator.
  3. Each interviewer and supervisor account may log in to a single workspace.
  4. User names are unique across all workspaces.
  5. Questionnaires are imported into workspaces. Same questionnaire may be imported into different workspaces if necessary and their version numbering is independent.
  6. Workspaces may be created, disabled, and deleted.
  7. Disabling a workspace locks all activity in the workspace (stops web interviews, does not allow any user to log in). Users attempting to access a disabled workspace will receive a “Workspace Disabled” error page and must contact their survey coordinator for further instructions.
  8. A workspace may be deleted only if it doesn’t have any surveys/questionnaires.
  9. Deleting a workspace actually deletes (not archives) all the user accounts (interviewer/ supervisor) and all the maps that were part of that workspace.
  10. Deletion of a workspace is irreversible.
  11. Administrator configures each workspace settings separately (logo, global message, export password, email providers, etc).
  12. The troubleshooting tools available for administrator (audit log, device logs, tablet information packages, etc) are separated by workspaces.
  13. Users having access to multiple workspaces may switch between them using a workspace selector without the need to log in to each workspace separately.
  14. Reports are built based on the content of a single workspace.
  15. A special workspace named ‘primary’ is always defined and can not be disabled or deleted. Any server updated from earlier Survey Solutions versions will place all the earlier entered data (including survey data, user accounts, maps, etc) into the primary workspace.
  16. An observer may observe only in the workspaces in which he is permitted by the administrator, even if impersonating users that have access to other workspaces.
  17. Each workspace is assigned an identifier name and a text label display name. The text label is shown to the users when they switch between the workspaces, while the identifier is used for forming the URLs in API calls. See more in the Workspace attributes section below.

To manage workspaces, the menu item server administration (available for administrators only) now leads to the list of the workspaces defined on the server. The settings and troubleshooting tools collected in the context menu were previously relevant for the whole server, but now are attributable to a particular workspace. For each enabled workspace the following actions are provided in the workspace context menu:

May 10, 2022

Token-based authentication

Survey Solutions supports two methods of authentication for API queries: Basic (a combination of the login and password) and Bearer (using a system-generated token) also known as JSON Web Token (JWT).

Activation of the token-based authentication for the server

By default token-based authentication is switched off. To activate it, the server configuration file must be modified to include the following section:

[JwtBearer]
+Enabled=true
+SecretKey=[..............]
+

For the SecretKey specify any alphanumeric key of at least 16 digits/characters long. Save the settings file and restart the server.

February 9, 2022

CAPTCHA

A brute-force attack +(aka BF-attack) is an attack on the system by probing of all possible +combinations of inputs to the login forms (user names, passwords, and any +other information there).

If a system is able to tell humans from computers apart, it can defend itself +from mechanical guesses.

A CAPTCHA is a challenge that humans +can solve easily, while computers have difficulties with. Thus a CAPTCHA +serves as an effective, (though not completely bullet-proof) mechanism for +protecting a system from brute-force attacks.

June 29, 2021

Autolock

To protect the safety of the data and prevent disruptions to the operations due +to hacker attacks, the system responds to attempts to guess a user’s password.

In the normal state, the user needs to enter just the login name and password to +access the system. If, however, she makes multiple attempts to log in with an +incorrect password, the system raises to the elevated state.

June 23, 2021

Batch User Upload

Up to 10,000 user accounts can be created from a single tab-delimited +file, which must include the login, password, and role +of the user, and may include additional attributes, like email or +phone.

Batch creation of user accounts comes handy when:

  • the same accounts need to be replicated on a different server;
  • migrating from a different CAPI system with established accounts;
  • the survey is so huge that manual creation of accounts via a web +interface would take a significant amount of time.

Creating user accounts in batch mode is available to both the +administrator and the headquarter users. For new supervisor accounts the +role must be specified as Supervisor (case-sensitive). For +interviewer accounts the role must be specified as Interviewer +(case-sensitive), and in addition the login of the supervisor must be +specified, which determines the team where the interviewer account will +be added. Interviewers may be added to existing supervisors, or to new +supervisors mentioned anywhere in the users list.

April 29, 2021

Survey Solutions Account Types

Survey Solutions Data Server provides the following account types:

  • administrator - manages the server, creates workspaces, user accounts.
  • headquarters - starts surveys, creates assignments, conducts top-level quality review of interviews, exports data
  • supervisor - manages teams if interviewers, distributes work between interviewers, quality check of interviews;
  • interviewer - conducts interviews;
  • observer - observes operations on the server;
  • API user - user account for user-written extensions accessing the server.

The Survey Solutions Designer site account may not be used to log in to the data server.

March 30, 2021

Adding Users to Workspaces

Some users (Headquarters, API users) may be granted access to more than 1 +workspace. This access is granted by the server administrator at the Server Administration –> User Management page.

To give access to a certain workspace, the administrator selects the user +account(s) from the list of all user accounts on the server, then selects +Add to Workspaces.

In the dialog window that appear, administrator should select the names +of the workspaces that the user should be granted access to, and confirm +the changes. As a result, the selected users are granted access to the +workspaces, which are selected in the dialog. Any other workspaces that +they had access to previously will be still accessible.

March 1, 2021

Creating User Accounts

Management of the user accounts is performed from the Users page, which +is accessible for Headquarters or Administrator users by clicking the +Cog-wheel icon in the menu bar (Administration) and then selecting Users.

Creating accounts

To add a supervisor, we click the ADD USER button. We then need to fill out +the following form (the full name, contact email and phone number fields are optional):

July 28, 2020
\ No newline at end of file diff --git a/headquarters/accounts/page/1/index.html b/headquarters/accounts/page/1/index.html new file mode 100644 index 00000000..6d391ebd --- /dev/null +++ b/headquarters/accounts/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/ + \ No newline at end of file diff --git a/headquarters/accounts/page/2/index.html b/headquarters/accounts/page/2/index.html new file mode 100644 index 00000000..970e4659 --- /dev/null +++ b/headquarters/accounts/page/2/index.html @@ -0,0 +1,29 @@ +Managing User Accounts +

Managing User Accounts

Deleting accounts

Deleting accounts

An account that is created in Survey Solutions can not be deleted. Ever. This is because the account is mentioned in the history of the events that were originated by that user (such as created or completed an interview).

Yet an account can be archived, which is the closest thing to deleting it.

This action is available to an administrator only, which can (1) select the interviewer account to be archived and (2) click the Archive button to perform the action:

July 28, 2020

Two factor authentication (2FA) for user accounts

Setting up two factor authentication

  1. login to the server using your login and password;

  2. navigate to your account settings (for interviewers: +Interviewer profile –> Edit personal info);

  3. click the Two factor authentication tab;

  4. click the Setup authenticator button;

  1. You will be presented with the Configure authenticator app form showing a QR-code.
  1. Now take your Android, IOS or Windows phone or tablet and set up +any of the following applications: Google Authenticator, Microsoft +Authenticator, or another authenticator as designated by the survey +coordinator.

    May 13, 2020

Survey Solutions Server Observer

Observer is an optional account, kind of an HQ user with a limited +functionality, to passively monitor a survey. Observer accesses +information through impersonation, looking through the eyes of a +different user.

An observer can do:

  • Read individual interviews including any comments left;
  • See reports;
  • See lists of users and their profiles.

An observer can not do:

  • approve/reject interviews;
  • create/delete assignments.
  • any other change-state operations;
  • download data.

An observer account is created for a server, not for a survey! Hence +an observer user may monitor the activity in all surveys that are +running on the server.

October 6, 2017
\ No newline at end of file diff --git a/headquarters/accounts/restricted-account/index.html b/headquarters/accounts/restricted-account/index.html new file mode 100644 index 00000000..a3571c4f --- /dev/null +++ b/headquarters/accounts/restricted-account/index.html @@ -0,0 +1,26 @@ +Restricted user accounts +

Restricted user accounts

January 30, 2024

A user account can be set as restricted, which means the user holding such an account is restricted from changing its properties:

  • password, except the cases when the password is:

    • initially assigned by a user creating the account, or
    • subsequently reset by a different user or via the support tool;
  • two-factor authentification settings;

  • token authentication settings;

  • associated user details: full name, contact phone number, and email address.

When an account is restricted, the corresponding message “This account is restricted” can be seen by the user when she selects Manage account menu item.

The restriction is applicable to any user role and is given a priority over the “Enable profile editing” setting in the workspace settings.

User account can not be made restricted from the web-interface of the Survey Solutions software. To make an account restricted it must be mentioned in a specific setting of the application configuration file: appsettings.production.ini. In particular, a section titled AccountManagement must be added (if doesn’t exist already), and accounts that should be restricted must be enumerated there (starting with 0 and have no gaps in enumeration), like the following example shows:

[AccountManagement]
+restrictedUser:0="Headquarters1"
+restrictedUser:1="Supervisor1"
+

The settings file must be saved, and the changes will take effect after the next server restart.

Restricted users can still see the properties that they cannot change - full name, phone number, email address, presence of 2FA, but they cannot see the properties which are secret: the current password, account token, and the 2FA backup keys.

The support tool can be used to reset the password or 2FA of any user, regardless of whether the corresponding account was marked as restricted.

\ No newline at end of file diff --git a/headquarters/accounts/survey-solutions-server-administrator/index.html b/headquarters/accounts/survey-solutions-server-administrator/index.html new file mode 100644 index 00000000..39f3b039 --- /dev/null +++ b/headquarters/accounts/survey-solutions-server-administrator/index.html @@ -0,0 +1,76 @@ +Survey Solutions Server Administrator +

Survey Solutions Server Administrator

May 17, 2023

Every Survey Solutions server has an administrator. This is the first user +account created after Survey Solutions is installed, typically by the same +person who performed the installation.


Administrator is a privileged account and can do important actions which +may result in damage to data. Assign a responsible and informed person +as an administrator! We recommend that the administrator has attended a comprehensive +Survey Solutions training.

An administrator can do (almost) everything an HQ user can do plus some +exclusive actions:

  • create and manage workspaces;
  • create HQ +user accounts, +observer +user accounts and +API +user accounts (in addition to supervisors and interviewers as an HQ +user can do), change passwords for these users;
  • configure workspace-related settings:
  • set up a logo for the server and the tablets;
  • leave a message for all of the HQ users and supervisors;
  • password-protect downloadable data;
  • configure other workspace-related settings and permissions.
  • delete a survey +(questionnaire and all data);
  • unarchive a user;
  • inspect the server audit log.

Note that a server administrator may not be designated responsible for +assignments, while a headquarters user may be.

An administrator of the Survey Solutions data server must be familiar with the +following procedures:

Actions before the survey starts
  1. If the password has been received via email, log in and change the password:

    • make sure you select a strong password!
    • do not share the administrator password with anyone;
    • do not forget the administrator password and store securely with +important records, (but not in an open/visible place!);
    • do not mention the administrator password in emails;
    • do not use administrator account for day-to-day HQ operations.

    See more recommendations in the Password Best Practices.

  2. It is recommended to turn on the +two factor authentication (2FA) +for the administrator account.

  3. Check the admin server settings, +adjust the logo, global message, +bulk email providers, and other +parameters as necessary.

  4. Create accounts +for one or more headquarter users (including one for yourself).

  5. Log out from the administrator account. For your own safety do not +use administrative account for day-to-day operations. Use +administrative account exclusively to perform the tasks that HQ +users can’t perform, such as adjusting the server’s +admin settings or +deleting a survey.

  6. Do communicate the credentials for the accounts you create on your +server with the corresponding users (supervisors, interviewers, +etc). These users do not receive their credentials per email, even if an +email is specified at the time the user account is created.

Actions during the survey
  1. Monitor the functioning of the server. Analyze any crashes, faults, +overloads or abnormal behavior.
  2. Address user requests, such as password reset for HQ users, and other +tasks that can’t be performed by HQs.
  3. Collect and analyze user problem reports. Attempt to address them to +the extent possible. Refer the users to the corresponding sections +of the manuals and for non-described situations to the Survey Solutions users’ forum.
  4. Preserve the copies of the uploaded sample files and split-key +files.
  5. Periodically download, back up, and securely store the export data.
  6. Promptly respond to the notifications of the network administrator.
  7. Monitor the progress of the survey.
  8. Monitor and install the updates to the Survey Solutions software (!).
  9. Monitor and install updates to other software and OS installed on +the server to maintain safe and secure environment(!).

(!) requires access to the server’s operating system GUI or command line.

Actions after the end of the survey

At the end of your survey you need to secure the collected data, to avoid it being irreversibly lost. You may need to repeat the following actions for every workspace (if there are multiple workspaces set up on the server).

  1. Instruct the interviewers to stop conducting interviews, mark them +as completed.
  2. Synchronize all the interviews data from the tablets to the server. +Make sure that the synchronizations complete successfully. (If a +synchronization is finished with an error, the server may not have +received the data from the tablet!)
  3. Do the final approvals/rejections of the submitted interviews.
  4. In HQ proceed to the data export screen.
  5. Download ALL data in all formats (tab-delimited and Stata and SPSS). +Download data even in formats which you don’t immediately plan to +use.
  6. Repeat for every version of the questionnaire (if the questionnaire +was ever updated on the server).
  7. Repeat for other statuses (approved by headquarter, etc) as +necessary.
  8. If you collected any multimedia data (images, audio,..) you need to +download the binary files too. This can often be a lengthy download.
  9. Count the files and make sure you have downloaded all of them.
  10. Test every downloaded archive to make sure there is no data transfer +error.
  11. Open every archive and visually inspect downloaded files. Do not +delete the survey from the server if you notice any irregularities +in the downloaded data.
  12. Store your downloads on a secure media
  13. Immediately make a secondary backup copy of the downloads, +preferably on a non-eraseable media (CD/DVD).
  14. Clearly mark each backup copy. Indicate the user who created the +backup, date, survey name, and other information. If you are +uploading your backup to the file storage create an accompanying +readme file.
  15. Do not transform, convert, or otherwise process the data downloaded +from Survey Solutions server before securing the downloaded files.
  16. Review and save/print any reports you may need from the server. +Reports are not part of data export.
  17. Only delete a survey or dispose of the +server once you complete all the procedures in this list.
\ No newline at end of file diff --git a/headquarters/accounts/survey-solutions-server-observer/index.html b/headquarters/accounts/survey-solutions-server-observer/index.html new file mode 100644 index 00000000..9468bdca --- /dev/null +++ b/headquarters/accounts/survey-solutions-server-observer/index.html @@ -0,0 +1,31 @@ +Survey Solutions Server Observer +

Survey Solutions Server Observer

October 6, 2017

Observer is an optional account, kind of an HQ user with a limited +functionality, to passively monitor a survey. Observer accesses +information through impersonation, looking through the eyes of a +different user.

An observer can do:

  • Read individual interviews including any comments left;
  • See reports;
  • See lists of users and their profiles.

An observer can not do:

  • approve/reject interviews;
  • create/delete assignments.
  • any other change-state operations;
  • download data.

An observer account is created for a server, not for a survey! Hence +an observer user may monitor the activity in all surveys that are +running on the server.

An observer account can be +created +by a Survey Solutions server +administrator.

\ No newline at end of file diff --git a/headquarters/accounts/teams-and-roles-tab-creating-user-accounts-/index.html b/headquarters/accounts/teams-and-roles-tab-creating-user-accounts-/index.html new file mode 100644 index 00000000..ed96edbb --- /dev/null +++ b/headquarters/accounts/teams-and-roles-tab-creating-user-accounts-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/ + \ No newline at end of file diff --git a/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/images/user_create.png b/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/images/user_create.png new file mode 100644 index 00000000..72ae33b4 Binary files /dev/null and b/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/images/user_create.png differ diff --git a/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/images/users_management.png b/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/images/users_management.png new file mode 100644 index 00000000..0d765748 Binary files /dev/null and b/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/images/users_management.png differ diff --git a/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/index.html b/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/index.html new file mode 100644 index 00000000..f5033ef1 --- /dev/null +++ b/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/index.html @@ -0,0 +1,49 @@ +Creating User Accounts

Creating User Accounts

July 28, 2020

Management of the user accounts is performed from the Users page, which +is accessible for Headquarters or Administrator users by clicking the +Cog-wheel icon in the menu bar (Administration) and then selecting Users.

Creating accounts

To add a supervisor, we click the ADD USER button. We then need to fill out +the following form (the full name, contact email and phone number fields are optional):

Administrators can similarly create headquarters, +observer and API +accounts filling out exactly the same forms.

Survey Solutions does not utilize the contact information (specified in the +full name, contact email and phone number fields) to make automatic +notifications or robocalls. Instead this information is stored for convenience +of the survey managers (HQ and team supervisors) if they need to reach, for +example, a particular interviewer.

When creating interviewer accounts, one must additionally specify to +which team the interviewer is assigned by selecting the appropriate supervisor’s +name. Correspondingly, to create a team, first create the supervisor, then +the interviewers of the team, not other way around.

Attention:

An account can not be renamed. If you make a typo in the account name, you will need to create another one.

Note:

Interviewer accounts may not be created by supervisors, +but may be edited by their supervisors, see the next section.

Users in the role Administrator can create accounts in the following roles:

  • interviewer,
  • supervisor,
  • headquarters,
  • observers, and
  • API accounts.

Users in the role Headquarters can create accounts in the following roles:

  • interviewer, and
  • supervisor.

Uploading accounts.

Note:

The Users page also provides access to the batch user upload +feature via the UPLOAD USERS button. In +this case up to 10,000 user accounts can be created from a single +tab-delimited file that is prepared and uploaded to Survey Solutions data +server. To learn more about batch user upload, please refer to +this article.

Editing accounts.

To modify the details of an existing account, click on the +account’s username listed in the Name column of the corresponding +list (interviewers, supervisors, headquarters, etc). This will take you +to the user’s profile where you can:

  • update the name/email/phone associated with an account, or
  • change the password for the account, (available to administrator users only) or
  • change the two-factor authentication for an account (available to administrator users only) or
  • set/reset locks associated with the account (available to administrator users only).

Transferring interviewers

Interviewers may be transferred from one team to another by +a Headquarters or an administrator user. This operation is +not done in the interviewer’s profile, but on the list of +interviewers.

Note:

Interviewers may update their contact information if permitted +by the server administrator, see user profile settings in +admin settings.

Note on passwords:

For resetting the accounts’ password, see Password issues.

In addition to password protection, since version 20.05 of +Survey Solutions, any user may set up a 2-factor authentication for using the server accounts.

See also password best practices

Teams and Roles Menu

The Teams and Roles menu provides lists of supervisors and interviewers to +provide access to their profiles (for the supervisors only the list of +interviewers of their own team is accessible).

The Interviewers list shows the list of the interviewer accounts in the current workspace with their attributes:

  • Login name;
  • Full name;
  • Date the account was created;
  • Email address;
  • Date of last login;
  • Supervisor name (aka team name);
  • Interviewer App version;
  • Total traffic used.

The list of interviewers may be filtered by:

  • supervisor - to show the list of interviewers in a specific team (reporting to a specific supervisor within the current workspace);
  • common interivewer issue:
    • no issue,
    • never connected,
    • no assignments received,
    • never uploaded,
    • tablet reassigned,
    • old version,
    • less than 100MB free space.
  • archival status (active or archived).

The Supervisors list shows the list of the supervisor accounts in the current workspace with their attributes:

  • Login name;
  • Date the account was created;
  • Email address;
  • Archival status (no=active, yes=archived).

The supervisors list doesn’t have filters.

Both interviewers and supervisors lists provide a search functionality where the list is reduced to accounts mentioning a particular substring, which allows locating a particular account by login name when the list of the corresponding users is long to avoid navigation through multiple pages (each page shows up to 20 accounts only).

Lists of accounts with their attributes can be exported from these pages to a downloadable file in XLSX, CSV, or TAB formats by clicking the corresponding link in the page footer.

See also

\ No newline at end of file diff --git a/headquarters/accounts/token-based-authentication/images/api_tokens.png b/headquarters/accounts/token-based-authentication/images/api_tokens.png new file mode 100644 index 00000000..88a0b5f8 Binary files /dev/null and b/headquarters/accounts/token-based-authentication/images/api_tokens.png differ diff --git a/headquarters/accounts/token-based-authentication/images/api_tokens_enable.png b/headquarters/accounts/token-based-authentication/images/api_tokens_enable.png new file mode 100644 index 00000000..fb82c356 Binary files /dev/null and b/headquarters/accounts/token-based-authentication/images/api_tokens_enable.png differ diff --git a/headquarters/accounts/token-based-authentication/index.html b/headquarters/accounts/token-based-authentication/index.html new file mode 100644 index 00000000..c87d97de --- /dev/null +++ b/headquarters/accounts/token-based-authentication/index.html @@ -0,0 +1,29 @@ +Token-based authentication +

Token-based authentication

February 9, 2022

Survey Solutions supports two methods of authentication for API queries: Basic (a combination of the login and password) and Bearer (using a system-generated token) also known as JSON Web Token (JWT).

Activation of the token-based authentication for the server

By default token-based authentication is switched off. To activate it, the server configuration file must be modified to include the following section:

[JwtBearer]
+Enabled=true
+SecretKey=[..............]
+

For the SecretKey specify any alphanumeric key of at least 16 digits/characters long. Save the settings file and restart the server.

Activation of the token-based authentication for an account

After the restart it will be possible to enable token-based authentication for a particular account:

Once the ENABLE button is pressed, the software will generate a new token for this account and display it:

At this time copy the token that can be seen in this window to a secure file from which you can later consume it using your API queries. +If you disable token-based authentication and then re-enable it again, the software will generate a different access token and invalidate the earlier generated one.

Use of token-based authentication

To authenticate your queries, add the following to its HTTP-headers:

“Authorization: Bearer TOKEN”
+

For example, if using the Requests module in python, then write:

requests.get('url', headers={'Authorization: 'Bearer YOURTOKENVALUE'})
+

More information

Formal description of the JWT standard is given in RFC 7519. +An overview is available at https://jwt.io/introduction

\ No newline at end of file diff --git a/headquarters/accounts/two-factor-authentication/images/2fa-authenticator-code.png b/headquarters/accounts/two-factor-authentication/images/2fa-authenticator-code.png new file mode 100644 index 00000000..047d613e Binary files /dev/null and b/headquarters/accounts/two-factor-authentication/images/2fa-authenticator-code.png differ diff --git a/headquarters/accounts/two-factor-authentication/images/2fa-recovery-code.png b/headquarters/accounts/two-factor-authentication/images/2fa-recovery-code.png new file mode 100644 index 00000000..1c2e0683 Binary files /dev/null and b/headquarters/accounts/two-factor-authentication/images/2fa-recovery-code.png differ diff --git a/headquarters/accounts/two-factor-authentication/images/2fa.jpg b/headquarters/accounts/two-factor-authentication/images/2fa.jpg new file mode 100644 index 00000000..ad08c5a4 Binary files /dev/null and b/headquarters/accounts/two-factor-authentication/images/2fa.jpg differ diff --git a/headquarters/accounts/two-factor-authentication/images/2fa_setup1.png b/headquarters/accounts/two-factor-authentication/images/2fa_setup1.png new file mode 100644 index 00000000..b6b66b72 Binary files /dev/null and b/headquarters/accounts/two-factor-authentication/images/2fa_setup1.png differ diff --git a/headquarters/accounts/two-factor-authentication/images/2fa_setup2.png b/headquarters/accounts/two-factor-authentication/images/2fa_setup2.png new file mode 100644 index 00000000..359176f5 Binary files /dev/null and b/headquarters/accounts/two-factor-authentication/images/2fa_setup2.png differ diff --git a/headquarters/accounts/two-factor-authentication/images/2fa_setup3.png b/headquarters/accounts/two-factor-authentication/images/2fa_setup3.png new file mode 100644 index 00000000..d8c6a122 Binary files /dev/null and b/headquarters/accounts/two-factor-authentication/images/2fa_setup3.png differ diff --git a/headquarters/accounts/two-factor-authentication/index.html b/headquarters/accounts/two-factor-authentication/index.html new file mode 100644 index 00000000..d906c40d --- /dev/null +++ b/headquarters/accounts/two-factor-authentication/index.html @@ -0,0 +1,80 @@ +Two factor authentication (2FA) for user accounts +

Two factor authentication (2FA) for user accounts

May 13, 2020

Setting up two factor authentication

  1. login to the server using your login and password;

  2. navigate to your account settings (for interviewers: +Interviewer profile –> Edit personal info);

  3. click the Two factor authentication tab;

  4. click the Setup authenticator button;

  1. You will be presented with the Configure authenticator app form showing a QR-code.
  1. Now take your Android, IOS or Windows phone or tablet and set up +any of the following applications: Google Authenticator, Microsoft +Authenticator, or another authenticator as designated by the survey +coordinator.

  2. Scan the QR-code from step #5 with this app.

  3. The authenticator app will display a verification code. Enter +this code into the field Verification code in the Survey +Solutions form showing the QR-code.

  4. By entering the correct verification code you are activating the +two factor authentication. The program will display 10 single use +recovery codes that can be used to access your account if the +device that was set up with the authenticator app is lost, damaged, +stolen, or otherwise not accessible. Take a note of these codes and +store them in a secure location.

Accessing your account with two factor authentication

  1. Login to the server using your login and password;

  2. If the two factor authentication was set up correctly using the +above instructions, you will be then challenged to enter the +authenticator code - the code that is currently displayed in the +authenticator app installed on your mobile device.

  1. Once a correct code is entered, you will be taken to the default +page of the site corresponding to your user role.

  2. If you no longer have access to authentication codes generated +by the authenticator app, you may employ the single use recovery +code. To do this select the link log in with a recovery code.

  3. Enter the recovery code in the next form and mark it as used. Each +code may be used only once:

Generating additional recovery codes

At any time when two factor authentication has been set up and you +are logged in, you can request a new batch of 10 recovery codes to +be generated by clicking the Reset Recovery Codes button. The +previous (used and unused) recovery codes will no longer be acceptable.

Store the recovery codes in a safe place for emergency cases. Do not +store them on the same device where you’ve installed the authenticator +app.

When you’ve used 7 or more of the codes (when 3 or less remain +available) you will get a warning about this. At this time consider +generating a new batch of the recovery codes.

Resetting authenticator

Resetting authenticator allows to regenerate the private secret value +associated with the user account. As a consequence, any codes that +are generated by the authenticator app(s) that were earlier set up +with this account will no longer be valid, and these apps will need +to be re-configured again using the newly displayed QR-code.

If you chose to reset the authenticator, but do not enter the new +verification code, your account will be left without the two factor +authentication.

Resetting the authenticator does not disable the recovery codes. A +batch of new recovery codes may be generated if necessary using the +procedure outlined above.

Resetting two factor authentication

Any user that has his access lost because of the two factor +authentication must refer to a higher positioned user: interviewers +to supervisor, supervisor to headquarters, headquarters to admin. +That user will be able to turn off the two factor authentication or +reset it to be used with a different device.

If this reset is done remotely the QR-code may not be used, and the +user should enter into the Authenticator App the shared key that is +displayed directly above the QR-code.

The admin user that has lost the possibility to enter the site +because of the two factor authentication (e.g. the phone lost and +recovery codes exhausted) will need to directly access the server +to reset his two factor authentication settings.

Selecting authenticator app

You can use one or multiple authenticator apps for the same account, +for example, if you need to set up on Android and Windows phones. +The apps may be from different manufacturers as long as they conform +to the standard described here: +https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm

Some examples include:

Your organization may create its own application conforming to the +above mentioned algorithm to be independent of the vendors and +fully control the source code.


The authenticator app’s functionality depends on the accuracy +of the clock settings of the device on which it is installed.

To prevent unauthorized access to the authenticator app, make sure +that the mobile devices where it is used are locked with a PIN, +password, fingerprint or other similar technology.

Glossary

Authenticator code - the code displayed by the authenticator app;

Recovery code - one of a set of 10 single use codes generated for +the account to gain access to it when the mobile device with the +authenticator app is no longer accessible (lost, stolen, damaged, +etc).

Shared key - a string value generated by the Survey Solutions +application to initialize the authenticator app.

Verification code - the first authenticator code used to confirm +the correctness of the setup and verified by the Survey Solutions HQ.

\ No newline at end of file diff --git a/headquarters/accounts/workspaces/images/workspaces.png b/headquarters/accounts/workspaces/images/workspaces.png new file mode 100644 index 00000000..84ba75cd Binary files /dev/null and b/headquarters/accounts/workspaces/images/workspaces.png differ diff --git a/headquarters/accounts/workspaces/index.html b/headquarters/accounts/workspaces/index.html new file mode 100644 index 00000000..8d5e30b0 --- /dev/null +++ b/headquarters/accounts/workspaces/index.html @@ -0,0 +1,27 @@ +Workspaces +

Workspaces

May 10, 2022

Workspaces allow partitioning of a single server into multiple compartments that have limited impact on each other.

The following are the rules guiding the use and functioning of the workspaces:

  1. An administrator has access to all workspaces.
  2. A user with an HQ and observer accounts may belong to one, some, or all workspaces, as designated by the administrator.
  3. Each interviewer and supervisor account may log in to a single workspace.
  4. User names are unique across all workspaces.
  5. Questionnaires are imported into workspaces. Same questionnaire may be imported into different workspaces if necessary and their version numbering is independent.
  6. Workspaces may be created, disabled, and deleted.
  7. Disabling a workspace locks all activity in the workspace (stops web interviews, does not allow any user to log in). Users attempting to access a disabled workspace will receive a “Workspace Disabled” error page and must contact their survey coordinator for further instructions.
  8. A workspace may be deleted only if it doesn’t have any surveys/questionnaires.
  9. Deleting a workspace actually deletes (not archives) all the user accounts (interviewer/ supervisor) and all the maps that were part of that workspace.
  10. Deletion of a workspace is irreversible.
  11. Administrator configures each workspace settings separately (logo, global message, export password, email providers, etc).
  12. The troubleshooting tools available for administrator (audit log, device logs, tablet information packages, etc) are separated by workspaces.
  13. Users having access to multiple workspaces may switch between them using a workspace selector without the need to log in to each workspace separately.
  14. Reports are built based on the content of a single workspace.
  15. A special workspace named ‘primary’ is always defined and can not be disabled or deleted. Any server updated from earlier Survey Solutions versions will place all the earlier entered data (including survey data, user accounts, maps, etc) into the primary workspace.
  16. An observer may observe only in the workspaces in which he is permitted by the administrator, even if impersonating users that have access to other workspaces.
  17. Each workspace is assigned an identifier name and a text label display name. The text label is shown to the users when they switch between the workspaces, while the identifier is used for forming the URLs in API calls. See more in the Workspace attributes section below.

To manage workspaces, the menu item server administration (available for administrators only) now leads to the list of the workspaces defined on the server. The settings and troubleshooting tools collected in the context menu were previously relevant for the whole server, but now are attributable to a particular workspace. For each enabled workspace the following actions are provided in the workspace context menu:

  • Edit,
  • Settings,
  • Email providers,
  • Device logs,
  • Audit log,
  • Tablet information packages,
  • Disable*
  • Delete*

*) The actions to disable and delete a workspace do not apply to the primary workspace.

Disabled workspaces may only be turned back on or deleted, so their context menu is smaller:

  • Enable
  • Delete

List of users on the server

Users on the server are distinguished by the accounts and the full list of all +accounts on the server is available by accessing the Server administration –> +Users Management page.

The list supports filtering by workspace and role of the user, as well as +narrowing down the users to a particular group:

  • missing workspaces’ - users not assigned to any workspace.
  • with disabled workspaces only’ - users that don’t have access to any enabled workspace.
  • locked users’ - users with an account lock placed on them.
  • archived users’ - users that have been archived.

A search box allows to seek the list for a user with a particular account +name or a full name.

Workspace attributes

Every workspace has the following attributes:

  • name;
  • display name.

Workspace name attribute

The attribute name is an alphanumeric identifier of the workspace, a combination of digits 0..9 and small Latin letters a..z from 1 to 12 characters long. No spaces are permitted in the name of a workspace. The name is used to form the URLs to the resources located in this workspace (such as the links to the web-interviews, for example).

The name of each workspace must be distinct from the name of any other workspace on the server, and cannot be changed once the workspace is created.

Examples of the name attribute include: “lfs2024”, “census2025”, “monitoring”, “2026”. +Note that name may start with a digit or consist solely of digits (in contrast to variable names).

Reserved names: the system excludes some names as reserved. Users can create workspaces with any other names except the following: “account”, “administration”, “api”, “apidocs”, “graphql”, “metrics”, “users”.

Workspace display name attribute

The attribute display name is a human-readable title assigned to a workspace to be displayed wherever a choice must be made between multiple workspaces or to identify the currently selected workspace. It can be typed in any language and may include spaces (multiple words). It must be anywhere from 1 to 300 characters long. If it includes multiple whitespace characters sequentially, they will be replaced with a single space character.

NB: the system technically allows one to create two or more workspaces with the same display name, but this is not recommended in practice.

Examples of display name may be “Labour force survey”, “Перепис населення 2025”, “Price survey”, “The United States of America”.

The display name of a workspace can be changed after the workspace is created if necessary (click on the workspace name and select Edit from the context menu that appears).

Default workspace

When a new Survey Solutions server is created the first workspace is created automatically and is given name="primary" and display name="Default workspace". The workspace can be given a different display name if necessary, but the automatically created workspace with name primary may not be deleted or disabled.

If the Survey Solutions server is upgraded from a version before the workspaces were introduced (from version before v21.01) then all the previously arranged data (questionnaires, assignments, interviews, maps, etc) will be automatically placed into the Default workspace.

\ No newline at end of file diff --git a/headquarters/admin-settings/index.html b/headquarters/admin-settings/index.html new file mode 100644 index 00000000..4287497a --- /dev/null +++ b/headquarters/admin-settings/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/admin-settings/ + \ No newline at end of file diff --git a/headquarters/alternative-maps-for-servers-in-china/index.html b/headquarters/alternative-maps-for-servers-in-china/index.html new file mode 100644 index 00000000..7bea641a --- /dev/null +++ b/headquarters/alternative-maps-for-servers-in-china/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/alternative-maps-for-servers-in-china/ + \ No newline at end of file diff --git a/headquarters/api/api-for-data-export/index.html b/headquarters/api/api-for-data-export/index.html new file mode 100644 index 00000000..bf2f54b0 --- /dev/null +++ b/headquarters/api/api-for-data-export/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/api/survey-solutions-api/ + \ No newline at end of file diff --git a/headquarters/api/api-interactive-description/index.html b/headquarters/api/api-interactive-description/index.html new file mode 100644 index 00000000..b5254036 --- /dev/null +++ b/headquarters/api/api-interactive-description/index.html @@ -0,0 +1,23 @@ +API interactive description +
\ No newline at end of file diff --git a/headquarters/api/api-r-package/index.html b/headquarters/api/api-r-package/index.html new file mode 100644 index 00000000..0c9ab61b --- /dev/null +++ b/headquarters/api/api-r-package/index.html @@ -0,0 +1,312 @@ +API: R-package +

API: R-package

May 10, 2023

Introduction to the Survey Solutions API R-package

Why this package

The World Bank’s Computer Assisted Survey System (CASS) Survey Solutions is a powerful tool for high quality data collection and used in many statistical offices around the world. Besides the standard GUI, it also comes with a powerful REST API. For details see https://docs.mysurvey.solutions/

To further facilitate its integration in a fully automated workflow we have developed this R package, which covers almost all of the available API calls. With this vignette you get a first overview on the different functions, further vignettes are available on survey management, paradata analysis and shiny integration.

The package can be considered as being a API “bare bone”, as it implements the basic Survey Solutions API calls without substantial modification. However, this is not true for the data export function as well as for the +paradata. Modification was necessary to facilitate workflow integration. See the details in the corresponding documentation.

Please be aware, that this package makes heavy use of data.table, and this is also continued in this vignette. In case you are not familiar with it yet, you should probably have a look a this introduction.

API credentials

To use the API you first need to set-up the API user on your Survey Solutions server. See here for details. After this done, you can use the suso_set_key() function, to provide your credentials.

library(SurveySolutionsAPI)
+suso_clear_keys()
+suso_set_key("https://xxx.mysurvey.solutions", "xxxxxx", "xxxxxxx")
+suso_keys()
+#> $suso
+#> $suso$susoServer
+#> [1] "https://xxx.mysurvey.solutions"
+#> 
+#> $suso$susoUser
+#> [1] "xxxxxx"
+#> 
+#> $suso$susoPass
+#> [1] "xxxxxxx"
+#> 
+#> 
+#> attr(,"class")
+#> [1] "suso_api"
+

After this is done, there is no need to provide the credentials for every API call again. They are stored until the end of your current session. There is also a function to check if your credentials work.

suso_PwCheck()
+#> [1] "https://michael-wild-demo.mysurvey.solutions/primary/api/v1/supervisors?limit=200"
+#> Response [https://michael-wild-demo.mysurvey.solutions/primary/api/v1/supervisors?limit=200]
+#>   Date: 2023-02-16 17:24
+#>   Status: 200
+#>   Content-Type: application/json; charset=utf-8
+#>   Size: 482 B
+

In case no workspace is provided, this call (like all the other calls) will default to the primary workspace. However if a workspace is provided, then the check will be performed on the provided workspace.

suso_PwCheck(workspace = "test")
+#> [1] "https://michael-wild-demo.mysurvey.solutions/test/api/v1/supervisors?limit=200"
+#> Response [https://michael-wild-demo.mysurvey.solutions/test/api/v1/supervisors?limit=200]
+#>   Date: 2023-02-16 17:24
+#>   Status: 200
+#>   Content-Type: application/json; charset=utf-8
+#>   Size: 4.54 kB
+

It calls the supervisor API, and returns the response. If the return value is 200, then your connection and credentials are OK. For further information on API response status codes have a look here: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status.

Workspace Management

You can also manage your workspaces through the API. In particular, you can

  • request a list of all workspaces the API user has access to, as well as
  • create new workspaces
  • and assign users to a particular workspace.

However for the latter two operations you require ADMIN credentials. Standard API user credentials would not work.

To receive a list of workspaces to which the current API user has access to, you can just run:

ws <- suso_getWorkspace()
+print(head(ws))
+#>       Name       DisplayName DisabledAtUtc
+#> 1: primary Default Workspace            NA
+#> 2:    test              test            NA
+#> 3:   test2             test2            NA
+

To receive a list of all workspaces in the system (even those to which the current API user does not have access to) you can do the same, and use the ADMIN password:

ws <- suso_getWorkspace(apiUser = adminUser, apiPass = adminPass)
+#> Error in stopifnot(is.character(user), length(user) == 1): object 'adminUser' not found
+print(head(ws))
+#>       Name       DisplayName DisabledAtUtc
+#> 1: primary Default Workspace            NA
+#> 2:    test              test            NA
+#> 3:   test2             test2            NA
+

For the next two operations, the use of admin credentials is mandatory, they will not work with a standard API user. The first one of these two is the creation of a new workspace:

ws <- suso_createWorkspace(apiUser = adminUser, apiPass = adminPass, your_workspace = "test", new_workspace = "test11", displayName = "ExtraExtraWorkspace")
+#> Error in stopifnot(is.character(user), length(user) == 1): object 'adminUser' not found
+print(head(ws))
+#>       Name       DisplayName DisabledAtUtc
+#> 1: primary Default Workspace            NA
+#> 2:    test              test            NA
+#> 3:   test2             test2            NA
+

The return value from the function already tells you, that the new workspace has been successfully created, however to double check, you can also get the full list again:

ws <- suso_getWorkspace(apiUser = adminUser, apiPass = adminPass)
+#> Error in stopifnot(is.character(user), length(user) == 1): object 'adminUser' not found
+print(head(ws))
+#>       Name       DisplayName DisabledAtUtc
+#> 1: primary Default Workspace            NA
+#> 2:    test              test            NA
+#> 3:   test2             test2            NA
+

Finally you can also assign a new user to this workspace by using the suso_assignWorkspace function.

ws <- suso_assignWorkspace(your_workspace = "test", assign_workspace = "test11", apiUser = adminUser, apiPass = adminPass, uid = "34c2bc7b-ec33-473b-875b-dc06d269fced", sv_id = "34c2bc7b-ec33-473b-875b-dc06d269fced")
+#> Error in stopifnot(is.character(user), length(user) == 1): object 'adminUser' not found
+print(head(ws))
+#>       Name       DisplayName DisabledAtUtc
+#> 1: primary Default Workspace            NA
+#> 2:    test              test            NA
+#> 3:   test2             test2            NA
+

Further details on workspaces can be found in the dedicated vignette on user management.

User Management

These functions are particularly useful for survey management, and more details can be found in the corresponding vignette on survey management. Lets start with getting a list of all supervisors on the server.

sv <- suso_getSV(workspace = "test")
+print(head(sv))
+#>    IsLocked        CreationDate                               UserId   UserName
+#> 1:    FALSE 2023-02-07 17:33:40 00d21677-0331-4698-ae7b-908aeac14dd6 somesvuser
+#> 2:    FALSE 2023-02-04 19:05:10 ded27a4a-716d-4bf2-8d54-aedc31fc164b     SV0001
+#> 3:    FALSE 2023-02-04 19:36:03 5753ddde-3c7d-438f-9934-43fdf18fa802     SV0002
+#> 4:    FALSE 2023-02-04 19:36:03 72196c84-8f2f-488a-8d61-f23b8b998d43     SV0003
+#> 5:    FALSE 2023-02-04 19:36:03 1a9d4b10-c92d-401d-af69-2a7d0a391fe6     SV0004
+#> 6:    FALSE 2023-02-04 19:36:03 97e9e4ff-22e1-492f-a102-03c2115903e7     SV0005
+

Your will receive a list of supervisors currently active (not archived) on the server. If you take one of the supervisor’s id and use the suso_getINT function, you will receive all the interviewers in the team.

int <- suso_getINT(sv_id = sv[3, UserId], workspace = "test")
+print(int)
+#>    IsLocked        CreationDate                               UserId UserName
+#> 1:    FALSE 2023-02-04 19:36:03 14ee97f1-ae8d-44f5-8a30-4c3617f03002  INT0012
+#> 2:    FALSE 2023-02-04 19:36:03 4a1d5b37-2db1-448c-adc2-0a26379956fe  INT0013
+

To receive more information about a particular user, use the suso_getINT_info function:

intinfo <- suso_getINT_info(int_id = int[1, UserId], workspace = "test")
+print(intinfo)
+#>    SupervisorName                         SupervisorId IsLockedBySupervisor IsLockedByHeadquarters IsArchived                               UserId UserName        Role IsLocked
+#> 1:         SV0002 5753ddde-3c7d-438f-9934-43fdf18fa802                FALSE                  FALSE      FALSE 14ee97f1-ae8d-44f5-8a30-4c3617f03002  INT0012 Interviewer    FALSE
+#>           CreationDate      FullName
+#> 1: 2023-02-04 19:36:03 Ashlie Spinka
+

To get information about any particular user, you can also use the more general function suso_getUSR.

usrinfo_int <- suso_getUSR(uid = sv[3, UserId], workspace = "test")
+print(usrinfo_int)
+#>    IsArchived                               UserId UserName       Role IsLocked        CreationDate       FullName
+#> 1:      FALSE 5753ddde-3c7d-438f-9934-43fdf18fa802   SV0002 Supervisor    FALSE 2023-02-04 19:36:03 Isidro Dach II
+
+usrinfo_int <- suso_getUSR(uid = int[1, UserId], workspace = "test")
+print(usrinfo_int)
+#>    IsArchived                               UserId UserName        Role IsLocked        CreationDate      FullName
+#> 1:      FALSE 14ee97f1-ae8d-44f5-8a30-4c3617f03002  INT0012 Interviewer    FALSE 2023-02-04 19:36:03 Ashlie Spinka
+

Questionnaire

The basic questionnaire API calls are handled through the suso_getQuestDetails function.

If no input is provided, the function returns a list of all questionnaires on the server:

questlist <- suso_getQuestDetails(workspace = "test")
+# print(questlist)
+

Specifying operation.type = status, you receive a list of statuses.

statlist <- suso_getQuestDetails(operation.type = "statuses", workspace = "test")
+print(statlist)
+#>  [1] "Restored"               "Created"                "SupervisorAssigned"     "InterviewerAssigned"    "RejectedBySupervisor"   "ReadyForInterview"      "SentToCapi"            
+#>  [8] "Restarted"              "Completed"              "ApprovedBySupervisor"   "RejectedByHeadquarters" "ApprovedByHeadquarters" "Deleted"
+

By taking a particular QuestionnaireId and specifying the *operation.type *you can execute further requests. For example,

questionnaire <- suso_getQuestDetails(operation.type = "structure", workspace = "test", quid = questlist[1, QuestionnaireId], version = questlist[1, Version])
+questionnaire <- questionnaire[, .(VariableName, type, QuestionText, Featured, PublicKey)]
+#> Error in .(VariableName, type, QuestionText, Featured, PublicKey): could not find function "."
+questionnaire <- questionnaire[!is.na(QuestionText)]
+#> Error in eval(expr, envir, enclos): object 'QuestionText' not found
+head(questionnaire$q, 19L)
+#>                                   Id               LastEntryDate L0                  type                            PublicKey                  Title L1    VariableName QuestionScope
+#>  1: dee7705fd6114b129b972b8e5b80c4ea 2022-07-15T17:56:56.4811273  1                 Group c46ee895-0e6e-4063-8136-31e6bfa7c3f8                  COVER NA            <NA>            NA
+#>  2: dee7705fd6114b129b972b8e5b80c4ea 2022-07-15T17:56:56.4811273  2                 Group fdeaf889-ba80-89c5-6d60-8c1b1196ebe5               DWELLING NA            <NA>            NA
+#>  3: dee7705fd6114b129b972b8e5b80c4ea 2022-07-15T17:56:56.4811273  3                 Group 1f949736-beb1-dd10-6451-561b7799c99c RESULTS AND CONCLUSION NA            <NA>            NA
+#>  4:                             <NA>                        <NA>  1          TextQuestion 59e2b882-0b67-78cf-d08a-0760e98d5157                   <NA>  1             q01             0
+#>  5:                             <NA>                        <NA>  1          TextQuestion 95c9e53e-6603-a96e-0dee-ce0584076a16                   <NA>  2             q02             0
+#>  6:                             <NA>                        <NA>  1          TextQuestion 4af6c880-658a-b610-53fc-4a2bdd5cfe2c                   <NA>  3             q03             0
+#>  7:                             <NA>                        <NA>  1          TextQuestion 0dd2cbb5-1617-fb3b-1494-394ec4aceb4c                   <NA>  4             q04             0
+#>  8:                             <NA>                        <NA>  1          TextQuestion 4c20c6f7-ff1b-8884-3b7b-cb7c42f23396                   <NA>  5             q05             0
+#>  9:                             <NA>                        <NA>  1        SingleQuestion 3870444e-932a-676b-c109-7cb8b22e1520                   <NA>  6             q06             0
+#> 10:                             <NA>                        <NA>  1          TextQuestion 1f328d26-2264-f86a-bd62-9d69ed0e6010                   <NA>  7             q07             0
+#> 11:                             <NA>                        <NA>  1          TextQuestion 426d51a2-4ecb-9256-4074-2d711a8ff273                   <NA>  8             q08             0
+#> 12:                             <NA>                        <NA>  1          TextQuestion 60068eee-c5c6-738c-235d-d0d540bebf8a                   <NA>  9             q09             0
+#> 13:                             <NA>                        <NA>  1 GpsCoordinateQuestion 09024983-6bc6-9ad7-bdc7-cdb6864d1292                   <NA> 10             q10             0
+#> 14:                             <NA>                        <NA>  2            StaticText 4d34d956-8a7a-eb0b-a0e8-00a9648a6cc0                   <NA>  1                            NA
+#> 15:                             <NA>                        <NA>  2       NumericQuestion 1d4e607d-50fb-4d3e-20c6-b4a35a3f5bc8                   <NA>  2      northBound             3
+#> 16:                             <NA>                        <NA>  2       NumericQuestion 256085f2-2725-e8d2-2475-14e4a9c6cc62                   <NA>  3      southBound             3
+#> 17:                             <NA>                        <NA>  2       NumericQuestion 2ca4ef6b-46db-6f89-0527-98fb5605c6d3                   <NA>  4       eastBound             3
+#> 18:                             <NA>                        <NA>  2       NumericQuestion 0df2ac09-c7d2-e1d6-3b5c-0beadf69e218                   <NA>  5       westBound             3
+#> 19:                             <NA>                        <NA>  2       NumericQuestion fbbaad6d-c38e-8bf1-56e9-f325ff37d6ae                   <NA>  6 subCellsDivisor             3
+#>                                          QuestionText Featured L2     ..JSON  intID
+#>  1:                                              <NA>       NA NA <list[16]> 01NANA
+#>  2:                                              <NA>       NA NA <list[16]> 02NANA
+#>  3:                                              <NA>       NA NA <list[16]> 03NANA
+#>  4:                                       *1.Province     TRUE NA <list[17]> 0101NA
+#>  5:                                *2. Territory/City     TRUE NA <list[17]> 0102NA
+#>  6:                                   *3. Health zone     TRUE NA <list[17]> 0103NA
+#>  7:                                    4. Health area     TRUE NA <list[17]> 0104NA
+#>  8:                              *5. Grid cell number     TRUE NA <list[18]> 0105NA
+#>  9:                                6. Sub cell number     TRUE NA <list[19]> 0106NA
+#> 10: 7. Urban commune/ Rural commune/ Sector/ Chiefdom     TRUE NA <list[17]> 0107NA
+#> 11:                                       8. Grouping     TRUE NA <list[17]> 0108NA
+#> 12:                                9. Village/Quarter     TRUE NA <list[17]> 0109NA
+#> 13:             *10. GPS Coordinates of the Grid Cell     TRUE NA <list[17]> 0110NA
+#> 14:                                              <NA>       NA NA  <list[9]> 0201NA
+#> 15:                                 *~ North boundary    FALSE NA <list[20]> 0202NA
+#> 16:                                 *~ South boundary    FALSE NA <list[20]> 0203NA
+#> 17:                                  *~ East boundary    FALSE NA <list[20]> 0204NA
+#> 18:                                  *~ West boundary    FALSE NA <list[20]> 0205NA
+#> 19:                               *~ Sub-cell divider    FALSE NA <list[19]> 0206NA
+

Gives you a data.table which contains all the questions, question texts, etc. which you can use for further processing i.e to render a user manual with rmarkdown. Find details in the manual on questionnaire creation.

You can also get a list of all interviews done for the specific questionnaire.

interviews <- suso_getQuestDetails(operation.type = "interviews", workspace = "test", quid = questlist[1, QuestionnaireId], version = questlist[1, Version])
+interviews <- interviews[, .(InterviewId, AssignmentId, ResponsibleId, ErrorsCount, Status)]
+head(interviews, 20L)
+#>                              InterviewId AssignmentId                        ResponsibleId ErrorsCount               Status
+#>  1: 7d91c038-e258-4948-a7a2-566cda5b4dc5            1 3b0c6e09-d606-4914-9e20-2abc048d5bea           0 ApprovedBySupervisor
+#>  2: 343da912-5a9f-4875-821b-6f0e1440150b           48 a67d2b82-bf28-40cf-bd1a-7901225c0885           0 RejectedBySupervisor
+#>  3: a9620548-b1d8-418c-9c1f-a0d64031968a          234 3b0c6e09-d606-4914-9e20-2abc048d5bea           0 RejectedBySupervisor
+#>  4: 79202304-8ba6-4c87-b45a-3f56529fc6e4          235 366cb1f7-30fa-48bf-9b56-ffa4ec8b0861           0 RejectedBySupervisor
+#>  5: 7d04a07e-5c99-44f6-974f-531d8ed5a560          239 366cb1f7-30fa-48bf-9b56-ffa4ec8b0861           0  InterviewerAssigned
+#>  6: ea10292e-7ac6-4fa3-bf82-d4d24fee98ba            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           0            Completed
+#>  7: 1d9305db-2be3-44d6-baf2-cf560a9ff45d            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           0            Completed
+#>  8: 782d1652-c6f5-4d02-882e-e372e97dfa83            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           0            Completed
+#>  9: 8621b894-43bd-4e4e-bfa3-0e67cdf5abb8            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           0            Completed
+#> 10: beeb70f4-ea94-4eb7-af5c-bc15abcfa9ed            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           0            Completed
+#> 11: 90badf8a-199a-4247-94a9-51a14bf308fa            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           1            Completed
+#> 12: d63ced87-589b-4316-8e8f-e247c4779877            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           1            Completed
+#> 13: 43045bd2-325c-4649-81b3-4f1841048034            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           1            Completed
+#> 14: 1054b136-c94f-4851-b8c2-ca4e003f4358            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           1            Completed
+#> 15: a43b0480-8fdb-4d43-b6fe-29420bf8eb71            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           0            Completed
+#> 16: 2f829f02-c844-439b-88a2-326b98412204            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           1            Completed
+#> 17: 0dc4f8a1-d740-440f-bdc6-2e34df997d00            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           1            Completed
+#> 18: ccc03ee9-1974-4356-98f0-648e0395e932            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           1            Completed
+#> 19: a02bd8fa-e048-43f2-88ad-f5e43c2cc67b            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           1            Completed
+#> 20: 605afedd-19e6-4941-b51c-b12d885274eb            1 a67d2b82-bf28-40cf-bd1a-7901225c0885           1            Completed
+

Quick statistics –> Attention: this call is currently returning a 500 error, the Survey Solutions team is working on it.

To monitor variables of interest, you can use the suso_get_stats function.

# statquest<-suso_get_stats(questID = questlist[1, QuestionnaireId], workspace = 'test', version = questlist[1, Version], qQuest = questionnaire[19, PublicKey]) print(statquest)
+

Full data export

To export the data collected in Survey Solutions, you use suso_export.

#> The last file has been created 0.06833 hours ago.
+#> FileName: assignment__actions 
+#> Nesting Level: 0 
+#> ****
+#> 
+#> FileName: households 
+#> Nesting Level: 1 
+#> ****
+#> 
+#> FileName: interview__actions 
+#> Nesting Level: 0 
+#> ****
+#> 
+#> FileName: interview__diagnostics 
+#> Nesting Level: 0 
+#> ****
+#> 
+#> FileName: interview__errors 
+#> Nesting Level: 0 
+#> ****
+

Its return value is a list with the following elememts: main, R1, R2, R3, with

  • main containing the files: interview__comments, kasai_listing1
  • R1 containing all rosters at the first level
  • R2 containing all rosters at the second level
  • R3 containing all rosters at the third level

through the harmonized ID, main and rosterfiles can easily be put together. More on this in the specific vignette.

Paradata

To retrieve the paradata for a particular interview you use suso_export_paradata

system.time(para1 <- suso_export_paradata(questID = questlist[1, QuestionnaireId], workspace = "test", version = questlist[1, Version], reloadTimeDiff = 24, onlyActiveEvents = F, allResponses = T))
+#> 
+#> The last file has been created 1 hours ago.
+#> 
+#> Starting download & file extraction. 
+#> 
+#> 
+#> Calculating Response Timings.
+#> 
+#> Extracting GPS variable.
+#> Processing: 
+#> 	AnswerSet
+#> 
+#> 	AnswerRemoved
+#> 
+#> 	ApproveByHeadquarter
+#> 
+#> 	Restarted
+#> 
+#> 	Reject
+#> 
+#> 	QuestionDeclaredInvalid
+#> 
+#> 	QuestionDeclaredValid
+#> 
+#> Export & Transformation finished.
+#>    user  system elapsed 
+#>   0.536   0.036   0.820
+

This will return a list of data.tables, separated by events. Please bear in mind, that paradata files can be fairly big, and processing it may require a large working memory. To decrease the load there are also 3 parameters you can change, these are:

  • onlyActiveEvents, if TRUE it processes only the active events initiated by users.
  • allResponses, if FALSE, does not process all response values, nevertheless they are still included in a single column. Otherwise, they are separated by column.

Running the same call again without passive events and without all responses processed, reduces processing time significantly.

system.time(para2 <- suso_export_paradata(questID = questlist[1, QuestionnaireId], workspace = "test", version = questlist[1, Version], reloadTimeDiff = 24, onlyActiveEvents = T, allResponses = F))
+#> 
+#> The last file has been created 1 hours ago.
+#> 
+#> Starting download & file extraction. 
+#> 
+#> 
+#> Calculating Response Timings.
+#> 
+#> Extracting GPS variable.
+#> Processing: 
+#> 	AnswerSet
+#> 
+#> 	AnswerRemoved
+#> 
+#> 	ApproveByHeadquarter
+#> 
+#> 	Restarted
+#> 
+#> 	Reject
+#> 
+#> Export & Transformation finished.
+#>    user  system elapsed 
+#>   0.524   0.028   0.818
+

As you see from the system timings, changing these parameters reduces processing time significantly. More details on how to work with paradata can be found in the corresponding vignette. The paradata export is returned as a list, with the following elements:

  • full data: KeyAssigned, Completed, AnswerSet, AnswerRemoved, Restarted, Reject, QuestionDeclaredInvalid, QuestionDeclaredValid, actionDistr, userDistr, roleDistr
  • reduced data: KeyAssigned, Completed, AnswerSet, AnswerRemoved, Restarted, Reject, actionDistr, userDistr, roleDistr

There are also tables already included in the file, like:

para2[["userDistr"]]
+#>    responsible count
+#> 1:               918
+#> 2:        int1   804
+

which gives the distribution of events by user, or:

para2[["actionDistr"]]
+#>                      action count
+#>  1:   QuestionDeclaredValid   747
+#>  2:               AnswerSet   646
+#>  3:             VariableSet   129
+#>  4:                 Resumed    25
+#>  5:                  Paused    25
+#>  6:     TranslationSwitched    23
+#>  7:             KeyAssigned    17
+#>  8:        InterviewCreated    17
+#>  9:      SupervisorAssigned    17
+#> 10:    InterviewModeChanged    17
+#> 11:     InterviewerAssigned    17
+#> 12:               Completed    17
+#> 13:    ReceivedBySupervisor    16
+#> 14: QuestionDeclaredInvalid     9
+

which gives the distribution by event type.

Map management

Since recently, it is now also possible, to handle maps through the API. This is implemented through the lately introduced GraphQL API.

To upload a map, you can just use the suso_mapupload function like this:

suso_mapupload(workspace = "test", path_to_zip = mapPath)
+#>    xMaxVal yMaxVal xMinVal yMinVal wkid             fileName  size maxScale minScale shapeType       importDateUtc                           uploadedBy     users
+#> 1:  -78.39    26.8  -78.62   26.55 4326 checkshapesimple.shp 20467        0        0   Polygon 2023-02-16 17:24:47 961d073f-f316-4353-9e7e-1f00899cb837 <list[0]>
+

To assign a map you can use the suso_mapassign function:

suso_mapassign(workspace = "test", fileName = "checkshapesimple.shp", userName = "INT0004")
+#>                fileName    user shapeType       importDateUtc
+#> 1: checkshapesimple.shp INT0004   Polygon 2023-02-16 17:24:47
+

And to check the current maps on the server, and to whom they are assigned, you can use:

suso_mapinfo(workspace = "test")
+#>                  fileName maxScale minScale shapeType shapesCount    size       importDateUtc                           uploadedBy userName   xMaxVal     yMaxVal   xMinVal
+#> 1: seg_Lat14701Lon379.shp        0        0   Polygon           4    1558 2023-01-26 16:07:54 25628149-1164-4405-b2a2-41a114700215  INT0004 171407.96 5229062.505 171313.10
+#> 2: seg_Lat14701Lon379.shp        0        0   Polygon           4    1558 2023-01-26 16:07:54 25628149-1164-4405-b2a2-41a114700215  INT0005 171407.96 5229062.505 171313.10
+#> 3: seg_Lat14703Lon375.shp        0        0   Polygon           4    1558 2023-01-26 16:07:55 25628149-1164-4405-b2a2-41a114700215     <NA> 165982.27 5231732.606 165887.31
+#> 4: seg_Lat14706Lon376.shp        0        0   Polygon           4    1558 2023-01-26 16:07:55 25628149-1164-4405-b2a2-41a114700215     <NA> 166739.20 5236147.192 166644.21
+#> 5:   checkshapesimple.shp        0        0   Polygon           1   20467 2023-02-16 17:24:47 961d073f-f316-4353-9e7e-1f00899cb837  INT0004    -78.39      26.798    -78.62
+#> 6:  Lat9260Lon650_ALL.tif        0        0      <NA>          NA 8658427 2023-02-15 22:16:05 25628149-1164-4405-b2a2-41a114700215     <NA>     22.37      -6.681     22.36
+#> 7:  Lat9263Lon605_ALL.tif        0        0      <NA>          NA 8643131 2023-02-15 22:16:06 25628149-1164-4405-b2a2-41a114700215     <NA>     21.96      -6.654     21.95
+#> 8:  Lat9263Lon686_ALL.tif        0        0      <NA>          NA 8663511 2023-02-15 22:16:07 25628149-1164-4405-b2a2-41a114700215     <NA>     22.69      -6.652     22.68
+#> 9:  Lat9264Lon625_ALL.tif        0        0      <NA>          NA 2165023 2023-02-15 22:16:07 25628149-1164-4405-b2a2-41a114700215     <NA>     22.14      -6.645     22.13
+#>        yMinVal wkid
+#> 1: 5228935.260 4326
+#> 2: 5228935.260 4326
+#> 3: 5231605.274 4326
+#> 4: 5236019.808 4326
+#> 5:      26.546 4326
+#> 6:      -6.690 4326
+#> 7:      -6.663 4326
+#> 8:      -6.662 4326
+#> 9:      -6.654 4326
+

We hope that gave you a short overview on the available functions. For more details on how to use the output, please read the specific vignettes.

\ No newline at end of file diff --git a/headquarters/api/dot-net-package/index.html b/headquarters/api/dot-net-package/index.html new file mode 100644 index 00000000..1d79950d --- /dev/null +++ b/headquarters/api/dot-net-package/index.html @@ -0,0 +1,60 @@ +API: .NET package +

API: .NET package

March 5, 2021

Introduction to the Survey Solutions .NET API Client package

There is a client library aviable to be used in .NET runtime to execute API methods of Survey Solutions software. In order to get started install dotnet SDK. +After done that you will be able to use included in SDK CLI to create a new project, execute the following command:

dotnet new console
+

This will create a sample console application. To add Survey solutions client library execute following command:

dotnet add package SurveySolutionsClient
+

Now open Program.cs file and replace contents with the following:

using System;
+using System.Net.Http;
+using System.Threading.Tasks;
+using SurveySolutionsClient;
+using SurveySolutionsClient.Apis;
+using SurveySolutionsClient.Models;
+
+namespace sample
+{
+    class Program
+    {
+        static async Task Main(string[] args)
+        {
+            // API user login and password. If you need to execute action
+            // from the name of interviewer, supervisor or headquarters its possible to provide those also
+            Credentials creds = new Credentials("csapidemo", "");
+
+            // Url of the Survey Solutions 
+            string surveySolutionsUrl = "https://demo.mysurvey.solutions";
+
+            var surveySolutionsApiConfiguration = new SurveySolutionsApiConfiguration(creds, surveySolutionsUrl,
+                workSpace: null // If API user is created within workspace provide its name here
+            );
+            var client = new SurveySolutionsApi(new HttpClient(), surveySolutionsApiConfiguration);
+
+            // Get list of created assignments
+            var assignmentsList = await client.Assignments.ListAsync(new AssignmentsListFilter());
+
+            foreach(var a in assignmentsList.Assignments)
+            {
+                Console.WriteLine("Loaded assignment with id =" + a.Id);
+            }
+        }
+    }
+}
+

In order to execute console application the following command can be used:

dotnet run
+

It print ids of assignments that are created on a targeted server. To get more examples on usage of api methods you can find in related repository

\ No newline at end of file diff --git a/headquarters/api/index.html b/headquarters/api/index.html new file mode 100644 index 00000000..2ba7dfb2 --- /dev/null +++ b/headquarters/api/index.html @@ -0,0 +1,95 @@ +Application Programming Interface (API) +

Application Programming Interface (API)

API: R-package

Introduction to the Survey Solutions API R-package

Why this package

The World Bank’s Computer Assisted Survey System (CASS) Survey Solutions is a powerful tool for high quality data collection and used in many statistical offices around the world. Besides the standard GUI, it also comes with a powerful REST API. For details see https://docs.mysurvey.solutions/

To further facilitate its integration in a fully automated workflow we have developed this R package, which covers almost all of the available API calls. With this vignette you get a first overview on the different functions, further vignettes are available on survey management, paradata analysis and shiny integration.

May 10, 2023

Survey Solutions API

Survey Solutions includes a powerful and flexible API which allows +automating some tasks and allows our users to build larger systems, +which may compliment Survey Solutions to achieve larger goals. 

Some examples of use could be:

  • schedule periodic export of collected data
  • an external dashboard or monitoring and reporting system, which +updates some indicators every night and publishes them to a website, +or
  • an external checking and validation system which verifies collected +data against some external sources of information and rejects +automatically the incorrect interviews, or
  • an integrated system, which utilizes Survey Solutions for data +collections tasks and a statistical package for continuous analysis,
  • facility management, inventory and price monitoring systems, etc, +etc.

It is up to our users to decide on the particular scenario of use taking +into account their needs and existing legacy systems already in place. +The integration mode is usually dictated by the external system, which +may determine, for example, in which language the system is implemented +or to which storage the data is transferred from Survey Solutions.

May 1, 2022

API: .NET package

Introduction to the Survey Solutions .NET API Client package

There is a client library aviable to be used in .NET runtime to execute API methods of Survey Solutions software. In order to get started install dotnet SDK. +After done that you will be able to use included in SDK CLI to create a new project, execute the following command:

dotnet new console
+
+            March 5, 2021
+        
+ +
+

+ API interactive description +

+

The following page contains an interactive description of the Survey Solutions API for the current release: +https://demo.mysurvey.solutions/apidocs

+

If your server’s version is different, check its API at: +https://SERVERNAME.mysurvey.solutions/apidocs

+ January 23, 2021 +
+ +
+

+ API: Powershell Module +

+

SSAW PowerShell module contains cmdlets wrapping Survey Solutions API to abstract away from some of the HTTP details. +As PowerShell command-line shell is already present and all Windows machines, users can start automating their interaction +with Survey Solutions application without any additional software development. PowerShell can be installed on Mac and Linux +computers as well, but you may prefer to use the Python client insted.

+ +
+
+
+
+ + + + + + + + + + + + + + diff --git a/headquarters/api/page/1/index.html b/headquarters/api/page/1/index.html new file mode 100644 index 00000000..fe26eb3b --- /dev/null +++ b/headquarters/api/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/api/ + \ No newline at end of file diff --git a/headquarters/api/ps-module/index.html b/headquarters/api/ps-module/index.html new file mode 100644 index 00000000..f18940ec --- /dev/null +++ b/headquarters/api/ps-module/index.html @@ -0,0 +1,83 @@ +API: Powershell Module +

API: Powershell Module

January 22, 2021

SSAW PowerShell module contains cmdlets wrapping Survey Solutions API to abstract away from some of the HTTP details. +As PowerShell command-line shell is already present and all Windows machines, users can start automating their interaction +with Survey Solutions application without any additional software development. PowerShell can be installed on Mac and Linux +computers as well, but you may prefer to use the Python client insted.

Installation

Open PowerShell shell and type:

PS> Install-Module -Name SSAW
+

Configure Server Connection

PS> $conf = Get-SSAWConfiguration
+PS> conf['BaseUrl'] = 'https://demo.mysurvey.solutions'
+PS> $conf['Username'] = 'api_user'
+PS> $conf['Password'] = 'password' # not an actual password!
+

Start interacting with the server

get list of questionnaires:

PS> Get-SSAWQuestionnaires
+
+Questionnaires : {@{QuestionnaireIdentity=a98a849d7b9d4346912a3b98267985a4$1; QuestionnaireId=a98a849d-7b9d-4346-912a-3b98267985a4; Version=1;
+                 Title=Klimalez2020;Variable=Q; LastEntryDate=6/17/2020 7:02:54 AM; IsAudioRecordingEnabled=False; WebModeEnabled=False},
+                 @{QuestionnaireIdentity=e9d38a7fa4be45a48ced2589970641f4$1; QuestionnaireId=e9d38a7f-a4be-45a4-8ced-2589970641f4; Version=1;
+                 Title=Maps; Variable=mp; LastEntryDate=6/18/2020 11:25:47 PM; IsAudioRecordingEnabled=False; WebModeEnabled=False},
+                 @{QuestionnaireIdentity=656da88508ee43bcb90f93d8866fe76d$1;QuestionnaireId=656da885-08ee-43bc-b90f-93d8866fe76d; Version=1;
+                 Title=PROJET ALICE; Variable=PROJET_ALICE; LastEntryDate=6/21/2020 12:20:12 PM;IsAudioRecordingEnabled=False; WebModeEnabled=True},
+                 @{QuestionnaireIdentity=a98a849d7b9d4346912a3b98267985a4$2;QuestionnaireId=a98a849d-7b9d-4346-912a-3b98267985a4; Version=2;
+                 Title=Klimalez2020; Variable=Q; LastEntryDate=6/17/2020 7:02:54 AM; IsAudioRecordingEnabled=False; WebModeEnabled=False}}
+Order          : 
+Limit          : 10
+TotalCount     : 761
+Offset         : 1
+

get list of assignments:

PS> Get-Assignments
+
+Assignments : {@{Id=23072; ResponsibleId=4264d1ec-6597-4287-8708-ec3cc3a1bd23; ResponsibleName=Team03;
+              QuestionnaireId=4ce37b21bdfc440baae03353b61c4a11$1; InterviewsCount=0; Quantity=1; Archived=False; CreatedAtUtc=1/22/2021 10:16:06 PM;
+              UpdatedAtUtc=1/22/2021 10:18:24 PM; Email=; Password=; WebMode=False; ReceivedByTabletAtUtc=; IsAudioRecordingEnabled=False},
+              @{Id=23073; ResponsibleId=4264d1ec-6597-4287-8708-ec3cc3a1bd23; ResponsibleName=Team03;
+              QuestionnaireId=4ce37b21bdfc440baae03353b61c4a11$1; InterviewsCount=0; Quantity=1; Archived=False; CreatedAtUtc=1/22/2021 10:16:06 PM;
+              UpdatedAtUtc=1/22/2021 10:18:24 PM; Email=; Password=; WebMode=False; ReceivedByTabletAtUtc=; IsAudioRecordingEnabled=False}}
+Order       : 
+Limit       : 20
+TotalCount  : 19766
+Offset      : 1
+

get list of export jobs for specific questionnaire and version

PS> Get-SSAWExportJobs -QuestionnaireIdentity 'a98a849d7b9d4346912a3b98267985a4$1'
+
+JobId           : 202720
+ExportStatus    : Completed
+StartDate       : 1/22/2021 11:19:33 PM
+CompleteDate    : 1/22/2021 11:19:34 PM
+Progress        : 100
+ETA             : 
+Error           : 
+Links           : @{Cancel=; Download=https://demo.mysurvey.solutions/api/v2/export/202720/file}
+HasExportFile   : True
+ExportType      : STATA
+QuestionnaireId : a98a849d7b9d4346912a3b98267985a4$1
+InterviewStatus : All
+From            : 
+To              : 
+AccessToken     : 
+RefreshToken    : 
+StorageType     : 
+TranslationId   : 
+IncludeMeta     : 
+

download export archive

PS> Get-SSAWExportFile -Id 202720
+
+LastWriteTime : 1/22/2021 6:33:52 PM
+Length        : 1022502
+Name          : Q_1_STATA_All.zip
+

start new export job, wait for it to finish and download archive

PS> $job = Initialize-SSAWExportJob -QuestionnaireId 'a98a849d7b9d4346912a3b98267985a4$1' -ExportType "SPSS" -InterviewStatus "All"
+PS> Start-SSAWExportJob $job -Wait | Get-SSAWExportFile
+
\ No newline at end of file diff --git a/headquarters/api/survey-solutions-api/images/ms-dot-net-logo.png b/headquarters/api/survey-solutions-api/images/ms-dot-net-logo.png new file mode 100644 index 00000000..e3879fd6 Binary files /dev/null and b/headquarters/api/survey-solutions-api/images/ms-dot-net-logo.png differ diff --git a/headquarters/api/survey-solutions-api/images/s16_72.png b/headquarters/api/survey-solutions-api/images/s16_72.png new file mode 100644 index 00000000..0fedcb6f Binary files /dev/null and b/headquarters/api/survey-solutions-api/images/s16_72.png differ diff --git a/headquarters/api/survey-solutions-api/index.html b/headquarters/api/survey-solutions-api/index.html new file mode 100644 index 00000000..9f518e4e --- /dev/null +++ b/headquarters/api/survey-solutions-api/index.html @@ -0,0 +1,42 @@ +Survey Solutions API +

Survey Solutions API

May 1, 2022

Survey Solutions includes a powerful and flexible API which allows +automating some tasks and allows our users to build larger systems, +which may compliment Survey Solutions to achieve larger goals. 

Some examples of use could be:

  • schedule periodic export of collected data
  • an external dashboard or monitoring and reporting system, which +updates some indicators every night and publishes them to a website, +or
  • an external checking and validation system which verifies collected +data against some external sources of information and rejects +automatically the incorrect interviews, or
  • an integrated system, which utilizes Survey Solutions for data +collections tasks and a statistical package for continuous analysis,
  • facility management, inventory and price monitoring systems, etc, +etc.

It is up to our users to decide on the particular scenario of use taking +into account their needs and existing legacy systems already in place. +The integration mode is usually dictated by the external system, which +may determine, for example, in which language the system is implemented +or to which storage the data is transferred from Survey Solutions.

To utilize an API in your application an API user account must be +created by the server administrator.

What Survey Solutions is making available to external +applications/systems is a set of levers, which allow performing the same +tasks performed by the actual users of the software. This functionality +is implemented through a set of standardized web requests which are implemented following the REST and GraphQL standards and are +documented in the following:

Every Survey Solutions server provides an API. It is important to verify +the reference against the exact version contained in your server to make +sure the correct syntax for API calls is being used. This syntax may be +expanded or revised in future releases.

API Clients

The API clients listed below provide convenient access to the API functionality for developers in the corresponding environments/languages.

API Client
Source code
Manual
More info

.NET package
Maintained by: Andrii Kozhyn

Source code
more

PowerShell module
Maintained by: Zurab Sajaia

Source code
more

Python package
Maintained by: Zurab Sajaia

Source code
online documentation

R package
Maintained by: Michael Wild

Source code
more

R package
Maintained by: Arthur Shaw

Source code
online documentation

R package
Maintained by: Lena Nguyen

Source code

Stata package
Maintained by: Sergiy Radyakin

Source code

Manual in PDF

Users of other languages can develop their applications by calling the API points directly, or by developing own API client for their specific programming language. If you do so, please share a notice in the users’ forum.

\ No newline at end of file diff --git a/headquarters/audio-audit/index.html b/headquarters/audio-audit/index.html new file mode 100644 index 00000000..e1a8c2a1 --- /dev/null +++ b/headquarters/audio-audit/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/audio-audit/ + \ No newline at end of file diff --git a/headquarters/batch-user-upload/index.html b/headquarters/batch-user-upload/index.html new file mode 100644 index 00000000..1d9ec012 --- /dev/null +++ b/headquarters/batch-user-upload/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/batch-user-upload/ + \ No newline at end of file diff --git a/headquarters/cawi/customize-web-interview-messages/images/866690.png b/headquarters/cawi/customize-web-interview-messages/images/866690.png new file mode 100644 index 00000000..972504e0 Binary files /dev/null and b/headquarters/cawi/customize-web-interview-messages/images/866690.png differ diff --git a/headquarters/cawi/customize-web-interview-messages/index.html b/headquarters/cawi/customize-web-interview-messages/index.html new file mode 100644 index 00000000..34e7c808 --- /dev/null +++ b/headquarters/cawi/customize-web-interview-messages/index.html @@ -0,0 +1,28 @@ +Customize web interview messages +

Customize web interview messages

April 2, 2018

Web interviews conducted with Survey Solutions contain reasonable +default messages suitable for many surveys. But if the default messages +are not suitable for a certain purpose, they can be customized in the +web survey setup dialog at the Survey Solutions Headquarters:

Editing custom text messages for web interviews

For every parameter select if you wish to display a built-in default +message, or a custom one, and if so, provide your custom (formatted) +text of such a message. You can use the formatting toolbar provided in +the editor to adjust the font color and font attributes, include +numbered and bullet lists, and include hyperlinks.

\ No newline at end of file diff --git a/headquarters/cawi/email-providers-amazon-ses/images/amazonses-screenshot.png b/headquarters/cawi/email-providers-amazon-ses/images/amazonses-screenshot.png new file mode 100644 index 00000000..d36a0223 Binary files /dev/null and b/headquarters/cawi/email-providers-amazon-ses/images/amazonses-screenshot.png differ diff --git a/headquarters/cawi/email-providers-amazon-ses/index.html b/headquarters/cawi/email-providers-amazon-ses/index.html new file mode 100644 index 00000000..f3ff20d7 --- /dev/null +++ b/headquarters/cawi/email-providers-amazon-ses/index.html @@ -0,0 +1,60 @@ +Configuring Amazon SES as an email service provider +

Configuring Amazon SES as an email service provider

May 24, 2021

Amazon provides a number of services (free and paid) that may +be of interest to the application developer. Here we are specifically +interested in utilizing the Simple Email Service (SES) from within Survey +Solutions for mass email sending.

Usage of this service may cost you money. +Make sure you understand all charges, limits and policies before +utilizing this service.

Amazon Simple Email Service is available at the following address: +https://aws.amazon.com/ses

If you are already an Amazon AWS user, you can login to your +Management Console right away. Otherwise you will need to create +a new AWS account.

A valid credit card is required to create this account. Amazon plans +and regulations determine when, how and how much you will be charged +for these services. The below instructions are applicable to personal +accounts. Your organization may have a corporate or other kind of +account with preferential treatment, different billing arrangements, +or simplified configuration process.

Once a new account is created login to the Management Console. +Select ServicesCustomer EngagementSES.

Verify the address that you will be using for sending out the messages. +This is done by clicking the link that you receive from +the Amazon Web Services no-reply-aws@amazon.com.

Next, utilize the Add user wizard to create a new user and assign this +user appropriate permissions, group membership and policies.

Once the user is created, proceed to Security Credentials and Create +Access Key. You will be issued an Access Key and you will obtain the +Secret as a downloadable file. You have only one chance to preserve +this pair (though you can issue another Key + Secret pair later).

In the email service provider dialog of the Survey Solutions you will +need to enter these SES-specific items:

  • Access Key;
  • Secret Access Key;
  • Region.

If you’ve just created your AWS account it is likely in the sandbox mode +and it will only permit you to send the notifications to the emails that +you yourself have confirmed. To reach real survey respondents you will need +to Request Increased Sending Limits, where you submit (to Amazon) the +information about your intents.

Note that when you fill out the Survey Solutions email provider settings, you +need to specify the region, with exactly the same value as selected when setting +uo your SES account, for example, “US East (Northern Virginia)" aka +us-east-1.

On the basis of the information you provide you will be assigned various +limits on number of emails that may be sent per second, per 24-hour period +and per month. Depending on the limit, email requests above those limits +may cost more or be disregarded.

The approval of the request is not instantaneous, and may take days. Plan +your operations accordingly.

The above process may sound confusing at first, but numerous tutorials +online from Amazon and other sites explain more details of this process. +See for example: +SES pricing: https://aws.amazon.com/ses/pricing/

A simple tutorial from Amazon: +https://aws.amazon.com/getting-started/tutorials/send-an-email/

More in-depth explanation of how this works: +https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-email.html

Read users’ feedback about the service or submit your own here: +https://www.g2crowd.com/products/amazon-simple-email-service-amazon-ses/reviews

\ No newline at end of file diff --git a/headquarters/cawi/email-providers-sendgrid/images/sendgrid-screenshot.png b/headquarters/cawi/email-providers-sendgrid/images/sendgrid-screenshot.png new file mode 100644 index 00000000..9d685a50 Binary files /dev/null and b/headquarters/cawi/email-providers-sendgrid/images/sendgrid-screenshot.png differ diff --git a/headquarters/cawi/email-providers-sendgrid/index.html b/headquarters/cawi/email-providers-sendgrid/index.html new file mode 100644 index 00000000..09451977 --- /dev/null +++ b/headquarters/cawi/email-providers-sendgrid/index.html @@ -0,0 +1,38 @@ +Configuring Sendgrid as an email service provider +

Configuring Sendgrid as an email service provider

March 31, 2019

SendGrid is a bulk email service provider that can be used in Survey +Solutions for delivering invitations for CAWI surveys as an alternative +to Amazon SES: +https://sendgrid.com/

Usage of this service may cost you money. +Make sure you understand all charges, limits and policies before +utilizing this service.

SendGrid reqires you to have a domain and confirm yourself +as a domain owner. The sending address must belong to this +domain. For example, if you want to send emails from name@site.com +you must confirm yourself as the owner of the site.com.

SendGrid offers a number of pricing and usage plans: +https://sendgrid.com/pricing/

You will need to confirm the account by clicking the link in the email +that the service will send you.

Start by going to https://sendgrid.com page and picking your plan, and +filling out the account properties as requested by the service. Once +confirmed you can login to your account, click API keys, and create a +(named) API key. The API key is exactly what Survey Solutions is +expecting from you to be entered in the Email Provider Settings dialog. +The API key will only be displayed once, you can delete an existing and +create a new API key at any time.

\ No newline at end of file diff --git a/headquarters/cawi/email-providers-smtp/images/smtp-screenshot.png b/headquarters/cawi/email-providers-smtp/images/smtp-screenshot.png new file mode 100644 index 00000000..699bee31 Binary files /dev/null and b/headquarters/cawi/email-providers-smtp/images/smtp-screenshot.png differ diff --git a/headquarters/cawi/email-providers-smtp/index.html b/headquarters/cawi/email-providers-smtp/index.html new file mode 100644 index 00000000..8a690066 --- /dev/null +++ b/headquarters/cawi/email-providers-smtp/index.html @@ -0,0 +1,21 @@ +Configuring SMTP server as an email service provider +

Configuring SMTP server as an email service provider

July 29, 2024

Servers providing Simple Mail Transfer Protocol (SMTP) service can be used to send out messages from Survey Solutions. The technical description for the SMTP has passed several revisions and users may refer to e.g. RFC 8314 for details.

The settings specific to using SMTP are described below, while the other settings common to other service providers are described in the article Bulk email service providers.

Host - the address of the server (may also be referred to as the SMTP server, or outgoing mail server, etc. in your provider’s documentation).

Port - the port number that the host monitors to receive message submissions.

Use TLS encryption - flag whether Transport Layer Security (TLS) must be used to encrypt the data transmitted between this server and the SMTP host.

Use authentication - flag indicating whether the identity of the sender must be confirmed to the SMTP server using the username and password specified below.

Username - user name passed to the SMTP host to establish the identity of the sender (this field is only accessible when use authentication checkbox is checked).

Password - password used to confirm the identity of the specified user (this field is only accessible when use authentication checkbox is checked).

SAVE - press the SAVE button to preserve the changes you’ve made to these settings. If you leave the page without saving the changes, they do not take effect.

The SMTP server may be set up as part of your organization, or can be provided by a third-party, in which case the corresponding information (host, port, username, password) will be provided by that party. In general, use of TLS is recommended, and authentication with name and password is mandatory for most cases when the server is accessible from the Internet, (though corporate servers may utilize another access control mechanism).

Please take note that:

  • it is common for SMTP servers to have quotas implemented for the amount of submissions for each account, and sending may be disabled if the number of requests is above the permitted rate. Survey Solutions is not aware of such rate controls.

  • your server or network may impose restrictions on the connections to certain ports and you may need to clear/whitelist them so that Survey Solutions may send out the messages (or else it may not be able to reach the SMTP server and establish a connection).

Sending a test email

Once you save the settings of the SMTP server, check that everything is working fine by sending a test email to yourself (any email account for which you can check the incoming mail) by typing that address in the Send test email dialog that appears below. If you don’t receive the test message within a few minutes (and you’ve checked your spam folder or its equivalent), that is usually indicative of some of the settings specified incorrectly, or the SMTP-server being not reachable or not functioning.

\ No newline at end of file diff --git a/headquarters/cawi/email-providers/index.html b/headquarters/cawi/email-providers/index.html new file mode 100644 index 00000000..74cf6ee7 --- /dev/null +++ b/headquarters/cawi/email-providers/index.html @@ -0,0 +1,46 @@ +Bulk email service providers +

Bulk email service providers

August 6, 2024

Bulk email service providers solve the task of sending out a +massive amount of emails. Survey Solutions may utilize such a +service provider to deliver email invitations for CAWI surveys +to the respondents. At the moment the following providers are supported:

  • Amazon SES;
  • Twilio SendGrid;
  • Other senders that support Simple Mail Transfer Protocol (SMTP).

You don’t have to use the above services to conduct a CAWI +survey, but in that case (just as it was in versions prior +to 19.04) it will be your responsibility to deliver the links +for the interviews to individual respondents. The use of the +bulk email service providers streamlines this process.

Use of the bulk email service +providers may (and likely will) cost you money. It is important +to familiarize yourself with the pricing, plans, charges and +limits as applicable for the specific provider. These conditions +may be changed by the provider, possibly even without prior notice. +Pricing and billing conditions may depend on whether the user is a private user +or an organization. All of the billing for this service occurs between you and +the corresponding provider, the Survey Solutions developers +are not charging you for this service.

The configuration of the Bulk Email Service provider occurs at +the corresponding page (accessible to the administrator only) +of the Survey Solutions Headquarters, +which contains service-specific access parameters, and at the +management console of the corresponding service.

The following parameters must be specified regardless of which +service you plan to use for sending out the emails:

  • Sender email address - Email address of the sender that will appear in the FROM field of the incoming messages.
  • Reply address - Email address where the replies from the invitees may be sent (default is the sender email address.)
  • Sender name - Name of the sender that will appear in the FROM field of the incoming messages.
  • Sender postal address - Current postal address of the sender.

The following articles will help you in configuring and entering +the parameters specific to service providers:

Once you configure the service, be sure to send a test email to make sure that +everything is setup correctly.

Be forewarned that the emails delivered through the bulk senders +may have non-trivial chances of being classified as spam by +various email services used by the recipients (Gmail, Yahoo, Hotmail, Outlook, etc).

Different providers may be configured for different workspaces, but each +workspace may be configured with no more than one provider at any time.

\ No newline at end of file diff --git a/headquarters/cawi/email-templates/index.html b/headquarters/cawi/email-templates/index.html new file mode 100644 index 00000000..f907bab9 --- /dev/null +++ b/headquarters/cawi/email-templates/index.html @@ -0,0 +1,86 @@ +Email Templates +

Email Templates

November 26, 2020

Survey Solutions can send email notifications to the respondents to the web +surveys (CAWI). These notifications can be configured at the web interview +setup page: MenuSurvey SetupQuestionnaires → +YourQuestionnaireWeb interview setup.

Survey Solutions server automatically determines, which notifications need to be +sent out to the respondents. Every hour the notifications of the type marked +with ^ in the table below are sent out, if a +bulk email service provider has been set +up.

Notification emails may mention some of the text substitutions, which will be +replaced with appropriate texts by Survey Solutions. They are mentioned in the +descriptions below.

Notification messageMessage description
Invitation

An invitation message is sent to invite a respondent to participate in the +survey. It contains a link that the respondent will follow to start an +interview.

The invitation message may mention %SURVEYNAME%, which will be automatically +replaced with the name of the survey.

The invitation message is sent out when the HQ chooses to Send invitations. +(Click on the survey, select Send invitations from the context menu).

If the bulk email service provider is not set, the links to web interviews +can be downloaded in a form of a file from the Survey Solutions server, and +custom invitations generated and send in an external system.

Resume

A resume message is sent to the respondents to deliver a message +containing a link that the respondent will follow to resume an +interview if his/her session is disrupted for any reason.

The message may mention %SURVEYNAME%, which will be automatically +replaced with the name of the survey.

The resume message is sent out when the respondent specifies his/her email and +a bulk email sender is configured, and the admin of the Survey Solutions +server opts to allow such messages by setting the Web Interview Email +Notifications flag in the server settings.

No response^

A no response message is sent to the respondents if they haven't started +a survey interview. This reminder message is sent after a certain period of +time after the invitation was sent out if the respondent hasn't started the +interview yet. The exact duration of time for the reminder is regulated by the +Send reminder to people with no response parameter at the web +interview setup page.

The message may mention %SURVEYNAME%, which will be automatically +replaced with the name of the survey.

The message is sent automatically if the bulk email sender has been +configured.

Partial response^

This notification message is sent to the respondents that have started +but haven't completed a survey interview yet after a certain period of +time. The exact duration of time for the reminder is regulated by the +Send reminder to people with a partial response parameter at the web +interview setup page.

The message may mention %SURVEYNAME%, which will be automatically +replaced with the name of the survey.

The message is sent automatically if the bulk email sender has been +configured.

Reject^

This notification message is sent to the respondents whos interviews have +been rejected by survey supervisors. The respondent is invited to make +corrections based on the supervisor's comments/feedback.

The message may mention %SURVEYNAME%, which will be automatically +replaced with the name of the survey.

The message is sent automatically if the bulk email sender has been +configured.

Complete

This notification message is sent to the respondents who has completed +an interview immediately when they complete it.

The message may mention %SURVEYNAME%, which will be automatically +replaced with the name of the survey. It may also mention in %-% signs any +variable name from the main interview level (not inside of any roster) of a type +supported in text substitutions, such as for example, %address% the value of which will +be automatically substituted with a value entered by the respondent in the +interview. For the categorical single select questions the default survey +language is used for the text label corresponding to the selected answer +regardless which language was used by the respondent at the time of the +interview. The date and timestamp answers are written using an invariant date +format.

In the rare occasion when a question with variable name specifically +SURVEYNAME is defined in an interview, the text substitution %SURVEYNAME% is +resolved to the name of the survey, not the value of this variable.

Optionally, the variable name may be suffixed with :barcode or +:qrcode, such as for example: %product:barcode% or %checksum:qrcode%. +Then the value of the corresponding variable will be rendered as a barcode or +a qrcode respectively. For linear barcodes the +code 128 standard is used. +For 2-dimensional qrcodes the QR-code standard is used.

The message is sent automatically on completion of an interview if the bulk +email sender has been configured and the flag Send email after web +interview completion has been set. Otherwise it is not sent.

Optionally, a transcript of answers to interview questions can +be attached to this message if the flag Attach Pdf transcript is set.


The templates for each survey can be specified in only one language. If +invitations/notifications for a survey need to be sent out in different +languages, such survey must be split into two (or more) Survey Solutions surveys +and email templates for them configured separately.

Notification message structure

Each notification message consists of multiple blocks:

Message blockBlock description
- SubjectThis is the email subject line that the respondent will see in his/her inbox +when the notification message arrives.
- Main textThis is the notification's message main text that the respondent will see +when he/she opens the notification message.
- Description for passwordBlock describing to the participant that a password must be used to access +the interview. This block is only utilized if the access to interview is +protected with a password.
- Start interview buttonSpecific text appearing on the button to start the interview.
\ No newline at end of file diff --git a/headquarters/cawi/index.html b/headquarters/cawi/index.html new file mode 100644 index 00000000..df95d3c1 --- /dev/null +++ b/headquarters/cawi/index.html @@ -0,0 +1,79 @@ +Computer Assisted Web Interviewing (CAWI) +

Computer Assisted Web Interviewing (CAWI)

Bulk email service providers

Bulk email service providers solve the task of sending out a +massive amount of emails. Survey Solutions may utilize such a +service provider to deliver email invitations for CAWI surveys +to the respondents. At the moment the following providers are supported:

  • Amazon SES;
  • Twilio SendGrid;
  • Other senders that support Simple Mail Transfer Protocol (SMTP).

You don’t have to use the above services to conduct a CAWI +survey, but in that case (just as it was in versions prior +to 19.04) it will be your responsibility to deliver the links +for the interviews to individual respondents. The use of the +bulk email service providers streamlines this process.

August 6, 2024

Configuring SMTP server as an email service provider

Servers providing Simple Mail Transfer Protocol (SMTP) service can be used to send out messages from Survey Solutions. The technical description for the SMTP has passed several revisions and users may refer to e.g. RFC 8314 for details.

The settings specific to using SMTP are described below, while the other settings common to other service providers are described in the article Bulk email service providers.

July 29, 2024

Configuring Amazon SES as an email service provider

Amazon provides a number of services (free and paid) that may +be of interest to the application developer. Here we are specifically +interested in utilizing the Simple Email Service (SES) from within Survey +Solutions for mass email sending.

Usage of this service may cost you money. +Make sure you understand all charges, limits and policies before +utilizing this service.

Amazon Simple Email Service is available at the following address: +https://aws.amazon.com/ses

May 24, 2021

Webpage Templates

Survey Solutions presents several web pages to the respondents to the web +surveys (CAWI). These pages may need to be customized at the web interview +setup page: MenuSurvey SetupQuestionnaires → +YourQuestionnaireWeb interview setup.

Changes made to these templates take immediate effect: any new page of the +corresponding type will be shown using the most recently saved template.

Web pageDescription
Welcome page

This page is shown to the respondent opening the link to a web interview.

The content of this page will usually contain description of the survey, +its purposes and objectives, motivation for participation, and other +descriptives/instructions.

The page consists of three user-editable elements:

  • title,
  • description, and
  • the text on +the button to start a new interview.

Survey coordinator may apply formatting to the description part of this +web page.

Resume Page

A resume page is shown to the respondents when they resume an +interrupted interview (started, but not completed).

The page consists of three user-editable elements:

  • title,
  • description, and
  • the text on +the button to resume the interview.

Survey coordinator may apply formatting to the description part of this +web page.

The description may mention %QUESTIONNAIRE%, which will be automatically +replaced with the name of the survey.

Complete

Provides a possibility to customize texts utilized at the +system-generated Complete page of a web-interview.

The page consists of two user-editable elements:

  • Note for supervisor, and
  • Complete.

Survey coordinator may not apply formatting in any of the elements of this +web page.

Finish page

Provides a possibility to customize texts utilized at the +page displayed after a web-interview is completed.

The page consists of two user-editable elements:

  • title, and
  • description.

Survey coordinator may apply formatting to the description part of this +web page.

Text formatting

Where formatting is supported it is entered using the following toolbar:

November 26, 2020

Email Templates

Survey Solutions can send email notifications to the respondents to the web +surveys (CAWI). These notifications can be configured at the web interview +setup page: MenuSurvey SetupQuestionnaires → +YourQuestionnaireWeb interview setup.

Survey Solutions server automatically determines, which notifications need to be +sent out to the respondents. Every hour the notifications of the type marked +with ^ in the table below are sent out, if a +bulk email service provider has been set +up.

November 26, 2020

Web Interviewing

In addition to CAPI surveys on Android tablets, Survey Solutions +provides two distinct possibilities:

  • Interviewing: Interviewers conduct interviews using the +web interface (without a tablet);
  • Self-enumeration: Respondents fill out interviews in the browser.

The difference is essential:

  • In the first case the person filling out the interview is a known +member of the team, has an account created in the system, assigned +to a team of a certain supervisor and so on. We use this mode when +e.g. we set up a call centre and our interviewers don’t physically +travel to the respondent, so don’t need a mobile device (tablet) +or to work offline (disconnected), but collect multiple interviews +and report to a certain supervisor;

    October 30, 2020

Configuring Sendgrid as an email service provider

SendGrid is a bulk email service provider that can be used in Survey +Solutions for delivering invitations for CAWI surveys as an alternative +to Amazon SES: +https://sendgrid.com/

Usage of this service may cost you money. +Make sure you understand all charges, limits and policies before +utilizing this service.

SendGrid reqires you to have a domain and confirm yourself +as a domain owner. The sending address must belong to this +domain. For example, if you want to send emails from name@site.com +you must confirm yourself as the owner of the site.com.

March 31, 2019

Customize web interview messages

Web interviews conducted with Survey Solutions contain reasonable +default messages suitable for many surveys. But if the default messages +are not suitable for a certain purpose, they can be customized in the +web survey setup dialog at the Survey Solutions Headquarters:

Editing custom text messages for web interviews

For every parameter select if you wish to display a built-in default +message, or a custom one, and if so, provide your custom (formatted) +text of such a message. You can use the formatting toolbar provided in +the editor to adjust the font color and font attributes, include +numbered and bullet lists, and include hyperlinks.

April 2, 2018
\ No newline at end of file diff --git a/headquarters/cawi/page/1/index.html b/headquarters/cawi/page/1/index.html new file mode 100644 index 00000000..5d8c2f19 --- /dev/null +++ b/headquarters/cawi/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/cawi/ + \ No newline at end of file diff --git a/headquarters/cawi/web-interviewing/images/self-enumeration.jpg b/headquarters/cawi/web-interviewing/images/self-enumeration.jpg new file mode 100644 index 00000000..611aa360 Binary files /dev/null and b/headquarters/cawi/web-interviewing/images/self-enumeration.jpg differ diff --git a/headquarters/cawi/web-interviewing/images/self-enumeration640.jpg b/headquarters/cawi/web-interviewing/images/self-enumeration640.jpg new file mode 100644 index 00000000..4f3aa356 Binary files /dev/null and b/headquarters/cawi/web-interviewing/images/self-enumeration640.jpg differ diff --git a/headquarters/cawi/web-interviewing/images/web_interview_settings.png b/headquarters/cawi/web-interviewing/images/web_interview_settings.png new file mode 100644 index 00000000..9209713c Binary files /dev/null and b/headquarters/cawi/web-interviewing/images/web_interview_settings.png differ diff --git a/headquarters/cawi/web-interviewing/index.html b/headquarters/cawi/web-interviewing/index.html new file mode 100644 index 00000000..d59cdf64 --- /dev/null +++ b/headquarters/cawi/web-interviewing/index.html @@ -0,0 +1,168 @@ +Web Interviewing +

Web Interviewing

October 30, 2020

In addition to CAPI surveys on Android tablets, Survey Solutions +provides two distinct possibilities:

  • Interviewing: Interviewers conduct interviews using the +web interface (without a tablet);
  • Self-enumeration: Respondents fill out interviews in the browser.

The difference is essential:

  • In the first case the person filling out the interview is a known +member of the team, has an account created in the system, assigned +to a team of a certain supervisor and so on. We use this mode when +e.g. we set up a call centre and our interviewers don’t physically +travel to the respondent, so don’t need a mobile device (tablet) +or to work offline (disconnected), but collect multiple interviews +and report to a certain supervisor;

  • In the second case, the respondent doesn’t have an account in the +system, and could in general be anonymous, and typically only one +interview in the survey is filled out by each respondent.

This article is dedicated to the discussion of the second case, +the setup of the web survey for self-enumeration. The first case +is described in details in the topic dedicated to the +web-interviewer.

Advantages and disadvantages

Web enumeration has numerous advantages to the face-to-face interviewing:

  • doesn’t require interviewers, their training and travel time;
  • doesn’t require interviewer equipment (tablets) as data entry +will be performed by the respondent using his/her device;
  • the whole survey can be faster (theoretically can be completed within a day);
  • some sensitive questions may be easier to answer in the absence of interviewer;
  • it may be possible to reach respondents, which would otherwise be not reachable +(for example, those living in remote places, or conflict areas).

There are equally-important concerns:

  • it may be difficult for a respondent to fully understand the +survey and complete a complex questionnaire without guidance of +an interviewer, who has had some training on the topic;

  • survey coordinator must be able to contact respondents to +invite them to take a survey (for example, per email);

  • respondents must have access to and be able to use a device +(computer/tablet/smartphone) with internet access.

A survey coordinator should carefully weight the costs and +the benefits, as well as estimate the impact of the mode of +collection on the quality of data. Web-interviewing may +introduce an essential bias into the data stemming from +self-selection on the basis of age, literacy, IT-literacy, +income, etc.

In many cases the self-enumeration is used as a supplementary +tool to face-to-face interviewing in an attempt to reach the +representative audience in a cost-effective manner.

Setting up a CAWI survey

Conducting a CAWI survey requires the following:

  1. Compose the questionnaire.
  2. Import the questionnaire to the data server.
  3. Make web-assignments for the survey.
  4. Activate the web-survey mode.
  5. Distribute the links.
  6. Review incoming data/follow up with the respondents if necessary.
  7. De-activate the web-survey mode.

Below we discuss these steps in more detail.

1. Composing the questionnaire

There is hardly any difference in the questionnaire for the +web interviews. You can generally use the same questionnaire +that you use for the face-to-face interviews also for the web +interviews, but it is worth to:

  • Explain the structure of the questionnaire to the respondent +and give an idea about how to navigate through the modules;

  • Check the wording of the questions - without the interviewers +some things may be not clear, explain them in the instructions;

  • Check the error messages - they must be clear to the respondent. +Remember that the respondent wouldn’t have the training session +that the interviewers typically get before the survey, so the +questionnaire must be more ‘user-friendly’.

2. Importing the questionnaire

There is no difference of this step relative to importing the +questionnaire for a face-to-face interviewing. Note that if +you import a different version of the same questionnaire to the +data server, the web mode for it (step #4) will need to be +activated again, specifically for each version.

3. Make web-assignments

Once you import the questionnaire, you will need to create +web-assignments. They are just like the regular assignments, +but the following properties are important or exist only for +web-assignments:

Preloading columnPropertyMeaning
_webmodeWeb modeA simple boolean flag that is raised if the assignment is +intended to be completed directly by the respondent. In the +preloading file 1 corresponds to web mode, and zero or not +specified value corresponds to no web mode for the assignment.
_emailEmailEmail address of the respondent (optional)
_passwordPasswordif a password (optional) is specified, interviews based +on this assignment will be protected by the password, which +also needs to be communicated to the prospective respondents +of the survey. See below on password rules.
_responsibleResponsible personAccount of the person responsible for the assignment.
_quantityQuantityNumber of interviews that may be generated from this +assignment; -1 corresponds to unlimited amount.

In addition to the above properties, the web assignments have +all the properties of the regular assignments. So that we can, +for example, specify the values for identifying questions (fields). +The email and password only make sense for the web mode +assignments and are not effective for the regular assignments. +The values of all of these properties can be seen in the +corresponding columns of the table showing the assignments +(MenuSurvey SetupAssignments).

For a CAWI survey, set the value of _webmode to 1 for all +assignments. For a mixed survey, only for those assignments that +must be filled out by the respondents through the web.

Even though the CAWI survey is done through a self-enumeration +(by the respondent) the person responsible for the assignment +must be specified and be in the role of interviewer. A web +assignment will not be created if it is made in the name of a +user in a different role and you will get a corresponding error +message.

The combination of the assignment’s quantity, email and +password will determine the overall protocol of the survey.

When the email is specified during the assignment creation, the +Survey Solutions can utilize one of the bulk email delivery +services +to deliver the invitations for the survey. If these services +have not been configured yet, the headquarters user must contact +the server administrator, as such configuration requires +administrator’s access level.

#PropertiesSituation
1
  • quantity=-1
  • email=..empty..
  • password=..empty..
Typical setup for a public opinion survey - one link is made public +through any media (newspaper, TV, website). All visitors of the link +will have an opportunity to fill out an interview.

If the bulk email delivery service has been set up, at the start of +the interview they will have a possibility to enter their email, so +that they will receive a link to follow in case their session is +interrupted and they need to continue the started interview.

There is no limit to the number of interviews to be collected.

2
  • quantity=-1
  • email=..empty..
  • password=..specified..
Typical setup for a non-public survey of unknown audience, for example, +visitors to a conference. The password must be made available to them +(e.g. written on the board, or announced to them). The role of the +password is to separate this group from all the other people who are +not exposed and not the focus of the study. There is no limit to the +number of interviews to be collected.
3
  • quantity=-1
  • email=..specified..
  • password=..specified..
Typical for monitoring surveys - the same respondent must authenticate +himself/herself with the password, and can submit an unlimited number +of interviews (presumably regulated by the established protocol: +daily, weekly, monthly, etc, or when a particular event happens, such +as a patient arrives with a particular symptom).
4
  • quantity=1
  • email=..specified..
  • password=..specified..
Typical for private opinion surveys - the respondents are invited directly +and can submit only one interview. To start the interview they must +follow the link and confirm their access with the issued password.

The interview may be completed in multiple seatings. If the respondent +interrupts the interview, he/she can continue by clicking the same link +received in the original invitation.

5
  • quantity=1
  • email=..specified..
  • password=..empty..
Similar to the above, but the respondents do not need to enter the +password to start their interviews, just click on their personalized links.
6
  • quantity=1
  • email=..empty..
  • password=..specified..
Typical for private opinion surveys - the respondents can submit only +one interview. To start the interview they must follow the link and +confirm their access with the issued password.

The interview may be completed in multiple seatings. If the respondent +interrupts the interview, he/she can continue by clicking the original +link. The passwords must be unique in this case, and the link distributed +using alternative means.

7
  • quantity=1
  • email=..empty..
  • password=..empty..
This combination is not acceptable.
8
  • quantity=N
  • email=
  • password=
Same as the case above where quantity is -1, except that the number of +responses is not infinite, but is limited to N interviews.

First N respondents will start the interviews, other respondents +will get a message indicating their participation is no longer needed.

4. Activate the web-survey mode.

Once the assignments are created the survey coordinator needs to set up and +activate the web mode of data collection for the survey. This is available +by calling the context menu for the questionnaire in the Survey Setup: +MenuSurvey SetupWeb interview setup.

Depending on the objectives and implementation of the survey you may need to +adjust the:

At the next page the template messages for invitations/reminders/notifications +may be edited and the web mode activated (the green START button) or +deactivated (the red STOP WEB INTERVIEW button). Any generated links remain +ineffective when the survey is not in the web mode even if the link has been +already sent to the respondent.

Depending on the scenario of the survey as outlined by the table in step #3, +you will have one or multiple links to be delivered to the respondents. +Note that in any of the cases, Survey Solutions doesn’t send the +invitations/notifications directly, but utilizes a special bulk email delivery +service +to deliver the corresponding messages. Refer to the corresponding article on +how to set it up. Once it is set up, one can go to MenuSurvey Setup +→ your questionnaire nameSend invitations to send out +the invitation emails.

If this service is not set up by the server administrator, then it is +his/her responsibility to distribute the appropriate messages among the +respondents using any alternative tools. The links can be downloaded by going +to MenuSurvey Setupyour questionnaire name → +Download web links.

After the links have been sent to the respondents it is important not to change +the responsible person for an assignment to anyone except an interviewer as +this will invalidate it (you will get a warning if you try). Note that this may +be an unintended indirect consequence of your actions, such as relocating an +interviewer to another team leaving his assignments in the original team.

6. Review incoming data

Once a CAWI survey is running, the interviews will appear in the list as soon +as they are started. The respondents may still be working at them and their +status will be InterviewerAssigned. This status is only attributable to CAWI +interviews. Any interviews received from tablets will show up on the server +already in the Completed status.

The supervisors are expected to review as soon as possible the interviews in +the status Completed, and either to approve or reject them.

Note that even though there is a rejection notification template in the set of +user-configurable notification templates for a survey, rejection notifications +are NOT sent out at all, and the supervisor will need to manually reallocate +the rejected interview to a real interviewer to follow up with the respondent +by using phone (see CATI) +or other communication.

7. De-activate the web survey mode.

When all the web assignments are completed or you’ve acquired the minimal +desired number of responses, you can stop the web survey. When the web survey +is stopped no changes will be permitted by the respondents visiting any links, +whether to create new or finish started interviews.

CAWI password rules

The password used for CAWI assignments must:

  • consist of only upper case English letters and digits;
  • be at least 6 characters long.

Providing a single question mark ‘?’ instead of the password will request +Survey Solutions to automatically generate one compliant with the above rules.

Continuing interviews

Some web interviews may be quite lengthy, difficult to fill out in one seating +either because of the respondent not being available for so long, or because +of the connectivity issues.

To continue working on the interview the respondent must open exactly the same +URL he/she sees during the interviewing. This URL may be different from the one +contained in the originally received invitation. The respondent may copy and +preserve the URL from his/her browser’s address line at any time. In addition, +if the bulk email service is set up by the server administrator, the user will +be asked for the contact email at the beginning of the interview. If the email +is provided, a message containing the continuation link will be sent to that +email. If the server administrator wants to disable this feature, he/she should +uncheck the corresponding option in the ‘Web interview settings’: Menu +→ AdministrationSettingsWeb interview settings.

This setting is shared by all CAWI surveys on the same server.

\ No newline at end of file diff --git a/headquarters/cawi/webpage-templates/images/formatting_toolbar.png b/headquarters/cawi/webpage-templates/images/formatting_toolbar.png new file mode 100644 index 00000000..d5710ba9 Binary files /dev/null and b/headquarters/cawi/webpage-templates/images/formatting_toolbar.png differ diff --git a/headquarters/cawi/webpage-templates/index.html b/headquarters/cawi/webpage-templates/index.html new file mode 100644 index 00000000..80420838 --- /dev/null +++ b/headquarters/cawi/webpage-templates/index.html @@ -0,0 +1,42 @@ +Webpage Templates +

Webpage Templates

November 26, 2020

Survey Solutions presents several web pages to the respondents to the web +surveys (CAWI). These pages may need to be customized at the web interview +setup page: MenuSurvey SetupQuestionnaires → +YourQuestionnaireWeb interview setup.

Changes made to these templates take immediate effect: any new page of the +corresponding type will be shown using the most recently saved template.

Web pageDescription
Welcome page

This page is shown to the respondent opening the link to a web interview.

The content of this page will usually contain description of the survey, +its purposes and objectives, motivation for participation, and other +descriptives/instructions.

The page consists of three user-editable elements:

  • title,
  • description, and
  • the text on +the button to start a new interview.

Survey coordinator may apply formatting to the description part of this +web page.

Resume Page

A resume page is shown to the respondents when they resume an +interrupted interview (started, but not completed).

The page consists of three user-editable elements:

  • title,
  • description, and
  • the text on +the button to resume the interview.

Survey coordinator may apply formatting to the description part of this +web page.

The description may mention %QUESTIONNAIRE%, which will be automatically +replaced with the name of the survey.

Complete

Provides a possibility to customize texts utilized at the +system-generated Complete page of a web-interview.

The page consists of two user-editable elements:

  • Note for supervisor, and
  • Complete.

Survey coordinator may not apply formatting in any of the elements of this +web page.

Finish page

Provides a possibility to customize texts utilized at the +page displayed after a web-interview is completed.

The page consists of two user-editable elements:

  • title, and
  • description.

Survey coordinator may apply formatting to the description part of this +web page.

Text formatting

Where formatting is supported it is entered using the following toolbar:

where the meaning of the icons is as follows:

  • Header selection - select a font to enter heading text;
  • Bold - make some text appear in bold font;
  • Italics - make some text appear in italics font;
  • List - make a list item (unordered/bulleted);
  • Ordered list - make a list item in an ordered list;
  • Image - add image (can upload a file or specify an URL of a +published image);
  • Link - insert a link (provide an URL and a corresponding link text).

The formatting is implemented using +Markdown and users familiar with its +notation can enter the corresponding keystrokes directly without using the +toolbar if so desired.

\ No newline at end of file diff --git a/headquarters/changing-the-interface-language/index.html b/headquarters/changing-the-interface-language/index.html new file mode 100644 index 00000000..d867cea3 --- /dev/null +++ b/headquarters/changing-the-interface-language/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/changing-the-interface-language/ + \ No newline at end of file diff --git a/headquarters/components-of-the-headquarters-software/index.html b/headquarters/components-of-the-headquarters-software/index.html new file mode 100644 index 00000000..22a14f8e --- /dev/null +++ b/headquarters/components-of-the-headquarters-software/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/components-of-the-headquarters-software/ + \ No newline at end of file diff --git a/headquarters/config/admin-settings/images/773025.png b/headquarters/config/admin-settings/images/773025.png new file mode 100644 index 00000000..cf9d1f39 Binary files /dev/null and b/headquarters/config/admin-settings/images/773025.png differ diff --git a/headquarters/config/admin-settings/images/773026.png b/headquarters/config/admin-settings/images/773026.png new file mode 100644 index 00000000..5a246b97 Binary files /dev/null and b/headquarters/config/admin-settings/images/773026.png differ diff --git a/headquarters/config/admin-settings/images/773027.png b/headquarters/config/admin-settings/images/773027.png new file mode 100644 index 00000000..76ea1ae7 Binary files /dev/null and b/headquarters/config/admin-settings/images/773027.png differ diff --git a/headquarters/config/admin-settings/images/773028.png b/headquarters/config/admin-settings/images/773028.png new file mode 100644 index 00000000..808cb0e2 Binary files /dev/null and b/headquarters/config/admin-settings/images/773028.png differ diff --git a/headquarters/config/admin-settings/images/852912.png b/headquarters/config/admin-settings/images/852912.png new file mode 100644 index 00000000..cd6b2d75 Binary files /dev/null and b/headquarters/config/admin-settings/images/852912.png differ diff --git a/headquarters/config/admin-settings/images/852913.png b/headquarters/config/admin-settings/images/852913.png new file mode 100644 index 00000000..10f5737f Binary files /dev/null and b/headquarters/config/admin-settings/images/852913.png differ diff --git a/headquarters/config/admin-settings/index.html b/headquarters/config/admin-settings/index.html new file mode 100644 index 00000000..326366de --- /dev/null +++ b/headquarters/config/admin-settings/index.html @@ -0,0 +1,86 @@ +Workspace Settings +

Workspace Settings

June 5, 2024

Survey Solutions server administrator +may adjust the workspace settings. These settings affect simultaneously all +surveys and all users in a particular workspace on the server and have the effect +immediately when applied.

These settings are visible only to the user logged in in an administrative role +and can be accessed from:

  • for the current workspace: MenuSettingsWorkspace settings.
  • for any other workspace: MenuAdministration → click particular workspace name → Settings.

Export Encryption

This group of settings contains settings that control the encryption of the data +archive produced when exporting the data from Survey Solutions.

When enable encryption checkbox is checked, the produced data zip-archive will +be encrypted with a password that the administrator sees in the settings. To +ensure high level of security the password can’t be typed in, but is generated +using a random password generation algorithm to make sure the password is +sufficiently complex. The administrator may request a different password to be +generated by pressing the circular arrows button. There is no way of setting a +specific password in this field.

Default = disabled

The field password must be populated with a valid password for encryption to +take effect. There is no default password. To ensure the password is strong, +the program generates one automatically. A new password can be generated by +clicking on the refresh button.

Global Note

This group of settings contains only one setting that controls the server global +note. When specified, the global note will be shown at every page for every user +logged into the Survey Solutions Server.

Default = empty

  • To specify the global note - specify a new note and click save.
  • To change the global note - specify a new note and click save.
  • To remove a global note - click the delete button.

You will see a message Note saved on successful update or deletion of the +global note.

User Profile Settings

This group contains a single setting that controls whether the interviewers may +update their contact information.

default = off

By default the interviewers may not update their contact information (such as +email address or phone number).

  • To allow interviewers to update their contact information - set the checkbox +to checked state.
  • To disallow interviewers to update their contact information - set the +checkbox to unchecked state.

Interviewer/Supervisor application settings

This group contains the Interviewer/Supervisor application settings +centrally controlled from the server by the administrator.

Enable automatic updates determines whether only the most recent +version of the App (as installed on the server) may be utilized by +the workforce to exchange data with the server.

default = on

By default only the most recent version of the app is permitted to +exchange the data with the server. Users of all earlier versions are +required to update to permit synchronization.

  • To always require the tablets to update to version of Survey +Solutions as installed on the server, set the checkbox to checked +state.
  • To permit the tablets to exchange the data with the server from +earlier versions of Survey Solutions, set the checkbox to unchecked +state.

This setting is only a recommendation. If Survey Solutions determines +that e.g. the newly imported questionnaire has features not supported +by the version installed on the interviewer’s tablet, it will still +require to update.

The checkbox Enable notifications on device controls whether the +notifications will be issued +for interviewers during their work on the tablets.

default = on

  • To show the notifications to interviewers set the checkbox to checked state.
  • To not show the notifications to interviewers set the checkbox to unchecked +state.

The checkbox Enable partial synchronization controls whether partial +synchronization will be performed during synchronization with the server.

default = off

  • To enable partial synchronization set the checkbox to checked state.
  • To disable partial synchronization set the checkbox to unchecked state.

Numeric parameter Geography question accuracy sets the requested accuracy +(in meters) for geography-type questions with automatic and semi-automatic +measurement. It accepts integer values from 1m to 1,000m.

default = 10

Numeric parameter Geography question period regulates how frequently the +points will be recorded in a geography-type question by setting up the period +between the recordings of the points. The period is measured in seconds. Any +value from 5 to 1,000 may be specified.

default = 10

Textual parameter ESRI API key is the key that the user needs to obtain from +Esri to utilize online source of tiles for +the base map layer when using the map dashboard or answering geography type +questions in Interviewer and Supervisor apps. Additional details are in the +online maps key topic.

Usage of the +ESRI API key may (and likely will) cost you money. It is important to +familiarize yourself with the pricing, plans, charges and limits as applicable. +These conditions may be changed, possibly even without prior notice. Pricing +and billing conditions may depend on whether the user is a private user or an +organization. All of the billing for this service occurs between you and the +corresponding provider, the Survey Solutions developers are not charging you +for this service.

By default the API key is blank (not specified) and the online maps are not +selectable.

default = “”

Web interview settings

The checkbox Web interview email notifications controls whether respondents +to web surveys may request an email with a link to resume the interview if the +interview session gets interrupted.

The email with the resume link is only sent when a +bulk email service provider +is set up, otherwise it is not sent out even if this checkbox is checked.

default = off

  • To allow respondents to request an email with a resume link set the checkbox +to checked state.
  • To not allow respondents to request an email with a resume link set the +checkbox to unchecked state.

Here one can customize the logo that is displayed when the user logs +into the Survey Solutions data server or the Interviewer App.

default = neutral themed image

Survey Solutions is deployed with a neutral image that may be customized +to the organization’s or survey’s logo.

  • To change the logo, click on Choose File button and select an image +from the local machine. Image will be displayed on the settings page. +Click Save when ready to use this image on all the login screens.

  • To remove the logo, click the Remove logo button.

\ No newline at end of file diff --git a/headquarters/config/alternative-maps-for-servers-in-china/index.html b/headquarters/config/alternative-maps-for-servers-in-china/index.html new file mode 100644 index 00000000..ed0be0f3 --- /dev/null +++ b/headquarters/config/alternative-maps-for-servers-in-china/index.html @@ -0,0 +1,44 @@ +Alternative maps for servers in China +

Alternative maps for servers in China

May 6, 2020

Survey Solutions map reports at the data server utilize maps provided by Google +through their online service. The installation sets the parameters regulating +access to this service with the parameters applicable to the majority of users, +but these servers are known to be inaccessible from the networks in China.

To enable access to Google maps from China, a different server, specific to +China, must be used. The following two parameters should be changed in the +GoogleMap section in appsettings.Production.ini configuration file of the +Survey Solutions server:

[GoogleMap]
+# write your API key (that you receive from Google) instead of ... below:
+ApiKey="..."
+ApiBaseUrl=http://maps.google.cn
+BaseUrl=http://google.cn
+

This will replace the common Google maps engine used by all countries +with the maps server that is specific for China. A restart of the web server may be +required for the new settings to take effect.

These map server settings apply to all the map reports on the Survey Solutions +data server. Hence if you are planning multiple surveys with access inside and +outside of China you will need to have two separate servers with different +configurations.

The default values of BaseUrl and ApiBaseUrl in this section (for all +users outside of China):

[GoogleMap]
+ApiBaseUrl=https://maps.googleapis.com
+BaseUrl=https://google.com
+

It is recommended that the users do not change any other settings or +parameters in this file without prior consultation with the support +team, as it may negatively affect the security and reliability of the +service.

\ No newline at end of file diff --git a/headquarters/config/aws-setup/images/attach-role-name.png b/headquarters/config/aws-setup/images/attach-role-name.png new file mode 100644 index 00000000..68a16f8e Binary files /dev/null and b/headquarters/config/aws-setup/images/attach-role-name.png differ diff --git a/headquarters/config/aws-setup/images/attach-role.png b/headquarters/config/aws-setup/images/attach-role.png new file mode 100644 index 00000000..047e6207 Binary files /dev/null and b/headquarters/config/aws-setup/images/attach-role.png differ diff --git a/headquarters/config/aws-setup/images/create-role.png b/headquarters/config/aws-setup/images/create-role.png new file mode 100644 index 00000000..876125ee Binary files /dev/null and b/headquarters/config/aws-setup/images/create-role.png differ diff --git a/headquarters/config/aws-setup/images/create_sg.png b/headquarters/config/aws-setup/images/create_sg.png new file mode 100644 index 00000000..5f333d1d Binary files /dev/null and b/headquarters/config/aws-setup/images/create_sg.png differ diff --git a/headquarters/config/aws-setup/images/ec2_image_selection.png b/headquarters/config/aws-setup/images/ec2_image_selection.png new file mode 100644 index 00000000..974bd727 Binary files /dev/null and b/headquarters/config/aws-setup/images/ec2_image_selection.png differ diff --git a/headquarters/config/aws-setup/images/ec2_launch.png b/headquarters/config/aws-setup/images/ec2_launch.png new file mode 100644 index 00000000..8fa2bcae Binary files /dev/null and b/headquarters/config/aws-setup/images/ec2_launch.png differ diff --git a/headquarters/config/aws-setup/images/ec2_public_dns.png b/headquarters/config/aws-setup/images/ec2_public_dns.png new file mode 100644 index 00000000..9d9595eb Binary files /dev/null and b/headquarters/config/aws-setup/images/ec2_public_dns.png differ diff --git a/headquarters/config/aws-setup/images/ec2_sg_assign.png b/headquarters/config/aws-setup/images/ec2_sg_assign.png new file mode 100644 index 00000000..851f2233 Binary files /dev/null and b/headquarters/config/aws-setup/images/ec2_sg_assign.png differ diff --git a/headquarters/config/aws-setup/images/ec2_sg_web.png b/headquarters/config/aws-setup/images/ec2_sg_web.png new file mode 100644 index 00000000..f895b51d Binary files /dev/null and b/headquarters/config/aws-setup/images/ec2_sg_web.png differ diff --git a/headquarters/config/aws-setup/images/ec2_ss_running.png b/headquarters/config/aws-setup/images/ec2_ss_running.png new file mode 100644 index 00000000..78725fec Binary files /dev/null and b/headquarters/config/aws-setup/images/ec2_ss_running.png differ diff --git a/headquarters/config/aws-setup/images/new-bucket.png b/headquarters/config/aws-setup/images/new-bucket.png new file mode 100644 index 00000000..29d14dad Binary files /dev/null and b/headquarters/config/aws-setup/images/new-bucket.png differ diff --git a/headquarters/config/aws-setup/images/rds_endpoint.png b/headquarters/config/aws-setup/images/rds_endpoint.png new file mode 100644 index 00000000..acf64f86 Binary files /dev/null and b/headquarters/config/aws-setup/images/rds_endpoint.png differ diff --git a/headquarters/config/aws-setup/images/rds_search.png b/headquarters/config/aws-setup/images/rds_search.png new file mode 100644 index 00000000..3b1fb6be Binary files /dev/null and b/headquarters/config/aws-setup/images/rds_search.png differ diff --git a/headquarters/config/aws-setup/images/rds_sg_selection.png b/headquarters/config/aws-setup/images/rds_sg_selection.png new file mode 100644 index 00000000..49d9ae40 Binary files /dev/null and b/headquarters/config/aws-setup/images/rds_sg_selection.png differ diff --git a/headquarters/config/aws-setup/images/role-name.png b/headquarters/config/aws-setup/images/role-name.png new file mode 100644 index 00000000..392db8ad Binary files /dev/null and b/headquarters/config/aws-setup/images/role-name.png differ diff --git a/headquarters/config/aws-setup/images/s3-access.png b/headquarters/config/aws-setup/images/s3-access.png new file mode 100644 index 00000000..22d76d98 Binary files /dev/null and b/headquarters/config/aws-setup/images/s3-access.png differ diff --git a/headquarters/config/aws-setup/images/secret-keys.png b/headquarters/config/aws-setup/images/secret-keys.png new file mode 100644 index 00000000..3d57c41e Binary files /dev/null and b/headquarters/config/aws-setup/images/secret-keys.png differ diff --git a/headquarters/config/aws-setup/images/sg_pg_rule.png b/headquarters/config/aws-setup/images/sg_pg_rule.png new file mode 100644 index 00000000..2f061081 Binary files /dev/null and b/headquarters/config/aws-setup/images/sg_pg_rule.png differ diff --git a/headquarters/config/aws-setup/index.html b/headquarters/config/aws-setup/index.html new file mode 100644 index 00000000..577c1a73 --- /dev/null +++ b/headquarters/config/aws-setup/index.html @@ -0,0 +1,128 @@ +AWS setup +

AWS setup

May 31, 2021

Installation of Survey Solutions on Amazon AWS

The installation consists of the following steps:

  1. Create security group for web server and RDS to be able to communicate
  2. Create PostgreSQL instance
  3. Create EC2 instance for running Survey Solutions
  4. Install Survey Solutions

Create security group

In order to have connection between Survey Solutions and PostgreSQL you can create new security group as described in here.

From the AWS Management Console:

  • Click on EC2 under the Compute heading
  • Scroll down the left-hand navigation to Network & Security
  • Click on Security Groups
  • Click on Create security group

In the create security group specify name and description:

Create Security Group

In the rules page add single required rule:

  • Type: PostgreSQL
  • Source: Start typing “Survey Solutions” and select just created security group +Security Group Rules

Create PostgreSQL RDS instance

Create an RDS PostgreSQL instance using this documentation, you don’t need to install a database client, but it can be used to test the database connection.

During creation process expand Additional connectivity configuration section and assign created “Survey Solutions” security group +Security Group Rules

Keep database port to be default one (5432)

After database is started copy endpoint address +PostgreSQL endpoint

Be sure to retain the following information for accessing the PostgreSQL:

  • login
  • password
  • endpoint

These details will be needed in a later step to connect the RDS with the EC2 instance.

To find the endpoint:

  • Navigate to RDS from the Amazon Management Console
  • Click on DB Instances under Resources in the main pane
  • Click on the RDS instance DB identifier of the desired RDS
  • Click on the Connectivity & security tab
  • Copy the endpoint under Endpoint & port

Create EC2 instance

  • In the services list Compute section select EC2
  • Find “Launch instance menu” +Image selection
  • In search bar type “Windows”
  • Select Microsoft Windows Server 2019 Base +Image selection
  • In tier selection pick one that suites your needs. You can check for server requirements here.
  • After instance is created right click on it, select Networking -> Change Security Groups and assign group Survey Solutions +Assign Security Group
  • Launch selected instance

Survey Solutions installation

Connect to the EC2 instance

When your instance is running, connect to it with RDP using instructions.

Download Survey Solutions installer

Once connected, download the Survey Solutions installer. Before doing so, you may need to change the security settings of Internet Explorer (IE) on the EC2 instance to make download possible. To do so:

  • Open IE
  • Navigate to Settings>Internet>Security>Trusted Sites
  • Add https://mysurvey.solutions as a trusted site
  • Reduce the security level for this zone to Medium-low
  • Click Apply and OK

To download the Survey Solutions installer:

  • Navigate to installer download page in a browser outside of the RDP connection
  • Right-click the DOWNLOAD button
  • Select Copy link address
  • Paste the link into the address bar of IE in the RDP connection in order to download the installation file on the EC2 instance

Install Survey Solutions

Once the installer is downloaded, perform these installation steps (skip PostgreSQL part). When asked for the database connection, enter the endpoint from RDS setup and database credentials.

Change port from 9700 to 80

Delete default web site from IIS web sites list and add :80 port binding to Survey Solutions web site:

  1. Right-click on start menu -> run
  2. Execute inetmgr to start IIS manager
  3. Look in the left-hand Connections panel
  4. Expand the entry
  5. Expand Sites
  6. Right-click on Default Web Site and select remove
  7. Select Survey Solutions site
  8. In the right panel under Edit Site, click on Bindings
  9. Select the existing site binding
  10. Change Port from 9700 to 80
  11. Leave host name empty for now

Expose 80 port to external users

  • In the AWS console EC2 running instances find security group where only web server is included (for me it is “launch-wizard-1”): +Open 80 port security group
  • Navigate to Network & Security -> Security Groups in the left panel
  • Find group of the web server and click on it
  • Click Edit Inbound Rules
  • Add Rule
    • Type: HTTP
    • Select: 0.0.0.0/0 as Source
  • Save rules

In Survey Solutions installation location Site folder find appsettings.production.ini file, and remove :9700 from BaseUrl.

When done correctly you should be able to access Survey Solutions application from your browser by using public DNS: +Public DNS EC2

Copy value from your console to browser address bar: +Testing connection

DNS and SSL

Also we recommend enabling public DNS name for your survey solutions instance. Choose any DNS registrar you like, or maybe you already have domain name. When it is resolved to public IP address of Amazon EC2 instance change BaseURL setting in appsettings.production.ini file. If SSL is used, set BaseUrl to https://%your dns name%.

S3 Configuration

Survey Solutions can store multimedia data (images, audio audit, etc) in Amazon S3 storage to reduce load on database instance.

In order to enable S3 storage open S3 service console and create new bucket (you will need to pick name according to naming rules): +Bucket creation

Now to enable Survey Solutions access to that bucket new IAM role will be required. In order to create it in services list find IAM, then go to Roles->Create new role: +Role creation

Provide name, and attach appropriate S3 full access policy: +Role creation +Or create restricted policy via “Create Policy” button and to JSON tab add following content:

  • AWS IAM user should have following permissions on bucket:
    • s3:GetObject
    • s3:ListBucket
    • s3:PutObject
    • s3:DeleteObject
{
+    "Version": "2012-10-17",
+    "Statement": [
+        {
+            "Sid": "VisualEditor0",
+            "Effect": "Allow",
+            "Action": [
+                "s3:PutObject",
+                "s3:GetObject",
+                "s3:ListBucket",
+                "s3:DeleteObject"
+            ],
+            "Resource": [
+                "arn:aws:s3:::%YOUR_BUCKET_NAME%/*",
+                "arn:aws:s3:::%YOUR_BUCKET_NAME%"
+            ]
+        }
+    ]
+}
+

Replace %YOUR_BUCKET_NAME% with Your own bucket name

In order to attach this role to EC2 instance open EC2 console, find the appropriate image and select Attach/Replace IAM role: +Attach role +Then select the created role: +Attach role. Role selection

In Survey Solutions installation location Site folder find appsettings.production.ini file.

  1. Change storage options. In configuration file replace AppData key value to AppData=s3://%Your bucket name%/hq +a. hq is the prefix for all data from HQ. Like a folder in file system where HQ will store it’s files
  2. Add section with region configuration (use same region as your S3 bucket)

Your configuration file should contain such configuration:

[FileStorage]
+AppData = s3:/%YOUR_BUCKET_NAME%/hq
+
+[AWS]
+Region = us-east-1 # replace with your region
+

Restart Windows image for changes to take effect.

Survey Solutions will create folder with configured tenant name where it will store the binary data for the interviews.

How to configure S3 outside of Amazon EC2 server

It is also posible to use S3 object storage outside of Amazon Cloud, but be aware that Amazon will apply additional billing on all used traffic between Your server and S3. You will need IAM user credentials (secret key ID and secret key)

Secret keys

On IIS

For deployment on IIS You need to create special credentials file with IAM user credentials, and provide HQ application a location of this file

  1. Create credential file somewhere on server, for example C:\inetpub\credentials or into Survey Solutions installation folder
  2. Put there IAM user credentials in following form:
[default]
+aws_access_key_id = AKxxxxxxxxxxxxx
+aws_secret_access_key = HwIgxxxxxxxxxxxxxxxxxxxxxxyU
+
  1. Add following lines in AWS section to appsettings.production.ini of Survey Solutions Headquarters application
[AWS]
+Region = us-east-1
+Profile = default
+ProfilesLocation = C:\inetpub\credentials
+
+[FileStorage]
+AppData="s3:/%YOUR_BUCKET_NAME%/hq"
+

On Docker

For Docker deployment You can specify secret keys in ENV variables:

Docker-compose.yml

version: '3'
+services:
+  hq:
+    image: 'surveysolutions/surveysolutions'
+    depends_on:
+     - "db"
+    environment: 
+      HQ_ConnectionStrings__DefaultConnection: 'db connection string'
+      HQ_Headquarters__BaseUrl: 'http://demo.hq.app'
+      AWS_ACCESS_KEY_ID: AKIAxxxxxxxxxxxZL3Q
+      AWS_SECRET_ACCESS_KEY: HwIgxxxxxxxxxxxxxxxxxxxxxxxxxJ5yU
+      HQ_FileStorage__AppData: s3:/%YOUR_BUCKET_NAME%/hq
+    restart: always
+

Using MiniO new in v21.06 of HQ

It also possible to configure HQ to work with MiniO - self hosted object storage service https://min.io/ +There is a few additional settings required to be provided:

  • ServiceURL pointing to MiniO installation
  • ForcePathStyle equal true as required by MiniO
  • UseHttp equal true if MiniO is hosted without SSL
[AWS]
+Profile = default
+ServiceURL = https://minio.url
+Region = us-east-1
+ForcePathStyle = true
+
+[FileStorage]
+AppData="s3://hqdemobucket/hq"
+

In Docker

version: '3'
+services:
+  hq:
+    image: 'surveysolutions/surveysolutions'
+    depends_on:
+     - "db"
+    environment: 
+      HQ_ConnectionStrings__DefaultConnection: 'Server=db;Port=5432;User Id=postgres;Password=pg_password;Database=SurveySolutions'
+      HQ_Headquarters__BaseUrl: https://hqurl
+      HQ_AWS__Region: us-east-1
+      HQ_AWS__ServiceURL: http://minio
+      HQ_AWS__UseHttp: true  # only required if minio has no https support
+      HQ_AWS__ForcePathStyle: true
+      AWS_ACCESS_KEY_ID: "minio"
+      AWS_SECRET_ACCESS_KEY: "minio123"
+      HQ_FileStorage__AppData: s3://miniobucket/hq
+    restart: always
+    ports:
+      - 80:80
+  minio:
+    image: minio/minio
+    volumes:
+      - storageVolume:/data
+    expose:
+      - "9000"
+    ports:
+      - 9000:9000
+    command: server /data
+    environment:
+      MINIO_ROOT_USER: minio
+      MINIO_ROOT_PASSWORD: minio123
+volumes:
+    storageVolume:
+    
+
\ No newline at end of file diff --git a/headquarters/config/azure-setup/index.html b/headquarters/config/azure-setup/index.html new file mode 100644 index 00000000..a61c9feb --- /dev/null +++ b/headquarters/config/azure-setup/index.html @@ -0,0 +1,63 @@ +Azure setup +

Azure setup

November 5, 2020

Installation of Survey Solutions on Microsoft Azure

In order to install - register on azure portal and login. Installation steps are going to use azure shell.

After loggedin into azure shell execute command with variables that are going to be needed later. Feel free to change them as you need:

RG=surveysolutions \
+LOC=westeurope \
+STOREACC=surveysolutions \
+SHARE_NAME=surveysolutions \
+PGSERVER=suso-postgres \
+PGPASS=password \
+WEBAPPNAME=surveysolutions-webapp \
+SRVPLAN=AppSvc-SurveySolutions-plan
+
  • RG - resource group where all survey solutions related resources are going to be grouped
  • LOC - location where you will run survey solutions software. Choose the one that fits your needs https://azure.microsoft.com/en-us/global-infrastructure/geographies/
  • STOREACC - storage account that will contain binary data https://docs.microsoft.com/en-us/azure/storage/common/storage-account-overview. Should be unique so change it, do not use one provided here
  • SHARE_NAME - name of file share for survey solutions to store binary data
  • PGSERVER - name for PostgreSQL server
  • PGPASS - password for PostgreSQL database change. Make your own password, do not use the one provided in here.
  • WEBAPPNAME - address and name of created survey solutions intallation. Should be unique across all other web apps.
  • SRVPLAN - name for created service plan

Create a resource group:

az group create --name $RG --location $LOC
+

Create PostgreSQL server instance:

az postgres server create -l $LOC  -g $RG -n $PGSERVER -u postgres -p $PGPASS \
+    --sku-name B_Gen5_2 --version 11
+

Allow connections from azure services to PostgreSQL:

az postgres server firewall-rule create -g $RG \
+    -s $PGSERVER -n "AllowAllWindowsAzureIps" \
+    --start-ip-address "0.0.0.0" \
+    --end-ip-address "0.0.0.0"
+

Create a storage account:

az storage account create -n $STOREACC -g $RG -l $LOC --sku Standard_LRS
+

Get store key for later use:

STOREKEY=$(az storage account keys list --account-name $STOREACC --query [0].value -o tsv)
+

Create file share:

az storage share create \
+  --name $SHARE_NAME \
+  --account-key $STOREKEY \
+  --account-name $STOREACC
+
+az storage share create \
+  --name $SHARE_NAME-logs \
+  --account-key $STOREKEY \
+  --account-name $STOREACC
+

Create a service plan:

az appservice plan create --name $SRVPLAN --resource-group $RG --is-linux
+

Create a web application that will host survey solutions:

az webapp create --resource-group $RG --plan $SRVPLAN --name $WEBAPPNAME --deployment-container-image-name surveysolutions/surveysolutions:latest
+

Set required configuration properties for Survey Solutions:


+az webapp config appsettings set -g $RG -n $WEBAPPNAME --settings HQ_Headquarters__TenantName=hq 
+
+az webapp config appsettings set -g $RG -n $WEBAPPNAME --settings HQ_Headquarters__BaseUrl=https://${WEBAPPNAME}.azurewebsites.net
+
+az webapp config appsettings set --resource-group $RG --name $WEBAPPNAME --settings HQ_ConnectionStrings__DefaultConnection="Server=${PGSERVER}.postgres.database.azure.com;Database=SurveySolutions;Port=5432;User Id=postgres@${PGSERVER};Password=${PGPASS};Ssl Mode=Require;"
+

Mount file shares to docker image:


+az webapp config storage-account add --resource-group $RG --name $WEBAPPNAME --custom-id appdata --storage-type AzureFiles --share-name $SHARE_NAME --account-name $STOREACC --access-key $STOREKEY --mount-path /app/AppData
+
+az webapp config storage-account add --resource-group $RG --name $WEBAPPNAME --custom-id logs --storage-type AzureFiles --share-name $SHARE_NAME-logs --account-name $STOREACC --access-key $STOREKEY --mount-path /logs
+

Enable https redirect:

az webapp update -g $RG -n $WEBAPPNAME --https-only true
+

Now to make sure all changes take effect restart webapp:

az webapp restart --name $WEBAPPNAME --resource-group $RG
+

In order to see running instance execute command:

echo "https://$(az webapp list --query "[0].{hostName: defaultHostName}" -o tsv)"
+

It will output address of your instance. Copy it from console to your browser application is up and running.

Post installation settings

Shown example creates smallest possible sku tier. It is enough to get started and do minor trainings, but its not recommended for production use. When you configured the software its possible to scaleup used App Service Plan. To do it find resource group you created in the beginning and find AppSvc-SurveySolutions-plan in the list (or name you gave to service plan). Here you can change available resources for Survey Solutions. On the overview tab you can see how much resources is consumed right now, so you can decide if its enough or not.

If you encreased app service plan resources but system still works slowly check if database instance keeps up with load. In same resources group find suso-postgres resource. On the overview tab you see resource utilization graph. See if current tier is enough for your load and scale up/down accordingly.

Warning:

Please note that changing to and from the Basic compute tier or changing the backup redundancy options after server creation is not supported for PostgreSQL database. So if you plan a large scale survey start with general purpose instance at the beginning.
\ No newline at end of file diff --git a/headquarters/config/changing-the-interface-language/images/643226.png b/headquarters/config/changing-the-interface-language/images/643226.png new file mode 100644 index 00000000..00768245 Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643226.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643226_hu18311410720357256688.png b/headquarters/config/changing-the-interface-language/images/643226_hu18311410720357256688.png new file mode 100644 index 00000000..bf3655de Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643226_hu18311410720357256688.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643229.png b/headquarters/config/changing-the-interface-language/images/643229.png new file mode 100644 index 00000000..e4dc49a0 Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643229.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643229_hu5579825405429671058.png b/headquarters/config/changing-the-interface-language/images/643229_hu5579825405429671058.png new file mode 100644 index 00000000..cd487af8 Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643229_hu5579825405429671058.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643230.png b/headquarters/config/changing-the-interface-language/images/643230.png new file mode 100644 index 00000000..8a1cb2b6 Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643230.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643230_hu17366762319411443140.png b/headquarters/config/changing-the-interface-language/images/643230_hu17366762319411443140.png new file mode 100644 index 00000000..883b6cb5 Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643230_hu17366762319411443140.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643248.png b/headquarters/config/changing-the-interface-language/images/643248.png new file mode 100644 index 00000000..40a8c919 Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643248.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643248_hu16846694060845507964.png b/headquarters/config/changing-the-interface-language/images/643248_hu16846694060845507964.png new file mode 100644 index 00000000..1a4b78d0 Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643248_hu16846694060845507964.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643249.png b/headquarters/config/changing-the-interface-language/images/643249.png new file mode 100644 index 00000000..330d6665 Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643249.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643249_hu12976466809313458382.png b/headquarters/config/changing-the-interface-language/images/643249_hu12976466809313458382.png new file mode 100644 index 00000000..1fd742e9 Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643249_hu12976466809313458382.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643253.png b/headquarters/config/changing-the-interface-language/images/643253.png new file mode 100644 index 00000000..d95fe297 Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643253.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643253_hu16575022761520993013.png b/headquarters/config/changing-the-interface-language/images/643253_hu16575022761520993013.png new file mode 100644 index 00000000..2f3ced5b Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643253_hu16575022761520993013.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643255.png b/headquarters/config/changing-the-interface-language/images/643255.png new file mode 100644 index 00000000..a624db56 Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643255.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643255_hu17419081110967384319.png b/headquarters/config/changing-the-interface-language/images/643255_hu17419081110967384319.png new file mode 100644 index 00000000..d542d685 Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643255_hu17419081110967384319.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643259.png b/headquarters/config/changing-the-interface-language/images/643259.png new file mode 100644 index 00000000..84fa0663 Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643259.png differ diff --git a/headquarters/config/changing-the-interface-language/images/643259_hu8414461116386012158.png b/headquarters/config/changing-the-interface-language/images/643259_hu8414461116386012158.png new file mode 100644 index 00000000..a29e6a4b Binary files /dev/null and b/headquarters/config/changing-the-interface-language/images/643259_hu8414461116386012158.png differ diff --git a/headquarters/config/changing-the-interface-language/index.html b/headquarters/config/changing-the-interface-language/index.html new file mode 100644 index 00000000..8c407cb1 --- /dev/null +++ b/headquarters/config/changing-the-interface-language/index.html @@ -0,0 +1,48 @@ +Changing the Interface Language +

Changing the Interface Language

June 16, 2016

Survey Solutions interface for Headquarter and Supervisor users can be +presented in different languages. This article describes how to switch +the interface to be presented in an alternative language.

Recall that both HQ and Supervisor users work via a web browser. +Switching the interface is done by telling the browser to request the +content in a particular language. Note that this affects both Survey +Solutions and other sites that are visited with the same browser.

Step-by-step instructions to switch the language on your browser is +provided for the Google Chrome, Mozilla Firefox, +and Internet Explorer. If you are using a different browser +the steps to take are likely very similar. See also the W3C +Internationalization +page for +the additional information.

 

Google Chrome

The following instructions are based on Google Chrome version +50.0.2661.102.

  1. Start Google Chrome browser;

  2. Click on the drop down menu + + and select +Settings item;

  3. Click the Show advanced settings… link at the bottom;

  4. Click Language and input settings button;

  5. Click the Add button in the Languages list to add a language +you need.

  6. Drag and drop that language to the top of the list.

  7. Click Done.

  8. Close and restart the browser.

 

Mozilla Firefox

The following instructions are based on version 45.0.1 of Mozilla +Firefox.

  1. Start the Mozilla Firefox browser.

  2. Click on the drop down menu + + and select +Options item;

  3. Select Content tab.

  4. In the Languages section, click the Choose… button.

  5. Select a new language you want to add from the drop-down menu and +click the Add button.

  6. Adjust the order of the languages to have the desired language at +the top.

  7. Click OK.

  8. Close and restart the browser.

 

Microsoft Internet Explorer

The following instructions are based on the version 10.0.9200.16750 of +Microsoft Internet Explorer.

  1. Start Internet Explorer.

  2. Click the gear icon + + to access the drop-down +menu.

  3. Select Internet Options.

  4. In the General tab click Languages button:

  5. Click the Add… button to add the desired language.

  6. Use the Move up and Move down buttons to change the order of the +languages to have the desired language at the top of the list.

  7. Click OK.

  8. Close and restart the browser.

\ No newline at end of file diff --git a/headquarters/config/cloud-export/index.html b/headquarters/config/cloud-export/index.html new file mode 100644 index 00000000..6a67ae6d --- /dev/null +++ b/headquarters/config/cloud-export/index.html @@ -0,0 +1,55 @@ +Configuring export to external cloud storage. +

Configuring export to external cloud storage.

April 29, 2021

Survey Solutions may be configured to export data to major international +cloud storage providers:

  • DropBox
  • Google Drive
  • Microsoft OneDrive

To enable export to the external storages the following configuration +changes need to be done to the configuration file appsettings.Production.ini:

  1. Add section:
[ExternalStorages:OAuth2]
+RedirectUri="https://YOURSERVERNAME/data-export-storages.html"
+ResponseType="code"
+

Note that you need to substitute-in your server name in the RedirectUri +parameter.

  1. Decide which external storages you want to make available to the users of +your server (this is shared across all workspaces) from the above mentioned +list of cloud providers.

  2. For each desired destination add a new section to the +appsettings.Production.ini file based on the following templates:

3A. DropBox:

[ExternalStorages:OAuth2:Dropbox]
+AuthorizationUri="https://www.dropbox.com/1/oauth2/authorize"
+TokenUri="https://api.dropbox.com/1/oauth2"
+ClientId="......."
+ClientSecret="......."
+

Note that you need to provide your own ClientId and ClientSecret +parameters that you obtain from Dropbox. Refer to the following page +for the Dropbox-specific instructions: +https://www.dropbox.com/lp/developers/reference/oauth-guide

3B. Google Drive:

[ExternalStorages:OAuth2:GoogleDrive]
+AuthorizationUri="https://accounts.google.com/o/oauth2/v2/auth"
+TokenUri="https://oauth2.googleapis.com"
+ClientId="......"
+ClientSecret="......"
+Scope="https://www.googleapis.com/auth/drive.file"
+

Note that you need to provide your own ClientId and ClientSecret +parameters that you obtain from Google.

3C. Microsoft OneDrive:

AuthorizationUri="https://login.microsoftonline.com/common/oauth2/v2.0/authorize"
+TokenUri="https://login.microsoftonline.com/common/oauth2/v2.0"
+ClientId="......"
+ClientSecret="......"
+Scope="files.readwrite.all offline_access"
+

Note that you need to provide your own ClientId and ClientSecret parameters +that you obtain from Microsoft.

  1. Restart the server if you’ve made these changes when it was started. +The next time an HQ-user or admin visits the data export page, he will +see the options to export to the cloud storages that were set up.
\ No newline at end of file diff --git a/headquarters/config/db-connection-errors/images/db_connection_error.png b/headquarters/config/db-connection-errors/images/db_connection_error.png new file mode 100644 index 00000000..cbb6d704 Binary files /dev/null and b/headquarters/config/db-connection-errors/images/db_connection_error.png differ diff --git a/headquarters/config/db-connection-errors/images/db_connectivity.png b/headquarters/config/db-connection-errors/images/db_connectivity.png new file mode 100644 index 00000000..9506058e Binary files /dev/null and b/headquarters/config/db-connection-errors/images/db_connectivity.png differ diff --git a/headquarters/config/db-connection-errors/index.html b/headquarters/config/db-connection-errors/index.html new file mode 100644 index 00000000..c9300bd7 --- /dev/null +++ b/headquarters/config/db-connection-errors/index.html @@ -0,0 +1,61 @@ +DB connection errors +

DB connection errors

June 23, 2021

The following error may be encountered during the server startup, when it fails +to establish connection to the database server:


Note, that since the message is displayed on a publicly accessible page, it +does not elaborate the specific reason for the problem.

When the server displays the above message, it is incapacitated and the error +needs to be fixed asap. This is especially critical if the server is being +utilized for CAWI surveys, where the respondents following the link in the +invitation will likely be lost if they encounter this message instead of the +survey form to fill out. Also the interviewers will not be able to synchronize +their tablets, neither to submit collected interviews, nor to receive new +assignments. In fact, because the database is storing the information that is +needed to authenticate the users, no activity can be undertaken on the server +that requires authentication.

Survey Solutions users (interviewers, supervisors, headquarters, etc.) cannot +address this problem, since they don’t have direct access to the web server, +nor to the DB server, but only through Survey Solutions program. Note also +that their actions cannot trigger this problem (at least the developers are +not aware of any way of doing this), it must have been caused by something else. +If they encounter this error, they should notify their superiors, elevating +the message to the person who has access to the OS account on the server +(typically the person who has installed the Survey Solutions, who is installing +the updates, or performs other server maintenance).

Hence, fixing this error requires access to the machine where Survey Solutions is +installed, and the database server, which may be located on a different machine.

Conceptually, the problem is in communication between the part that services +the users’ queries (the web server) and the part that stores the data +(the DB server):

As the message instructs, first inspect the Survey Solutions server logs. They +may point to a specific problem, such as the incorrect password or lack of +connectivity.

Next inspect the settings of the server, locate the DB connection string, and +try to connect manually to the PostgreSQL DB server using the same account. When +checking this connectivity, it is important to connect to the DB server +specifically from the Web server, not from any other machine, as the network +topology may imply different routing of queries from internal and external +nodes.

Most common reasons for this problem are:

  • the DB server has been shut down or disconnected from the network, while the +web server is still active;
  • a firewall or other security facility is preventing connectivity from the +web server to the DB server;
  • if this is the first time the Survey Solutions is starting up, check if the +connection string parameters have been entered correctly during the +installation, as typos may have happened while entering the account name, +password or the server address;
  • account changes at the DB server: password has been changed, +permissions/roles changed, account removed or disabled;
  • if the DB server is hosted in the cloud, the cloud account may be +suspended/disabled because of billing or other reasons.

Survey Solutions web server component is programmed to retry the call to the DB +server if such a disruption occurs. The message indicates in how many seconds +such a retry attempt will happen next (219 seconds in the screenshot above).

If the reason for the problem is temporary in nature, and the DB server starts +responding again, then Survey Solutions will pick up that connection and +continue. Still it is recommended to investigate the reason for the disruption.

\ No newline at end of file diff --git a/headquarters/config/demo-server/images/change_your_password.png b/headquarters/config/demo-server/images/change_your_password.png new file mode 100644 index 00000000..215b926d Binary files /dev/null and b/headquarters/config/demo-server/images/change_your_password.png differ diff --git a/headquarters/config/demo-server/index.html b/headquarters/config/demo-server/index.html new file mode 100644 index 00000000..9be49dcb --- /dev/null +++ b/headquarters/config/demo-server/index.html @@ -0,0 +1,23 @@ +Demo server +

Demo server

April 10, 2023

Survey Solutions developers team provides a special demo server equipped with the latest version of the Survey Solutions Headquarters for the users that want to:

  • explore the interface of the software,
  • try different roles,
  • test pre-loading data files,
  • see the new features added in a recent release.

It is important to understand that this server may not be utilized for real survey data collection, because this server is a public server that anyone in the world can access, and also because the demo server is also periodically cleared (erazed), when it accumulates a lot of old surveys or users that are no longer active, usually once a month.

When you are using the demo server, you will start with the headquarters user role, and can create your own supervisors and interviewers, import your own questionnaires, create assignments, conduct and approve interviews, export data.

To access the demo server, in your browser proceed to: +https://demo.mysurvey.solutions +and sign in with the username DemoHQ and password XjQ2gTqFe8.

We ask the users never change the password for this headquarters user on the demo server!!

Please, do not change the password for the above account even if you get a warning from the Chrome browser like the one shown here:

(It is correct that the Chrome detects the password for the user is exposed, but this is exactly the intension to let the users log in.)

We also ask the users not to interfere with each other. If you didn’t create a particular interviewer or supervisor account, don’t touch it, or the work assigned to it.

We also provide miniature sandbox-like PDS (Personal Demo Servers), which can be instantly created from the self-service portal by individual users that prefer no interaction with other users. With PDS you get a control over the administrator account, and can create multiple HQ accounts, observer accounts, or try the Survey Solutions API.

⚠️ Neither the demonstration server above, nor the PDS are intended for real data collection. Set up your own server for data collection.

⚠️ Remember that any data that you upload to the demo server is immediately visible to anyone. Do not upload anything confidential here: no real addresses, phone numbers, credit card numbers, or other sensitive or personally identifying information.

\ No newline at end of file diff --git a/headquarters/config/device-logs/images/DeviceLogs.png b/headquarters/config/device-logs/images/DeviceLogs.png new file mode 100644 index 00000000..6c59221e Binary files /dev/null and b/headquarters/config/device-logs/images/DeviceLogs.png differ diff --git a/headquarters/config/device-logs/images/SendLogs2.png b/headquarters/config/device-logs/images/SendLogs2.png new file mode 100644 index 00000000..f91d7c30 Binary files /dev/null and b/headquarters/config/device-logs/images/SendLogs2.png differ diff --git a/headquarters/config/device-logs/index.html b/headquarters/config/device-logs/index.html new file mode 100644 index 00000000..b4a19323 --- /dev/null +++ b/headquarters/config/device-logs/index.html @@ -0,0 +1,21 @@ +Device Logs +

Device Logs

March 18, 2021

Survey Solutions contains a built-in mechanism for logging the problems and transmitting the log data from tablets to the HQ server. This helps to investigate the issues where the interviewers can not supply any detailed problem report and commonly describe the problem with “it doesn’t work” or “it crashes” and it is difficult or not possible to access the device directly.

The information contained in the device logs is rather technical and should be interpreted by IT personnel or software developers. If you are looking for a description of activities undertaken by an interviewer, rather than solving a technical problem, then the Interviewer Actions Log must be used instead.

On the tablet

To obtain the device logs the interviewer should proceed to the Menu -> Diagnostics -> Send trace logs (which is option #3 in the article describing the Diagnostics page).

Internet connectivity is required to transmit the device logs to the server.

On the server

The trace logs sent from other devices are available to the server administrator, who can access them from MenuServer Administration → click particular workspace name → Device logs:

The table contains the device identifier (visible on the tablet in the Settings Dialog), name (if available) and date/time when the logs package was sent.

Note that the user name may be missing, as the logs may be sent even before the user has successfully logged in.

The table is sortable by any of the columns. Click on the column header to sort.

To download the device logs, click on a particular row and select Download from the menu that appears.

Device log example

Each device log is a zip-archive, which contains one or more files with a description of various actions, error messages, etc which occurred on the tablet (whether or not the interviewer was explicitly notified about them). These are text files and can be opened with a text editor to inspect their contents. You can do so before sending the files if requested so by the development team.

Note:

Exactly the same device logs are also contained in tablet information packages (support packages).
If you’ve already received a tablet information package there is usually no need to retrieve the device logs separately.
\ No newline at end of file diff --git a/headquarters/config/docker/index.html b/headquarters/config/docker/index.html new file mode 100644 index 00000000..3596eb2f --- /dev/null +++ b/headquarters/config/docker/index.html @@ -0,0 +1,55 @@ +Deployment with Docker +

Deployment with Docker

January 24, 2023

You can install and run Survey Solutions Headquarters using our official Docker image.

Prerequisite

Survey Solutions container can be executed on any hosting system that is capable of running linux/amd64 containers. +Please refer to docker documentation page on how to install Docker for Your operating system - https://docs.docker.com/get-docker

Survey Solutions has linux based container image and cannot be run in Windows Containers. To run Survey Solutions in Docker on Windows you will need WSL2

You still need to have PostgreSQL server running, there is an example on doing it using docker with docker-compose.

Run Survey Solutions

Note: If you are on a Linux system, you might need to add sudo before the commands.


+docker run -p 80:80 --name hq \
+    -e "HQ_Headquarters__TenantName=hq" \
+    -e "HQ_Headquarters__BaseUrl=http://localhost" \
+    -e "HQ_ConnectionStrings__DefaultConnection=Persist Security Info=true;Server=db;Port=5432;User Id=postgres;Password=pg_password;Database=SurveySolutions" \
+    surveysolutions/surveysolutions:latest
+

HQ_Headquarters__TenantName is required env variable in this release, this setting will be optional in future +HQ_ConnectionStrings__DefaultConnection Connection String to Postgres instance. For parameters documentation refer to documentation

Volumes

Survey Solutions has two usages of file system that should be persisted: interview binary data (images) and logs.

Docker provide quite a lot of options on how to handle persitent data. To preserve Survey Solutions data You must map local folder into container or use Docker Volumes.

All images uploaded to HQ during interviews are stored in /app/AppData folder.

Using docker volumes

docker create volume hq_data
+docker create volume data_protection
+
+docker run -p 80:80 --name hq \
+    -e "HQ_Headquarters__TenantName=hq" \
+    -e "HQ_Headquarters__BaseUrl=http://localhost" \
+    -e "HQ_ConnectionStrings__DefaultConnection=Server=db;Port=5432;User Id=postgres;Password=pg_password;Database=SurveySolutions" \
+    -v "hq_data:/app/AppData" \
+    surveysolutions/surveysolutions:latest
+

Using local folder

docker run -p 80:80 --name hq \
+    -e "HQ_Headquarters__TenantName=hq" \
+    -e "HQ_Headquarters__BaseUrl=http://localhost" \
+    -e "HQ_ConnectionStrings__DefaultConnection=Server=db;Port=5432;User Id=postgres;Password=pg_password;Database=SurveySolutions" \
+    -v "./data/app:/app/AppData" \
+    surveysolutions/surveysolutions:latest
+

SSL

It is possible to run Survey Solutions with SSL in Docker. You can refer to Microsoft documentation on how to run in docker with HTTPS - https://docs.microsoft.com/en-us/aspnet/core/security/docker-compose-https?view=aspnetcore-3.1

Following configuration can be provided to Survey Solutions with enviroment variables

Environment variables:

  • -e ASPNETCORE_URLS=https://+:443;http://+:80
  • -e ASPNETCORE_Kestrel__Certificates__Default__Path=/ssl/cert.pfx - path to SSL certificate inside docker
  • -e ASPNETCORE_Kestrel__Certificates__Default__Password - password for PFX certificate

Volume:

  • -v ./path/to/ssl.pfx:/ssl/cert.pfx

Ports

  • -p 80:80
  • -p 443:443

Full example with SSL

Assume that certificate is located in folder /srv/hq/.ssl/cert.pfx with password password

docker run -p 80:80 -p 443:443 --name hq \
+    -e "HQ_Headquarters__TenantName=hq" \
+    -e "HQ_Headquarters__BaseUrl=https://mysurvey.example.com" \
+    -e "HQ_ConnectionStrings__DefaultConnection=Server=192.168.192.72;Port=5432;User Id=postgres;Password=Qwerty1234;Database=SurveySolutions" \
+    -e "ASPNETCORE_URLS=https://+:443;http://+:80" \
+    -e "ASPNETCORE_Kestrel__Certificates__Default__Path=/ssl/cert.pfx" \
+    -e "ASPNETCORE_Kestrel__Certificates__Default__Password=password" \
+    -v "/srv/hq/hq_data/app:/app/AppData" \
+    -v "/srv/hq/.ssl/cert.pfx:/ssl/cert.pfx" \
+    surveysolutions/surveysolutions:latest
+

Docker-compose

Typing all those docker run parameters can be quite error prone. We provide a template for sample repository for running Survey Solutions with docker-compose in this repository https://github.com/surveysolutions/docker-compose.

While running Postgres instance in docker is viable solution, we strongly recommend to run PostgreSQL in separate server or use “managed” solutions provided by cloud providers(i.e. Amazon RDS, Azure Database for PostgreSQL, Google Cloud SQL, etc…)

Required configuration settings

There is several required configuration that You should be aware of to run in Docker.

  • HQ_Headquarters__TenantName is required in Survey Solution as of version v20.10. There is no visual features linked to this configuration. Will be dropped in future versions.
  • HQ_ConnectionStrings__DefaultConnection - connection string to Postgres database instance
  • HQ_Headquarters__BaseUrl - Base URL for HQ. Used in Web mode and emails.
  • HQ_Logging__LogsLocation: /app/AppData/logs can be configured to specify logs locations
  • Export_ExportSettings__DirectoryPath: /app/AppData/Export to preserve data export artifacts

Updating Survey Solutions

  • Stop docker container with Survey Solutions
  • Run docker pull surveysolutions/surveysolutions
  • Restart docker container
\ No newline at end of file diff --git a/headquarters/config/export-service/images/services.png b/headquarters/config/export-service/images/services.png new file mode 100644 index 00000000..be921bb6 Binary files /dev/null and b/headquarters/config/export-service/images/services.png differ diff --git a/headquarters/config/export-service/index.html b/headquarters/config/export-service/index.html new file mode 100644 index 00000000..68a86b6d --- /dev/null +++ b/headquarters/config/export-service/index.html @@ -0,0 +1,26 @@ +Export Service +

Export Service

August 12, 2020

Version 20.08 and newer

Version 20.08 is delivered with export service embedded within Headquarters application. No separate windows service is installed in the system, only IIS website. All the information regarding startup of export you can find in logs folder. You still need to have BaseUrl configured properly, but no need to manage ExportServiceUrl configuration.

Version 20.07 and older

Survey solutions comes in two parts. Headquarters user facing web application (usually executed within IIS web server) and Export background windows service. Web site is communicating with its export service using HTTP protocol and specified in settings port. If you open your appsettings.Production.ini file you can find two URLs that are important for export service:

[Headquarters]
+BaseUrl=http://localhost:9700
+[DataExport]
+ExportServiceUrl=http://localhost:5000
+

Export service is working, but fails to export data

When user requests export on data export page headquarters app sends HTTP request using DataExport:ExportServiceUrl configuration option to generate export. Part of this request is a headquarters app URL for export service to use when getting interview data. Back url that is sent to export service is configured in Headquarters:BaseUrl configuration option. Check if you can open headquarters application using configured url.

Export service unavailable

In order to check if export service is currently running you can open specified in configuration URL and append /.hc at the end. In default installation you should try opening http://localhost:5000/.hc url on machine where survey solutions is installed. If you see a single message saying Healthy it means export service is running.

If you don’t see a healthy status you should open services list (Press the Win + R keys on your keyboard, to open the Run window. Then, type “services.msc” and hit Enter or press OK) and find Survey Solutions Export Service +Survey Solutions Export service

It should be in running status.

Reasons why export service cannot be launched can be found in Survey solutions installation / logs folder.

\ No newline at end of file diff --git a/headquarters/config/farm-export/images/nodes1.png b/headquarters/config/farm-export/images/nodes1.png new file mode 100644 index 00000000..49f45d10 Binary files /dev/null and b/headquarters/config/farm-export/images/nodes1.png differ diff --git a/headquarters/config/farm-export/images/nodes2.png b/headquarters/config/farm-export/images/nodes2.png new file mode 100644 index 00000000..a83decc7 Binary files /dev/null and b/headquarters/config/farm-export/images/nodes2.png differ diff --git a/headquarters/config/farm-export/images/nodes3.png b/headquarters/config/farm-export/images/nodes3.png new file mode 100644 index 00000000..2cb1297d Binary files /dev/null and b/headquarters/config/farm-export/images/nodes3.png differ diff --git a/headquarters/config/farm-export/images/nodes4.png b/headquarters/config/farm-export/images/nodes4.png new file mode 100644 index 00000000..ab44cccf Binary files /dev/null and b/headquarters/config/farm-export/images/nodes4.png differ diff --git a/headquarters/config/farm-export/index.html b/headquarters/config/farm-export/index.html new file mode 100644 index 00000000..6aeb6e94 --- /dev/null +++ b/headquarters/config/farm-export/index.html @@ -0,0 +1,26 @@ +Configuring Export in a Survey Solutions Server Farm +

Configuring Export in a Survey Solutions Server Farm

March 13, 2024

Massive operations involving millions of respondents present considerable load on the infrastructure servicing the requests where Survey Solutions is deployed. This results in server administrators finding themselves in a situation where they need to scale up the infrastructure to ensure the system remains reliable and responsive. Such situations are neither new, nor specific to Survey Solutions software, but merely reflect the peaks in demand for resources that may fluctuate depending on the time of day, impact of ad campaigns, and other factors.

Most users (that start with a typical configuration of one web server and one database server) very quickly realize that scaling up and expanding their web servers capacity eliminates some of the critical bottlenecks.

As the operation continues to grow, or experiences higher shocks, the administrator can introduce more and more of the web server nodes to compensate for higher demand. Notably, some cloud-based systems allow for automatic expansion of the number of the server nodes when certain conditions are met. Yet for larger operations the export operation does not benefit much from the expansion of the number of web server nodes. The performance of the server farm at data export operation will still be limited by the performance of a single node producing the export.

One is tempted to introduce new, larger/higher-performing nodes into the pool of the servers in an attempt to boost the export performance, but this improvement is prone to an issue that any of the nodes may start processing export jobs, and thus the larger node will have roughly q/n probability to handle export operations (where n is total number of nodes, and q is the number of higher performing nodes).

Rather than manipulating the number of nodes, one needs to tell Survey Solutions nodes whether they are responsible for production of the export data or not. This can be done with the help of the IsReadOnly flag in the section [Job] of the appsettings.production.ini configuration file (requires Survey Solutions version 23.09.4 or newer).


+[Job]
+IsReadOnly=true
+

The default value of this flag (if not specified) is false, meaning the node is not in the state preventing it from processing export jobs. In other words, at default configuration the node is participating in the pool of the nodes that are eligible for processing data export jobs. But this flag can be raised to true, indicating that even when this node sees an upcoming export job, it will not take action, allowing other nodes to process it. The strategy is to delegate handling the export jobs to the highest performing node(s) only, while designating all other notes to be in the readonly state in the farm (marked orange in the diagram below):

This strategy guarantees that when a new export job is posted it will be handled by a more productive node, while other nodes continue servicing other requests in parallel.

Note that:

  1. The concept of read only here is meant with respect to export jobs. Nodes marked as IsReadOnly=true can still handle POST requests, such as to receive data from interviewers’ synchronization streams, or answers submitted by web respondents.

  2. Regardless of the typology of nodes involved in the farm, they should share a common storage, which is regulated by the key AppData of the [FileStorage] section of the appsettings.production.ini file and this storage should not be affected by raising and dismantling the dynamic nodes.


+[FileStorage]
+AppData=\\NetStore\AppData
+
\ No newline at end of file diff --git a/headquarters/config/healthcheck/images/calculating_metrics.png b/headquarters/config/healthcheck/images/calculating_metrics.png new file mode 100644 index 00000000..0f865acf Binary files /dev/null and b/headquarters/config/healthcheck/images/calculating_metrics.png differ diff --git a/headquarters/config/healthcheck/images/healthcheck_overview_annotated.png b/headquarters/config/healthcheck/images/healthcheck_overview_annotated.png new file mode 100644 index 00000000..dd866a10 Binary files /dev/null and b/headquarters/config/healthcheck/images/healthcheck_overview_annotated.png differ diff --git a/headquarters/config/healthcheck/images/ping-pong.png b/headquarters/config/healthcheck/images/ping-pong.png new file mode 100644 index 00000000..abdd5c80 Binary files /dev/null and b/headquarters/config/healthcheck/images/ping-pong.png differ diff --git a/headquarters/config/healthcheck/index.html b/headquarters/config/healthcheck/index.html new file mode 100644 index 00000000..a6cd4de6 --- /dev/null +++ b/headquarters/config/healthcheck/index.html @@ -0,0 +1,67 @@ +Healthcheck +

Healthcheck

April 27, 2023

Survey Solutions server administrator has access to the special healthcheck +page using the following: menuAdministrationDiagnostics.

The health check diagnostics page shows:

  1. Overall server health status.
  2. Results of diagnostic checks.
  3. Server metrics.
  4. Statistics by workspace of the server.

Overall server health check

The following can be the statuses for the healthcheck:

  • Healthy (green) - export service is responding and can access headquarters;
  • Degraded (yellow) - export service is not answering;
  • Unhealthy (red) - export service cannot access headquarters;

Results of diagnostic checks.

These are the diagnostic checks related to server configuration: whether the +settings are set up correctly and the different components are able to talk +to each other. Most of these settings are taken from the application +configuration file, which is modified during the server post-installation +configuration.

Server metrics.

Server metrics characterize the server performance and workload, such as the +CPU load, memory usage, number of concurrent queries, or the database footprint.

  • CPU usage the higher the value, the more busy the server is. Values close +to 100% indicate that the server may be inadequate for the survey operation, +which may result in requests not being addressed.

  • Working memory usage reports the consumption of memory (in GB). If this +value approaches the physical amount of memory expanding the memory may +improve the overall performance of the server.

  • Database size indicates overall DB footprint (estimation). Watch for the +growth of the DB footprint especially on the systems that impose limits on the +growth of the DB, such as RDS instances in AWS and other cloud-based providers.

  • Web interview connections reflects the number of concurrent web interview +sessions (includes the review of completed interviews by the supervisors/HQ +users, etc).

  • Stateful interviews in cache reflects the dynamics of the interviews cache, +which expedites access to the contents of the interviews, such as when the +interview is opened by several users.

  • Exceptions count reflects the number of exceptions experienced by the +server software. Review the Survey Solutions server logs if this number is +positive.

  • Database connections shows the number of connections from the Survey +Solutions web server to the DB server (refer to PostgreSQL documentation +).

  • Database network usage reflects the read/write traffic between the web +server and the DB server.

  • Requests indicates the rate of requests to the server (in requests per +second).

Statistics by workspace of the server

For each workspace it reports:

  • number of interviews, number of events and the corresponding size of the +events database;
  • size of the workspace data;
  • number of emails regarding the completion of interviews in the sending +queue currently.

Database-related metrics are as reported by Postgres and are based on estimation.

Please note that calculating server metrics may take some time. During the +calculation the healthcheck page will show:

Server administrators are requested to inspect the indications of this panel for +common problems before bringing them up to the support.

Under proper configuration all the checks in the health check page should +pass in green. The number of broken packages may become positive due to +miscoordination between the interviewers and supervisors (e.g. the same +interview rejected to two different interviewers) even under normal work.

Remote monitoring

The overall healthcheck status is available for monitoring remotely (without +authorization) at the following URL: https://your.server.name/.hc the response +to which contains exactly one word: “Healthy”, “Degraded”, or “Unhealthy”.

For example, for the publicly available demo server the healthcheck status +URL is: https://demo.mysurvey.solutions/.hc

WebSocket connectivity check

Following the server metrics the healthcheck page shows the process of testing +the WebSocket connectivity. Under the normal operation the user should observe +a sequence of PING and PONG messages with an interval of about 1-3 seconds. If +only PING messages are observed and no PONG responses are received, then the +server is experiencing a disruption in the WebSocket connectivity. This +connectivity is necessary for SignalR, +which is utilized in Survey Solutions to conduct web interviews and allow the +supervisors/HQ-users to review the interviews on the server.


The WebSockets test is only informative if ran from an external network +(from the internet). When run directly on the server it will indicate +availability of WebSockets, yet the real user experience may be different.

Note also that the PING-PONG communication here may indicate that a response +has been received, but not over the WebSockets, but rather using LongPolling. +This is not sufficient for Survey Solutions. Make sure the test succeeds in +communication specifically over WebSockets.
\ No newline at end of file diff --git a/headquarters/config/index.html b/headquarters/config/index.html new file mode 100644 index 00000000..bc9f327d --- /dev/null +++ b/headquarters/config/index.html @@ -0,0 +1,51 @@ +Setup and Configuration +

Setup and Configuration

Workspace Settings

Survey Solutions server administrator +may adjust the workspace settings. These settings affect simultaneously all +surveys and all users in a particular workspace on the server and have the effect +immediately when applied.

These settings are visible only to the user logged in in an administrative role +and can be accessed from:

  • for the current workspace: MenuSettingsWorkspace settings.
  • for any other workspace: MenuAdministration → click particular workspace name → Settings.

Export Encryption

This group of settings contains settings that control the encryption of the data +archive produced when exporting the data from Survey Solutions.

June 5, 2024

Server Installation

Installation has following steps:

  1. Installing PostgreSQL
  2. Installing SurveySolutions
  3. Post installation configuration

Installing PostgreSQL

Make sure that you have an installed and running instance of PostgreSQL +before running SurveySolutions.exe

You can download PostgreSQL from +here and run the setup. Pick +the latest stable version (note: Survey Solutions will not work with PostgreSQL +prior to version 10.0).

During the process you’ll set the password for the database superuser:

March 14, 2024

Configuring Export in a Survey Solutions Server Farm

Massive operations involving millions of respondents present considerable load on the infrastructure servicing the requests where Survey Solutions is deployed. This results in server administrators finding themselves in a situation where they need to scale up the infrastructure to ensure the system remains reliable and responsive. Such situations are neither new, nor specific to Survey Solutions software, but merely reflect the peaks in demand for resources that may fluctuate depending on the time of day, impact of ad campaigns, and other factors.

March 13, 2024

Procedures for maintenance

This page contains an outline of procedures that you may need to perform as instructed by developers. Please, pay attention to the steps and record the values and messages as instructed.

PROCEDURE B1

On the tablet:

  1. Make sure you are logged out of the Interviewer application.
  2. Reboot the tablet.
  3. Start the Interviewer App.
  4. Log in as interviewer,
  5. Send to the person providing assistance (see bullets 3, 4, and 6 here):
  • the interviewer trace logs,
  • all tablet information, and
  • all technical information.

Interviewer trace logs shall be picked by the server administrator by visiting the corresponding server administration page: device logs.

October 11, 2023

Healthcheck

Survey Solutions server administrator has access to the special healthcheck +page using the following: menuAdministrationDiagnostics.

The health check diagnostics page shows:

  1. Overall server health status.
  2. Results of diagnostic checks.
  3. Server metrics.
  4. Statistics by workspace of the server.

Overall server health check

The following can be the statuses for the healthcheck:

  • Healthy (green) - export service is responding and can access headquarters;
  • Degraded (yellow) - export service is not answering;
  • Unhealthy (red) - export service cannot access headquarters;

Results of diagnostic checks.

These are the diagnostic checks related to server configuration: whether the +settings are set up correctly and the different components are able to talk +to each other. Most of these settings are taken from the application +configuration file, which is modified during the server post-installation +configuration.

April 27, 2023

Demo server

Survey Solutions developers team provides a special demo server equipped with the latest version of the Survey Solutions Headquarters for the users that want to:

  • explore the interface of the software,
  • try different roles,
  • test pre-loading data files,
  • see the new features added in a recent release.

It is important to understand that this server may not be utilized for real survey data collection, because this server is a public server that anyone in the world can access, and also because the demo server is also periodically cleared (erazed), when it accumulates a lot of old surveys or users that are no longer active, usually once a month.

April 10, 2023

Server storage space

This article explains the importance of adequate storage space for a Survey Solutions server.

Survey Solutions saves a lot of data. Database sizes in the size of tens +of GBs are commonly observed even in small surveys. Population censuses may +consume TBs of data.

Survey Solutions stores the data:

  • in the database and
  • in files on file system of the server.

It is crucial that the system doesn’t run out of storage for its continuous and +reliable operation.

April 5, 2023

Deployment with Docker

You can install and run Survey Solutions Headquarters using our official Docker image.

Prerequisite

Survey Solutions container can be executed on any hosting system that is capable of running linux/amd64 containers. +Please refer to docker documentation page on how to install Docker for Your operating system - https://docs.docker.com/get-docker

Survey Solutions has linux based container image and cannot be run in Windows Containers. To run Survey Solutions in Docker on Windows you will need WSL2

January 24, 2023

Support tool

Survey Solutions comes with a built-in support tool that can be used in special situations:

  • where an action needs to be taken programmatically;
  • where an action may not be taken through the web interface.

The support tool is being called via a command line (while being in the directory where Survey Solutions is installed), we type:

WB.UI.Headquarters.exe manage ...
+

followed by one of the following commands:

November 25, 2021

PDS password reset

How can I reset a password for a PDS should I forget it?

If you forget your password for the demo server, you can reset it, by +right-clicking the server name, and selecting the Request password reset +menu item in the self-service portal. +The new password will be automatically generated and sent to your email. +The older password will no longer be valid.

How do I know that a new password has been sent to me?

Password reset requests for PDS servers are processed automatically and +the new password usually arrives within minutes after the request is +submitted. You will see a notification of the password reset in the +Notifications section of the self-service portal. When you see the +notification this means that our system has processed your request, +and sent out the new password. The notification as you see it in the +portal will not show the actual password value, but rather it is covered +with asterisks (a star-character: * ). The actual password can only be +retrieved from the message you receive in your mailbox. It cannot be seen in the portal. It is not known to our support staff.

August 26, 2021
\ No newline at end of file diff --git a/headquarters/config/installer-command-line/index.html b/headquarters/config/installer-command-line/index.html new file mode 100644 index 00000000..f2bf11d8 --- /dev/null +++ b/headquarters/config/installer-command-line/index.html @@ -0,0 +1,23 @@ +Installer Command Line Parameters +

Installer Command Line Parameters

May 11, 2020

Survey Solutions installer may be launched with command line parameters.

ParameterMeaningExampleDefault
Siteportport number on which the site shall be installed in IIS80809700
Connserverpart of the DB connection string identifying the address of the database serverdata.warehouse.com127.0.0.1
Connportpart of the DB connection string identifying the port of the database server4435432
Connusernameuser name for connection to the DBjohnsmithpostgres
Connpasswordpassword for connection to the DBMyPassword911
Installfolderfull installation path where the Survey Solutions server should be installedC:\World Bank\Survey SolutionsC:\Survey Solutions
Additionally, specify /s for a silent install.

Example:

Install to directory D:\SuSo\ silently and bind Survey Solutions site to port 8080 in IIS:


+SurveySolutions.exe /s Installfolder=D:\SuSo Siteport=8080
+
\ No newline at end of file diff --git a/headquarters/config/page/1/index.html b/headquarters/config/page/1/index.html new file mode 100644 index 00000000..0c2830bd --- /dev/null +++ b/headquarters/config/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/ + \ No newline at end of file diff --git a/headquarters/config/page/2/index.html b/headquarters/config/page/2/index.html new file mode 100644 index 00000000..027e8084 --- /dev/null +++ b/headquarters/config/page/2/index.html @@ -0,0 +1,141 @@ +Setup and Configuration +

Setup and Configuration

Personal Demo Server

Survey Solutions users may familiarize themselves with the +Headquarters/Admin functionality using a personal demo server (PDS).

Personal demo servers are managed through the self-service +portal. +You start by submitting a corresponding request. +Before you proceed, make sure you understand the purpose and +limitations of the PDS:

  • Every Survey Solutions user may request one PDS.
  • There are no forms to fill and the server becomes available shortly after the request is submitted.
  • The address of the server is https://username-demo.mysurvey.solutions +and cannot be changed.
  • The server and all stored data will be automatically deleted 30 days after it was created.
  • A PDS may not be extended, but can be requested again after it expires.
  • We do not do backups of data stored on PDS and there is no possibility for any data recovery after the site has been stopped (all content is deleted immediately).
  • Once a PDS is created for a user, it may not be transferred to another user.

The objective of a PDS is to give the user a playground to study and experiment +and not to collect any real survey data. In fact the PDS are configured to +handle only minimal workloads (approx 1,000 interviews).

July 19, 2021

Data Server Errors

The following errors may be encountered when working with a data server:

1. “Unable to import new questionnaire: Could not connect to Designer. Please check if Designer is available and try again."

Your Headquaters installation is trying to contact the Survey Solutions Designer server to import the questionnaire, but can’t reach it. It is very unlikely that the Designer is not responding or is not working read how to check here so the problem is most likely with your network configuration. Consult your network administrator and ask him/her to trace the signal and see where it stops. Most commonly it is prevented by your Firewall software or hardware.

June 23, 2021

DB connection errors

The following error may be encountered during the server startup, when it fails +to establish connection to the database server:


Note, that since the message is displayed on a publicly accessible page, it +does not elaborate the specific reason for the problem.

When the server displays the above message, it is incapacitated and the error +needs to be fixed asap. This is especially critical if the server is being +utilized for CAWI surveys, where the respondents following the link in the +invitation will likely be lost if they encounter this message instead of the +survey form to fill out. Also the interviewers will not be able to synchronize +their tablets, neither to submit collected interviews, nor to receive new +assignments. In fact, because the database is storing the information that is +needed to authenticate the users, no activity can be undertaken on the server +that requires authentication.

June 23, 2021

AWS setup

Installation of Survey Solutions on Amazon AWS

The installation consists of the following steps:

  1. Create security group for web server and RDS to be able to communicate
  2. Create PostgreSQL instance
  3. Create EC2 instance for running Survey Solutions
  4. Install Survey Solutions

Create security group

In order to have connection between Survey Solutions and PostgreSQL you can create new security group as described in here.

May 31, 2021

Configuring export to external cloud storage.

Survey Solutions may be configured to export data to major international +cloud storage providers:

  • DropBox
  • Google Drive
  • Microsoft OneDrive

To enable export to the external storages the following configuration +changes need to be done to the configuration file appsettings.Production.ini:

  1. Add section:
[ExternalStorages:OAuth2]
+RedirectUri="https://YOURSERVERNAME/data-export-storages.html"
+ResponseType="code"
+

Note that you need to substitute-in your server name in the RedirectUri +parameter.

  1. Decide which external storages you want to make available to the users of +your server (this is shared across all workspaces) from the above mentioned +list of cloud providers.

    April 29, 2021

Support packages

Support packages are also known as tablet information packages. These +terms are used interchangeably in this documentation.

Survey Solutions contains a built-in mechanism for collecting the data from +tablets and transmitting it to the HQ server. This helps to investigate the +issues where the interviewers can not supply any detailed problem report and +commonly describe the problem with “it doesn’t work” or “it crashes” and +it is difficult or not possible to access the device directly.

March 18, 2021

Device Logs

Survey Solutions contains a built-in mechanism for logging the problems and transmitting the log data from tablets to the HQ server. This helps to investigate the issues where the interviewers can not supply any detailed problem report and commonly describe the problem with “it doesn’t work” or “it crashes” and it is difficult or not possible to access the device directly.

The information contained in the device logs is rather technical and should be interpreted by IT personnel or software developers. If you are looking for a description of activities undertaken by an interviewer, rather than solving a technical problem, then the Interviewer Actions Log must be used instead.

March 18, 2021

Survey Solutions Server

This article describes the main steps to setup your own +Survey Solutions server.

  • Study the requirements for a server. +These requirements are minimal and may be periodically revised. +Your survey may require a different hardware configuration. +You may need to calibrate for a few months before the survey +to determine the optimal configuration.

  • Follow the installation instructions +to install the prerequisites and the Survey Solutions itself.

    November 20, 2020

Azure setup

Installation of Survey Solutions on Microsoft Azure

In order to install - register on azure portal and login. Installation steps are going to use azure shell.

After loggedin into azure shell execute command with variables that are going to be needed later. Feel free to change them as you need:

RG=surveysolutions \
+LOC=westeurope \
+STOREACC=surveysolutions \
+SHARE_NAME=surveysolutions \
+PGSERVER=suso-postgres \
+PGPASS=password \
+WEBAPPNAME=surveysolutions-webapp \
+SRVPLAN=AppSvc-SurveySolutions-plan
+
+            November 5, 2020
+        
+ +
+

+ Export Service +

+

Version 20.08 and newer

+

Version 20.08 is delivered with export service embedded within Headquarters application. No separate windows service is installed in the system, only IIS website. All the information regarding startup of export you can find in logs folder. You still need to have BaseUrl configured properly, but no need to manage ExportServiceUrl configuration.

+

Version 20.07 and older

+

Survey solutions comes in two parts. Headquarters user facing web application (usually executed within IIS web server) and Export background windows service. Web site is communicating with its export service using HTTP protocol and specified in settings port. If you open your appsettings.Production.ini file you can find two URLs that are important for export service:

+ August 12, 2020 +
+ + + + + +
+
+
+
+ + + + + + + + + + + + + + diff --git a/headquarters/config/page/3/index.html b/headquarters/config/page/3/index.html new file mode 100644 index 00000000..4741826c --- /dev/null +++ b/headquarters/config/page/3/index.html @@ -0,0 +1,31 @@ +Setup and Configuration +

Setup and Configuration

Installer Command Line Parameters

Survey Solutions installer may be launched with command line parameters.

ParameterMeaningExampleDefault
Siteportport number on which the site shall be installed in IIS80809700
Connserverpart of the DB connection string identifying the address of the database serverdata.warehouse.com127.0.0.1
Connportpart of the DB connection string identifying the port of the database server4435432
Connusernameuser name for connection to the DBjohnsmithpostgres
Connpasswordpassword for connection to the DBMyPassword911
Installfolderfull installation path where the Survey Solutions server should be installedC:\World Bank\Survey SolutionsC:\Survey Solutions
Additionally, specify /s for a silent install.

Example:

Install to directory D:\SuSo\ silently and bind Survey Solutions site to port 8080 in IIS:

May 11, 2020

Alternative maps for servers in China

Survey Solutions map reports at the data server utilize maps provided by Google +through their online service. The installation sets the parameters regulating +access to this service with the parameters applicable to the majority of users, +but these servers are known to be inaccessible from the networks in China.

To enable access to Google maps from China, a different server, specific to +China, must be used. The following two parameters should be changed in the +GoogleMap section in appsettings.Production.ini configuration file of the +Survey Solutions server:

May 6, 2020

Changing the Interface Language

Survey Solutions interface for Headquarter and Supervisor users can be +presented in different languages. This article describes how to switch +the interface to be presented in an alternative language.

Recall that both HQ and Supervisor users work via a web browser. +Switching the interface is done by telling the browser to request the +content in a particular language. Note that this affects both Survey +Solutions and other sites that are visited with the same browser.

June 16, 2016
\ No newline at end of file diff --git a/headquarters/config/pds-password-reset/images/pds_password_reset.png b/headquarters/config/pds-password-reset/images/pds_password_reset.png new file mode 100644 index 00000000..a90f346c Binary files /dev/null and b/headquarters/config/pds-password-reset/images/pds_password_reset.png differ diff --git a/headquarters/config/pds-password-reset/index.html b/headquarters/config/pds-password-reset/index.html new file mode 100644 index 00000000..bf39bc74 --- /dev/null +++ b/headquarters/config/pds-password-reset/index.html @@ -0,0 +1,38 @@ +PDS password reset +

PDS password reset

August 26, 2021

How can I reset a password for a PDS should I forget it?

If you forget your password for the demo server, you can reset it, by +right-clicking the server name, and selecting the Request password reset +menu item in the self-service portal. +The new password will be automatically generated and sent to your email. +The older password will no longer be valid.

How do I know that a new password has been sent to me?

Password reset requests for PDS servers are processed automatically and +the new password usually arrives within minutes after the request is +submitted. You will see a notification of the password reset in the +Notifications section of the self-service portal. When you see the +notification this means that our system has processed your request, +and sent out the new password. The notification as you see it in the +portal will not show the actual password value, but rather it is covered +with asterisks (a star-character: * ). The actual password can only be +retrieved from the message you receive in your mailbox. It cannot be seen in the portal. It is not known to our support staff.

I don’t find the message with a new password. What can I do next?

Please check your mailbox. Please see if you have any rules that sort +messages by folders, bounce-back the messages, etc. Please check your spam folder.

Your email account may be managed by your organization. Consult your net-mail +administrator if you are having troubles with your email account.

If you determine that the message was not received because your mailbox was +full or for other similar reason, you can request the PDS password reset again.

Make sure that you are checking the correct mailbox if you have multiple.

Removing your PDS

If you wish to remove the personal demonstration server (with all content) +earlier than 30 days after it was created, select the corresponding +Remove server option. This will immediately stop the server and dispose of all collected data.

Otherwise (if you don’t request removal of the PDS) it will cease to exist at the due date automatically.

Disposing of the PDS does not affect the questionnaires templates stored in the Designer site.

After a PDS server is removed, a new PDS can be requested again.

See also: Personal Demo Server

\ No newline at end of file diff --git a/headquarters/config/personal-demo-server/images/server.jpg b/headquarters/config/personal-demo-server/images/server.jpg new file mode 100644 index 00000000..2c515cc0 Binary files /dev/null and b/headquarters/config/personal-demo-server/images/server.jpg differ diff --git a/headquarters/config/personal-demo-server/index.html b/headquarters/config/personal-demo-server/index.html new file mode 100644 index 00000000..4c8660db --- /dev/null +++ b/headquarters/config/personal-demo-server/index.html @@ -0,0 +1,32 @@ +Personal Demo Server +

Personal Demo Server

July 19, 2021

Survey Solutions users may familiarize themselves with the +Headquarters/Admin functionality using a personal demo server (PDS).

Personal demo servers are managed through the self-service +portal. +You start by submitting a corresponding request. +Before you proceed, make sure you understand the purpose and +limitations of the PDS:

  • Every Survey Solutions user may request one PDS.
  • There are no forms to fill and the server becomes available shortly after the request is submitted.
  • The address of the server is https://username-demo.mysurvey.solutions +and cannot be changed.
  • The server and all stored data will be automatically deleted 30 days after it was created.
  • A PDS may not be extended, but can be requested again after it expires.
  • We do not do backups of data stored on PDS and there is no possibility for any data recovery after the site has been stopped (all content is deleted immediately).
  • Once a PDS is created for a user, it may not be transferred to another user.

The objective of a PDS is to give the user a playground to study and experiment +and not to collect any real survey data. In fact the PDS are configured to +handle only minimal workloads (approx 1,000 interviews).

Once you learn how Survey Solutions works on a PDS, you can proceed to learning +about standalone servers +and prepare a server for your data collection operations.

Password reset instructions

\ No newline at end of file diff --git a/headquarters/config/procedures/images/delete_temp_schemas.png b/headquarters/config/procedures/images/delete_temp_schemas.png new file mode 100644 index 00000000..1ecbfa38 Binary files /dev/null and b/headquarters/config/procedures/images/delete_temp_schemas.png differ diff --git a/headquarters/config/procedures/images/event_viewer.png b/headquarters/config/procedures/images/event_viewer.png new file mode 100644 index 00000000..97261ce9 Binary files /dev/null and b/headquarters/config/procedures/images/event_viewer.png differ diff --git a/headquarters/config/procedures/images/header_correct.png b/headquarters/config/procedures/images/header_correct.png new file mode 100644 index 00000000..825383a7 Binary files /dev/null and b/headquarters/config/procedures/images/header_correct.png differ diff --git a/headquarters/config/procedures/images/header_incorrect.png b/headquarters/config/procedures/images/header_incorrect.png new file mode 100644 index 00000000..551f35ab Binary files /dev/null and b/headquarters/config/procedures/images/header_incorrect.png differ diff --git a/headquarters/config/procedures/index.html b/headquarters/config/procedures/index.html new file mode 100644 index 00000000..c73c492c --- /dev/null +++ b/headquarters/config/procedures/index.html @@ -0,0 +1,50 @@ +Procedures for maintenance +

Procedures for maintenance

October 11, 2023

This page contains an outline of procedures that you may need to perform as instructed by developers. Please, pay attention to the steps and record the values and messages as instructed.

PROCEDURE B1

On the tablet:

  1. Make sure you are logged out of the Interviewer application.
  2. Reboot the tablet.
  3. Start the Interviewer App.
  4. Log in as interviewer,
  5. Send to the person providing assistance (see bullets 3, 4, and 6 here):
  • the interviewer trace logs,
  • all tablet information, and
  • all technical information.

Interviewer trace logs shall be picked by the server administrator by visiting the corresponding server administration page: device logs.

Tablet information packages shall be picked by the server administrator by +visiting the corresponding server administration page: +MenuAdministrationTablet information packages +and clicking on the download icon for the corresponding package.

Technical information is sent via any of the means set up on the tablet, which could be an email, messenger, saving as text or otherwise transfer to the station where the output of Procedure B1 is being collected for sending to the person providing assistance.

END OF PROCEDURE B1


PROCEDURE B2.

Procedure B2 shall be performed in English language. Set up your tablet (before step #6) to use English language as the main language of the interface.

  1. Login to the Designer.

  2. Copy public questionnaire “Service-B2” to obtain own copy. +Take a note of how you’ve named this copy: ______________.

  3. Login to your data server (as admin) and import that questionnaire copy (made in previous step).

  4. Create a new interviewer account with any login name and password, and in any team. You can create a new team if necessary to avoid confusion of an existing supervisor. Take a note: +interviewer account login: _____________ password: ______________.

  5. Make one assignment to that interviewer account on the questionnaire imported in #3. Take a note: +assignment id-number created: _______________.

  6. Take a new tablet device. Connect to a WiFi internet connection which is known to be reliable and not manipulated by the ISP.

  7. Install the Interviewer App from your data server to the tablet.

  8. Login with the interviewer account (created in #4) and synchronize.

  9. Make sure the assignment with the id-number recorded in #5 is received on the tablet.

  10. a. If the assignment has not been received in #9: Do Procedure B1. +STOP

  11. b. If the assignment is received in #9: start the interview based on that assignment, take note of the interview key assigned to this interview. +Take a note of the interview key: ___ - ___ - ___ - ___.

  12. Fill out the interview in #10b, mark as complete.

  13. Synchronize the tablet. Make sure the synchronization was successful.

  14. a. If synchronization does not succeed, repeat at least 10 times.

Take a note:

  • synchronization timestamp: YEAR____ MONTH_____ DAY_______ HOUR____ MINUTE____ SECONDS___ TIMEZONE_____________________ .

  • error messages (in full) during unsuccessful synchronization:

_____________________________________________________________ . +_____________________________________________________________ . +_____________________________________________________________ . +_____________________________________________________________ . +_____________________________________________________________ . +_____________________________________________________________ . +_____________________________________________________________ . +_____________________________________________________________ . +_____________________________________________________________ . +_____________________________________________________________ .

If synchronization has not succeeded after 10 attempts, do Procedure B1. +STOP

  1. b. If synchronization does succeed in step #12, continue.

  2. Assert that the interview with interview key assigned in #10b has left the dashboard of the tablet. If it has not, do Procedure B1, then STOP.

  3. Assert that the interview with interview key assigned in #10b has been received at the server. If it has not, do Procedure B1, also include server logs as described in #7 here then STOP.

  4. Open the interview you locate in step #14. +If there is any error message record it below:

________________________________________________________________ .

Regardless at which step you terminated Procedure B2 remember to log out of the admin account at the data server afterwards.

The questionnaire that you’ve imported to the data server at step #3 shall remain until the end of the investigation, and can be subsequently deleted.

The accounts created at step #4 cannot be deleted, but can be locked by the user that created it after completion of Procedure B2.

END OF PROCEDURE B2.


PROCEDURE B3.

Procedure B3 shall be applied when the tablet can not communicate with the server and thus can’t send the logs there.

  1. Turn on the tablet.
  2. Start the Interviewer App. No need to log in.
  3. Open MenuDiagnostics
  4. Click the link Generate support package
  5. Save the resulting file to the tablet storage. Take a note of the file name: ________________________ .
  6. Switch to the tablet’s file browser (may be called Files or otherwise, depending on the brand of the tablet and OS version).
  7. Locate the file saved in step #5.
  8. Send this file to the person providing support (by saving to USB flash, SD-Card, emailing, sending over Bluetooth, or any other feasible means of transfer).

END OF PROCEDURE B3


PROCEDURE C1

This procedure is to be performed when the user obtains an unexplained error 403 "Forbidden" while working with the data server.

  1. Open the browser’s development console (press F12).
  2. Switch to the Network tab.
  3. Refresh the current page (press F5) on which error 403 was obtained.
  4. Select the page document in the Name tab.
  5. Check the server parameter in the Response headers.

The proper value should mention ‘Microsoft-IIS’ for servers hosted in Microsoft IIS on Windows or ‘Kestrel’ for servers hosted in Docker.

Any other server value in this response header is indicative of some other +device or program responding instead of Survey Solutions. Consult your network +administrator regarding this issue.

END OF PROCEDURE C1


PROCEDURE C2: Checking the system log.

This procedure is to be performed when the user seeks for evidence of server +errors not logged in the application log (applicable to Windows-based servers).

This procedure makes use of the +Event Viewer, which is part of +MS Windows operating system.

  1. Log in to the server experiencing the problem.
  2. Press the Windows key.
  3. Type: Event Viewer
  4. When Event Viewer App is suggested, click to start it.
  5. In the Event Viewer interface select Windows Logs, then Application.
  6. Seek for the events with level Error. (Use timestamps as guidance to +navigate to the part of the log close to the occurance of the problem.)
  7. When errors are found, click on each log entry and inspect the information +shown in the General and Details tabs.

Subsequent troubleshooting steps will depend on the kind of errors found in the log.

END OF PROCEDURE C2


PROCEDURE M1. Dropping temporary export schemas

The procedure below may be used in cases when the data export does not succeed, such as when a message appears of “An unexpected error during data export…”. Note that this message may be appearing in different situations and the below listed procedure will not be able to resolve all of them.

Warning:

When performed correctly the procedure is non-destructive, but if performed incorrectly may result in data loss. It is best performed by a qualified person with background in DB-management.
  1. Install pgAdmin if it is not already installed: +https://www.pgadmin.org/
  2. Stop the SurveySolutions site in IIS.
  3. Connect to your database using the same connection string used in installation of Survey Solutions. If you are performing maintenance on somebody else’s server you will find the connection string (including the database name, user login and password) in the appsettings.ini file or inquire from the person who has access to these settings.
  4. Find schemas that start with hq_ followed by a GUID (there may be more than 1 such schema). +Delet temporary schemas
  5. Drop those schemas. If you are asked if you want cascading deletion, answer affirmatively. A third party instruction on deleting schemas in PostgreSQL via commands and using a point-and-click interface of pgAdmin is available at this external site.

Warning:

Do not delete any other schemas, or your data will be lost.

Only delete schemas starting with hq_ and ending with a 32-hexdigit GUIDs.

  1. Restart the Survey Solutions site in IIS.
  2. Retry the export. The first export after performing the above steps may be considerably slower than your previous experience as the program is rebuilding the deleted schemas from raw data. The subsequent exports will be done faster.

END OF PROCEDURE M1

\ No newline at end of file diff --git a/headquarters/config/server-installation/images/finish_installation.png b/headquarters/config/server-installation/images/finish_installation.png new file mode 100644 index 00000000..3f7d291a Binary files /dev/null and b/headquarters/config/server-installation/images/finish_installation.png differ diff --git a/headquarters/config/server-installation/images/pg_password.png b/headquarters/config/server-installation/images/pg_password.png new file mode 100644 index 00000000..9adedef7 Binary files /dev/null and b/headquarters/config/server-installation/images/pg_password.png differ diff --git a/headquarters/config/server-installation/images/pg_port.png b/headquarters/config/server-installation/images/pg_port.png new file mode 100644 index 00000000..fd36093a Binary files /dev/null and b/headquarters/config/server-installation/images/pg_port.png differ diff --git a/headquarters/config/server-installation/images/ss_config.png b/headquarters/config/server-installation/images/ss_config.png new file mode 100644 index 00000000..d7fa25b6 Binary files /dev/null and b/headquarters/config/server-installation/images/ss_config.png differ diff --git a/headquarters/config/server-installation/images/ss_connection_settings.png b/headquarters/config/server-installation/images/ss_connection_settings.png new file mode 100644 index 00000000..e9d76d7a Binary files /dev/null and b/headquarters/config/server-installation/images/ss_connection_settings.png differ diff --git a/headquarters/config/server-installation/images/ss_iis_settings.png b/headquarters/config/server-installation/images/ss_iis_settings.png new file mode 100644 index 00000000..39674b89 Binary files /dev/null and b/headquarters/config/server-installation/images/ss_iis_settings.png differ diff --git a/headquarters/config/server-installation/images/ss_ipconfig.png b/headquarters/config/server-installation/images/ss_ipconfig.png new file mode 100644 index 00000000..aa5df3a6 Binary files /dev/null and b/headquarters/config/server-installation/images/ss_ipconfig.png differ diff --git a/headquarters/config/server-installation/images/ss_location.png b/headquarters/config/server-installation/images/ss_location.png new file mode 100644 index 00000000..097da951 Binary files /dev/null and b/headquarters/config/server-installation/images/ss_location.png differ diff --git a/headquarters/config/server-installation/images/ss_maps_error.png b/headquarters/config/server-installation/images/ss_maps_error.png new file mode 100644 index 00000000..aa9c72bf Binary files /dev/null and b/headquarters/config/server-installation/images/ss_maps_error.png differ diff --git a/headquarters/config/server-installation/images/ss_pgconnection.png b/headquarters/config/server-installation/images/ss_pgconnection.png new file mode 100644 index 00000000..945eac8d Binary files /dev/null and b/headquarters/config/server-installation/images/ss_pgconnection.png differ diff --git a/headquarters/config/server-installation/index.html b/headquarters/config/server-installation/index.html new file mode 100644 index 00000000..f15f9a57 --- /dev/null +++ b/headquarters/config/server-installation/index.html @@ -0,0 +1,143 @@ +Server Installation +

Server Installation

March 14, 2024

Installation has following steps:

  1. Installing PostgreSQL
  2. Installing SurveySolutions
  3. Post installation configuration

Installing PostgreSQL

Make sure that you have an installed and running instance of PostgreSQL +before running SurveySolutions.exe

You can download PostgreSQL from +here and run the setup. Pick +the latest stable version (note: Survey Solutions will not work with PostgreSQL +prior to version 10.0).

During the process you’ll set the password for the database superuser:

📷 PostgreSQL password

Postgres password


and the port, on which the PostgreSQL server will be running:

📷 PostgreSQL port

Postgres port


After the installation is complete, follow the instructions for +tuning PostgreSQL for production use

By default, PostgreSQL is set up to allow connections from the same server only. If you are going to install +Survey Solutions on the same server, you don’t need to change this default. However if you are splitting the database +and the web application into two separate servers (may be advisable for larger-scale operations when administration and +maintenance of the database is better by its own) you have to explicitly allow connections from external server to reach +your PostgreSQL database. This is done by modifying pg_hba.config file and adding ip address of the webserver, which +will run Survey Solutions. Please take a look at the documentation +for further details.

Installing Survey Solutions

Download the Survey Solutions installer

Run SurveySolutions.exe. It will ask you for two parameters: install location +and PostgreSQL connection parameters.

For the install location – choose any or keep the default (C:\Survey Solutions\)

📷 Survey Solutions location

Survey Solutions location


For PostgreSQL connection parameters (default values will be already there) +specify the port and password you’ve chosen when setting up the PostgreSQL +earlier:

📷 Survey Solutions database connection

Survey Solutions database connection


That’s it. At the end, finish installation page will automatically open +in your browser where you’ll be able to create administrator user for +Survey Solutions Headquarters application.

📷 Create a new Administrator user

Create a new Administrator user


The link to the site will be automatically added to your start menu, but you +can always access it by directly typing the address in the browser’s address bar.

In order to check if the application is running correctly you can open +http://localhost:9700/.hc URL. It should output Healthy message.

Post installation configuration

The post-installation configuration involves the following:

Adjusting the site bindings

By default, Survey Solutions is installed as a web application and runs +behind the IIS web server using port 9700. A custom port is used +to avoid potential conflicts with existing web applications you may already be +running on the same server. Also, most firewalls will block custom ports by default +and this will help you in protecting your data by not exposing your application to +external networks/Internet unintentionally.

Accessing your application via localhost only works from the same computer, in order +to connect to it from a different machine or an Android tablet, you have to use (and know) +your server’s ip address.

One option to find the computer’s ip address information is using ipconfig. To +access it, right click on start menu, select run option and execute ipconfig /all command.

📷 Finding ip address

Finding ip address


/all option is used in case your server has multiple network interfaces.

Once you locate the appropriate address, you can access your server from any other device (connected to the same network) +by typing http://server_ip_address:9700/ in the browser. For our example, the address would look like +this: http://192.168.136.128:9700/

You can now change the port 9700 to 80 in the IIS configuration manager. +To access it right click on start menu, select run option and execute the +inetmgr command.

In the IIS Manager you will find the Survey Solutions application:

📷 Survey Solutions in IIS Manager

Survey Solutions in IIS Manager


If you click on the Bindings... link in the right panel you will be +able to add or modify ports that application listens to, such as 80 for HTTP, or 443 for HTTPS (see below).

Now you can ommit the custom port number when accessing the server - http://192.168.136.128/.

Remembering and always typing ip address to connect to the server is still not the best and convinient approach. You +could instead attach a domain name to your server, which would simplify work considerably. Moreover, in order to be +able to use ssl encryption, you must have a domain name attached to the web application.

Obtaining a domain name for the specific purpose of running one application will depend on the way you’d like it to be +accessed by your team and the users. If you would like to get a sub-domain (third-level, forth-level, etc, domain) under +an existing domain name (for example, your organization already operates http://www.coolcompany.com address and you want to add +http://survey.coolcompany.com) it may be as easy as contacting the right person/team who manages the main address and ask them +to issue the sub-domain for you.

But if you instead prefer to have a dedicated, second-level domain name, like http://mycoolsurveys.com address, you will need to +first buy and register the new address. There are many companies who provide global, or country-specific domain registration services, +some of them offering free or discounted options, so finding an appropriate solution for your need would involve little +searching.

SSL certificate

If your Survey Solutions instance is exposed to the public in the Internet, +it is highly recommended to setup SSL encryption for web server by applying +an SSL certificate.

The configuration depends on the +certificate provider +that you choose, so refer to their documentation on how to setup IIS.

Firewall rules

To permit communication of Survey Solutions with the Designer and other utilized +services you may need to enable certain ports or types of communication as +listed below. The instructions vary by type of the security software used. +See #3 in the FAQ for IT for common +security software instructions.

  • allow incoming connections to the port that you’ve set up the server binding +of Survey Solutions;
  • allow outgoing connections to the Designer site: +https://designer.mysurvey.solutions;
  • allow outgoing connections to the Survey Solutions site: +https://mysurvey.solutions.

In addition expect the client (browser) to

  • send queries to the Maps server being used: +typically https://maps.googleapis.com and https://google.com +(or see here for +alternative settings for China);
  • send queries to the CAPTCHA server being used (if it is used): +https://www.google.com and https://www.gstatic.com

Survey Solutions operates with HTTP/HTTPS requests that may be rather large +(multiple MB). Your server must be configured to receive and process such +queries (rather than block them). This may necessitate additional +WAF configuration. If +this is not permitted, the interviewers may not be able to synchronize their +tablets.

Load balancer

If you are using a load balancer, please make sure that it is configured to use:

  • sticky sessions, and
  • web sockets.

If this is not satisfied, web interviews will not work resulting in errors for +the respondents (this may not be immediately obvious to the person setting up +the Survey Solutions server).

If the Survey Solutions web server is placed behind a load balancer with +SSL-termination, the following setting must be added to the Policies section +of the appsettings.production.ini configuration file:

[Policies]
+CookiesSecurePolicyAlways=true
+

Survey Solutions application configuration

Open the /Site folder where Survey Solutions is installed, and open +appsettings.production.ini file. This file will not be replaced during +application upgrades and will retain your local server configuration.

📷 Survey Solutions configuration file

Survey Solutions configuration file


Base URL

If your server has domain name you need to change BaseUrl value to the name +you have (without trailing slash at the end of the URL). Make sure that this +URL can be used to open Survey Solutions app from server where application is +installed, otherwise export won’t work.

Example of an ini-file with configured base URL:

[Headquarters]
+BaseUrl=https://demo.mysurvey.solutions
+

Survey Solutions administrator can see if the BaseURL setting is not set up correctly in the Healthcheck page.

Without the correct specification of the BaseURL the server will not be able to generate correct links for:

  • downloading interviewer and supervisor apps (in qrcode);
  • sending invitations to web surveys.

Captcha

A captcha is used to safeguard the +application from brute-force attacks on user accounts and for protection of +web mode from automatic creation of interviews.

Survey Solutions may utilize a built-in (hosted) implementation of captcha +(default) or an external reCAPTCHA provided by Google (to be configured as +per instructions below).

To take advantage of the more secure reCAPTCHA implementation by Google, you +need to set it up in the Google reCAPTCHA admin and record the 2 issued keys +into your configuration file.

  • Navigate to creation page +to register a new captcha. Click on the ℹ️-icons will give you helpful hints +on how to fill out that form.
  • Specify your public DNS name that is configured in +Survey Solutions BaseUrl property for the site name.
  • When selecting the reCAPTCHA type, select version 2 ("reCAPTCHA v2").
  • You can specify additional emails to receive notifications on problems or +increase in suspicious traffic (alerts are issued by Google).

After you click the Submit button you will see a page where you can copy +the necessary site key and secret key. Then add the following content +into your appsettings.Production.ini file:

[Captcha]
+CaptchaType=Recaptcha
+SecretKey=%Your secret key%
+SiteKey=%Your site key%
+Version=v2
+

Google maps

If you are using a GPS question you should change +Google maps API key. +After creating it in the console, add it to the appsettings.Production.ini +configuration file:

[GoogleMap]
+ApiKey=%Your API key%
+

when not configured properly you will see error +ReferenceError: google is not defined on the map report page:

📷 Survey Solutions maps error

Survey Solutions maps error


GeoTIFF files support

If you are using +GIS +functionality and plan using TIFF files as maps, then you need to install the +GDAL library. The simplest way to do it (on Windows) +is to use the OSGeo4W project: +download installer from their web site and install only “GDAL”.

Survey Solutions will try to locate and make use of the GDAL libraries +at the default installation path: C:\OSGeo4W64\bin\. If you’ve installed +it to another folder then add the following configuration to your +appsettings.Production.ini file:

[Geospatial]
+GdalHome=%Path to bin where GDAL is intalled%
+

If this step is not performed, the users of this Survey Solutions instance +will not be able to upload maps in GeoTIFF format to the HQ. They will still +be able to upload maps in other accepted formats.

Adjusting the settings of the DB connections pool

Survey Solutions communicates with the DB by utilizing a pool of connections, +the size of which is regulated by the Maximum Pool Size parameter (integer).

If your server is servicing many users and/or is facilitating collection of a +large web survey with many respondents you may need to increase the value of +this parameter from its default value 100 to a larger value. This is done by +adding the following:

Maximum Pool Size=#;
+

to the Default Connection key in the Connection Strings section of the +appsettings.production.ini file, where # is the maximum pool size you +want to set, for example: 200.

See here for more information: https://www.npgsql.org/doc/connection-string-parameters.html

You will need to restart the Survey Solutions server for the new setting to +take effect.

Note that the DB server must permit that number of connections as well, and +may need to be revised too.

See here for more information: https://www.postgresql.org/docs/current/runtime-config-connection.html

For Survey Solutions data servers controlled by the World Bank

If you are receiving a message

The requested URL was rejected. If you think you have made a valid request to a page on our website please report by clicking on the below link.
+Your support ID is: ###################
+

(where ##...# denotes a numeric ID), please write to lbadmin from your +World Bank-staff email account and cite the message you received including the ##..# number. Please note: this message is not produced by the Survey Solutions software.

\ No newline at end of file diff --git a/headquarters/config/server-setup/index.html b/headquarters/config/server-setup/index.html new file mode 100644 index 00000000..8dd83fc0 --- /dev/null +++ b/headquarters/config/server-setup/index.html @@ -0,0 +1,46 @@ +Survey Solutions Server +

Survey Solutions Server

November 20, 2020

This article describes the main steps to setup your own +Survey Solutions server.

  • Study the requirements for a server. +These requirements are minimal and may be periodically revised. +Your survey may require a different hardware configuration. +You may need to calibrate for a few months before the survey +to determine the optimal configuration.

  • Follow the installation instructions +to install the prerequisites and the Survey Solutions itself.

  • Note: there is only one installation set regardless where you want +to install: to a physical server or to a cloud-based server. The +installation file for survey solutions may be obtained +from the Download section of +the self-service portal.

    • To install the Survey Solutions to your Windows server, follow the +installation instructions.

    • To host your Survey Solutions instance inside a docker container, follow the +docker instructions.

    • If you are deploying to Amazon AWS cloud, there +are additional instructions available: +Installation to AWS.

    • For deployment on Microsoft Azure, please take a look at +Azure setup.

  • Your network firewall or security software may need to +be configured to permit Survey Solutions. See +#3 in the FAQ.

  • Your backup system may need to be configured to cover +the Survey Solutions data.

After the installation and configuration of your server +follow the Survey Solutions release notifications and +update your server periodically. You decide yourself on +the frequency of the backups, updates and other maintenance +that you do on your server.

The following page may be helpful in troubleshooting the errors with your server +installation: Server errors.

If you experience any problem with exporting the data from the server, +check out these instructions first.

\ No newline at end of file diff --git a/headquarters/config/standalone-installation/index.html b/headquarters/config/standalone-installation/index.html new file mode 100644 index 00000000..23e530f2 --- /dev/null +++ b/headquarters/config/standalone-installation/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/server-setup/ + \ No newline at end of file diff --git a/headquarters/config/standalone-server-errors/index.html b/headquarters/config/standalone-server-errors/index.html new file mode 100644 index 00000000..b09cce2d --- /dev/null +++ b/headquarters/config/standalone-server-errors/index.html @@ -0,0 +1,119 @@ +Data Server Errors +

Data Server Errors

June 23, 2021

The following errors may be encountered when working with a data server:

1. “Unable to import new questionnaire: Could not connect to Designer. Please check if Designer is available and try again."

Your Headquaters installation is trying to contact the Survey Solutions Designer server to import the questionnaire, but can’t reach it. It is very unlikely that the Designer is not responding or is not working read how to check here so the problem is most likely with your network configuration. Consult your network administrator and ask him/her to trace the signal and see where it stops. Most commonly it is prevented by your Firewall software or hardware.

Currently, Designer application is available at https://designer.mysurvey.solutions, this address is accessed every time an HQ-user is trying to import a questionnaire to the server.
Please make sure that this URL is reachable from the server that is hosting the Headquarters app.

2. “The server is not registered with Questionnaire Designer. Please contact support for registration. IP=n1.n2.n3.n4”

This message was only issued by older installations of the Survey Solutions software, which should be updated by now. Survey Solutions doesn’t issue this message since version 20.05.

3. “New feature(s) is not supported by your installation. Please update."

You are trying to import a questionnaire that is utilizing a feature that your installation doesn’t support. (The message may also mention a specific feature). Either update your Survey Solutions installation, or re-design your questionnaire not to use the feature which is mentioned. Check the release notes for identifying recently added features that may not be avaialble in your current installation. Keep your data server recent to prevent bugs and security problems.

On the cloud servers that our team manages this error is very unlikely as we tend to update all of these servers within days after a new version is released. If you encounter this error on a cloud server https://*.mysurvey.solutions, and you believe the server should be already up-to-date by this time, please contact the support team.

4. “Export service unavailable."

Check the troubleshooting instructions for the export service contained in this article.

5. “Error during the site initialization. Check application log for details."

This error occurring at the startup of the website may be caused by various configuration problems, of which the log files

  • headquarters.*.log and
  • headquarters.verbose.json.*.log

should be informative (date is contained instead of the * in real files). For example, this error may occur if the database connection string entered during the installation was specified incorrectly. See also #15 below if the message also mentions database connectivity.

6. “This application only runs on Windows Server NNNN or higher."

This error message is issued during the installation when the installation is taking place on a machine not satisfying the minimal requirements. Make sure you install Survey Solutions on a server version of MS Windows, not on a regular desktop version. Note also, that MS Windows NNNN Professional is not a server version of MS Windows.

7. “An unexpected error occured during export."

This error message may be seen at the data export page and is rare. It signals +about a situation, which was unanticipated and the Survey Solutions export +service didn’t manage to produce the data export file. It is not possible to +say what exactly went wrong simply from this error message. Instead the server +administrator should review the server logs and if not able to +identify the problem independently, contact support. Users in the role of +Headquarters should notify their server administrator regarding the occurrence +of this error.

8. “ReferenceError: google is not defined."

The message is displayed when the user accesses the map report at the server, where +the map engine settings were not configured correctly and hence the map may not be +displayed.

See the Google maps +section of the server installation instructions.

9. “Application cannot connect to database using provided connection string”

The Survey Solutions server couldn’t connect to the database that stores its +data. This could be due to a number of reasons, most commonly because either the +address of the DB server is specified incorrectly or because the server is not +reachable.

10. “Error 28P01: password authentication failed for user +UUUUUU."

The error occurs at application startup and indicates that Survey Solutions +could not access the database using the user name/password combination specified +in the connection string. Typically the name of the user ‘postgres’ is mentioned +in the error message unless a different user has been specified in the db +connection string.

11. PostgreSQL error XX001

+…
+Exception data:
+Severity: ERROR
+SqlState: XX001
+MessageText: could not read block ###### in file “~~~~~~~~”: read only ### of ### bytes
+…
+

This error message is not displayed to the user, but may be encountered in the +server log files visible to the system administrator (typically a different +person from the Survey Solutions administrator). Visual clues to the users +may vary, but generally may present themselves as “strange behavior”, which +could be, for example, the Survey Solutions indicating that the export of +data has been started, but never completes, or saying that a user has been +created, while in fact it is not, and other similar unexplained deviations.

If it is present, it indicates that there was a problem reading the data stored +in the database and transaction was aborted. This is a serious error, commonly +caused by defective hardware.

Most of the users are never concerned about the database used by +Survey Solutions internally, since all the data structures needed for functioning +of the software are created, updated, and deleted automatically. Technically, +though, Survey Solutions uses PostgreSQL database for storing the data (this +may change in the future, refer to the installation instructions for the +current version, section on prerequisites/dependencies). +(PostgreSQL error)

If the above error message is encountered in the log files, the system +administrator should plan for a recovery process. Some possible reasons for +this problem and advice for recovery are available at the following page: +PostgreSQL-wiki:Corruption.

Continuing the use of a system with a corrupt database may aggravate the +problem, making the recovery more difficult or impossible. Still, the system +administrator must proceed with caution and make a snapshot of the data +before making any corrections, because introducing any changes may limit +the subsequent options for recovery.

The exact steps to do vary case by case, but will likely require professional +expertise and results may vary. This is not an error caused by Survey +Solutions code, so Survey Solutions developers will not be able to +provide assistance in case of such failures.

12. PostgreSQL error XX002

+…
+Exception data:
+Severity: ERROR
+SqlState: XX002
+MessageText: index “~~~~~~~~” contains unexpected zero page at block ###
+Hint: Please REINDEX it.
+…
+

The above error message is evidence of violation of integrity of the database +where Survey Solutions stores its data in the server +(PostgreSQL error). +If the problem is caused by failing hardware, then the severity is high and +the user should follow the same advice as in the case #11 above.

If the thorough analysis of the hardware (including search for bad sectors, +file read fails, etc) indicates that the hardware is healthy and reliable, the +user should reindex the database as advised in the message.

Reindexing is a standard non-destructive maintenance operation, see for example this +external site video +or section 6.5 in the pgAdmin documentation

The database index may be rebuilt if the data is not affected. But if the +hardware has failed for the index, next time it may fail for the data, +which will not be recoverable. Hence disregarding the hardware check +is risky and not recommended. See also: +PostgreSQL-wiki:Corruption.

13. WAF blocking

An interviewer may report inability to log in to the tablet Interviewer App +(see synchronization problems). +This could be due to the server's +WAF configuration. +The issue occurs typically +and manifests itself with:

  • an error message indicating that the site is not available: +"No connection to the Survey Solutions Supervisor. Please make sure that the website is available."
  • during the first login to the tablet Interviewer App
  • the site is responding when accessed from a browser of the same tablet
  • the tablet is able to send diagnostics information to the server, but the diagnostics shows no errors or no relevant errors.

The issue can be diagnozed by making a probe synchronization and then +reviewing the WAF log by the timestamp when the communication with the +server was attempted. The log will contain the blocked query, for example +/api/interviewer/... and the user-agent will indicate +org.worldbank.solutions.interviewer/21.01 (or a similar version id).

The exact unblocking actions depend on the software facilitating WAF +and the rules engaged and requires cooperation of the person or organization +managing the WAF. See example for BIG-IP ASM +on a third-party site.

14. WebSockets not enabled

The issue has the following symptomatics:

  • the server appears working normally;
  • an administrator or an HQ user cannot create new assignments one-by-one from a web interface, or
  • a supervisor can’t review a submitted interviw, or
  • an interviewer working on the server can’t start an interview, or
  • a respondent to web-interiew can’t open it.

Survey Solutions uses SignalR library, +which communicates over WebSockets. +If the WebSockets connectivity is not available, the above-mentioned functionality will not +be available either. Survey Solutions may not control WebSockets on its own. WebSockets must +be enabled by the person installing the Survey Solutions server. See more details at this +Microsoft's page.

To help diagnoze this problem, refer to the WebSocket connectivity check +as described in the Healthcheck article.

15. Application cannot connect to database using provided +connection string. Check application log file for details

This message may be encountered when accessing the server login page in +a browser, and indicates that the server failed to start. The application +log files are described below. For this specific error, please refer to the +page DB connection errors.

Application log files

In some cases the application log files must be inspected for evidence of what step of the has failed and/or what was the unexpected situation. This technical information is accessible to the IT-personnel (person administrating the server) and is not published on any of the web pages served by the server.

The administrator will find the necessary logs in the Logs subfolder of the +folder where the Survey Solutions is installed. The log files are organized by date +to simplify locating the necessary files. They are text files, so the administrators +can read them to try to identify the error themselves, or to inspect the information +being sent if there are any privacy concerns.

If Survey Solutions was installed using the default destination +C:\Survey Solutions then the log files are placed to the folder C:\Survey Solutions\Site\Logs and the files are named headquarters.[date].log.

If you are sending the log files to support, please keep in mind that our messaging system does not support attachments of multiple megabytes in size. If you need to send large files (more than ~1MB) please use a file sharing service and send us the link instead. If you encrypt your log files with a password, don’t forget to include it into the same message.

\ No newline at end of file diff --git a/headquarters/config/standalone-server/index.html b/headquarters/config/standalone-server/index.html new file mode 100644 index 00000000..23e530f2 --- /dev/null +++ b/headquarters/config/standalone-server/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/server-setup/ + \ No newline at end of file diff --git a/headquarters/config/storage-space/images/storage.jpg b/headquarters/config/storage-space/images/storage.jpg new file mode 100644 index 00000000..ff6a7c99 Binary files /dev/null and b/headquarters/config/storage-space/images/storage.jpg differ diff --git a/headquarters/config/storage-space/index.html b/headquarters/config/storage-space/index.html new file mode 100644 index 00000000..ed5e8d7b --- /dev/null +++ b/headquarters/config/storage-space/index.html @@ -0,0 +1,73 @@ +Server storage space +

Server storage space

April 5, 2023

This article explains the importance of adequate storage space for a Survey Solutions server.

Survey Solutions saves a lot of data. Database sizes in the size of tens +of GBs are commonly observed even in small surveys. Population censuses may +consume TBs of data.

Survey Solutions stores the data:

  • in the database and
  • in files on file system of the server.

It is crucial that the system doesn’t run out of storage for its continuous and +reliable operation.

The data transfer from mobile devices to the server involves complete data +deletion on the mobile device after the server confirms that it has received +the intended package. If the server has no storage needed to process and store +the data from this package, as well as any supplementary updates to reports +and other elements on the server, then the application may:

  • become unstable;
  • have some functionality not available, while other functionality working fine;
  • show incorrect content; or
  • stop responding or servicing further requests.

Notably, from the viewpoint of the interviewer the transfer succeeds when the +server confirms receiving the data, so the interviewers can’t detect or react +to this issue.

Correspondingly, it is important to monitor the growth of the footprint of +the application in terms of storage space to avoid server downtime or data +loss. The exact actions will depend on where and how the Survey Solutions +is deployed, for example, whether the DB is located on the same machine or +on a separate database server.

Generally the administrator of such a system (this may be and often is a +different person then the administrator user in Survey Solutions) needs to +monitor:

  • availability of free space on the file system of the machine used for +servicing web requests;
  • availability of storage space for the database;
  • speed of expansion (which may not necessarily be linear, but exhibit cycles, +for example by day of the week, or month of the year).

Survey Solutions itself may not accurately acquire these capacities (e.g. it +has no idea how far the DB can grow on the server that stores the DB data), +which are determined as a combination of the physical capacities, account +limitations, storage consumption policies and quotas, etc, thus it can’t +alert the user by itself that the storage is about to become full. Yet the +Survey Solutions administrator user may see some statistics on the DB current +footprint in the healthcheck page +(including some statistics by workspace).

There are numerous third-party tools available for such monitoring.

For major cloud providers consider the tools that they provide when you host your server with them:

Alongside with tracking the use of the storage space, these tools +give a lot of insights regarding many other aspects of the database +state and are indispensable in optimizing the database performance.

Many of these tools provide the possibility to automatically notify +the user about the event that the storage has become full or is about to become full (either by doing projections, or by registering the size is over a certain threshold limit).

Some tools allow for automatic increase of resources when the capacity +is about to be exhausted or perform another scripted action to react to such an event. For example, the DB may be automatically +resized as a reaction to the alert that a certain threshold has been +reached. Automatic database expansion should be used with caution, as the running costs for operating the servers also increase in an automatic fashion.

Addressing the storage issue before it actually happens is usually much +cheaper (in terms of staff time) then dealing with the consequences. Indeed, +the consequences may spread across the board to other systems linked to a +Survey Solutions server via API calls, which would not be able to have their +requests processed and adequately responded to. Another obvious loss is the +loss of a response, especially in the web interviews, where the respondent +can no longer proceed with an interview, and may no longer return to the +survey page because she has lost interest or motivation to participate in +such a survey.

Revising the storage limits in a cloud infrastructure can be technically +very quick, but may require additional costs, which may need to go through +the procurement clearance (for corporate and institutional users), thus +having an early warning is critical.

The exact response will depend, of course, on:

  • how quickly these issues (expanding the infrastructure) can get processed +bureaucratically and technically;
  • how quickly the data footprint continues to grow;
  • how expensive or critical is the loss of responses, or having server +downtime, etc.

👍 As a rule of thumb: if you feel that the data cumulates with the speed that +you have less than a week-worth of storage left, start doing the revisions +immediately.

👍 As a rule of thumb: if you have consumed half of the storage space, +consider increasing it. (of course this depends on whether you’ve reached +this point in the beginning, middle, or the end of the data collection, +but remember that even if you are not collecting additional interviews, +your data footprint may continue to grow, and thus needs storage for +expansion).

\ No newline at end of file diff --git a/headquarters/config/support-packages/images/support_packages.png b/headquarters/config/support-packages/images/support_packages.png new file mode 100644 index 00000000..3068ca2f Binary files /dev/null and b/headquarters/config/support-packages/images/support_packages.png differ diff --git a/headquarters/config/support-packages/index.html b/headquarters/config/support-packages/index.html new file mode 100644 index 00000000..06905f75 --- /dev/null +++ b/headquarters/config/support-packages/index.html @@ -0,0 +1,49 @@ +Support packages +

Support packages

March 18, 2021

Support packages are also known as tablet information packages. These +terms are used interchangeably in this documentation.

Survey Solutions contains a built-in mechanism for collecting the data from +tablets and transmitting it to the HQ server. This helps to investigate the +issues where the interviewers can not supply any detailed problem report and +commonly describe the problem with “it doesn’t work” or “it crashes” and +it is difficult or not possible to access the device directly.

The information contained in the tablet information packages (support packages) +is rather technical and should be interpreted by IT personnel or software +developers. If you are looking for a description of activities undertaken by +an interviewer, rather than solving a technical problem, then the +Interviewer Actions Log must +be used instead.

Tablet information packages do contain confidential information of the kind +processed by the Interviewer App. For transit, they are encrypted on the +tablet before sending and decrypted on the server upon receiving.

On the tablet

To obtain the device logs the interviewer should proceed to the Menu -> +Diagnostics -> Generate support package (which is option #5 in the article +describing the Diagnostics page).

Internet connectivity is required to transmit the tablet information packages +to the server.

On the server

The support packages sent from tablets are available to the server +administrator, who can access them from MenuServer Administration +→ click particular workspace name → Tablet information packages:

The table contains the device identifier (visible on the tablet in the +Settings Dialog), +date/time when the logs package was sent, name (if available), user-id (if +available), and size of the support package.

Note that the user name and id may be missing, as the packages may be sent +even before the user has successfully logged in.

The table is sortable by any of the columns. Click on the column header to sort.

To download the support package, click on the download-icon located next to +the package size.

Support packages

Each support package is a zip-archive, which contains a wealth of information +on the tablet, including:

  • one or more log files with a description of various actions, error messages, +etc which occurred on the tablet (as text files);
  • database snapshots (as binary data);
  • interviews data (as binary data);
  • audio recordings (if any);
  • questionnaire assemblies (compiled code);
  • device description file (text file);
  • other relevant information.

The support packages are not intended for end-user manipulation or processing. +They are intended for the developers during debugging and troubleshooting +sessions. Do not build any business logic around this functionality. +Specifically, this is not a backup/restore functionality.

Note:

Device logs contained in support packages may be obtained separately, see the +article on Device logs for details.
\ No newline at end of file diff --git a/headquarters/config/support-tool/index.html b/headquarters/config/support-tool/index.html new file mode 100644 index 00000000..e6f4c77b --- /dev/null +++ b/headquarters/config/support-tool/index.html @@ -0,0 +1,57 @@ +Support tool +

Support tool

November 25, 2021

Survey Solutions comes with a built-in support tool that can be used in special situations:

  • where an action needs to be taken programmatically;
  • where an action may not be taken through the web interface.

The support tool is being called via a command line (while being in the directory where Survey Solutions is installed), we type:

WB.UI.Headquarters.exe manage ...
+

followed by one of the following commands:

version
+users
+workspaces
+migration
+

These commands and their subcommands and options are described below.

Version

version –> Print application version information

This command doesn’t have any subcommands or options.

Users

users –> Manage users of Headquarters

create Subcommand to create a new user account

--role
+--password
+--username or --login
+--workspace or -w
+--email
+--supervisor
+

reset-password Subcommand to reset password for an existing user

--username or --login
+--password
+

disable2fa Subcommand to disable 2-factor authentication for an existing user

--username or --login
+

releaselock Subcommand to release a security lock for an existing user

--username or --login
+

workspaces

workspaces –> Manage workspaces

add Subcommand to add new workspace to Headquarters

--name or -n Name of the workspace
+
+--title or -t Title of the workspace
+

list Subcommand to list workspaces

Migrate

migrate –> Migrate database to latest version

–wait-for-db Wait for DB to be available. Default is False.

–timeout Limit wait time for DB in seconds. Default is 0. Used in conjunction with --wait-for-db option

Users may also type: WB.UI.Headquarters.exe -help to obtain a quick summary of +commands in the version they have installed.

Common use

Most users will never encounter a situation where they would need to use this +support tool. But when they do, most commonly the support tool needs to be used:

  1. to reset the password of the server administrator if it is forgotten, for example: +.\WB.UI.Headquarters.exe manage users reset-password --username ACCOUNTNAME --password "NEWPASSWORD"
  2. if the administrator’s account became inaccessible due to the two-factor authentication, where the token generator became lost, stolen, damaged, or otherwise inaccessible, for example: .\WB.UI.Headquarters.exe manage users disable2fa --login loginName
  3. in the situations where we need to release the automatic lock on login attempts when we believe that the account is no longer under a threat; for example: .\WB.UI.Headquarters.exe manage users releaselock --login loginName
  4. to create a second administrator account;
  5. to programmatically create a number of users and workspaces.

Note: make sure the new password that you assign when you do a password +reset is compliant with the minimum security requirements for the account +password at this server!

Use with Docker

When Survey Solutions is deployed in Docker, the command must be directed at a +particular Docker container:

...>docker exec CONTAINERID dotnet WB.UI.Headquarters.dll NORMALSYNTAX
+

Here:

  • CONTAINERID is the ID of the Docker container you want to direct the +command to, and
  • NORMALSYNTAX is the syntax you’d otherwise write after +WB.UI.Headquarters.exe using the above description.

Example 1

to reset the password of the user with login name admin to the +value AghyrAbyrr25 in the Docker container with the ID +d7d17a143852 +one can submit the following command:

c:\dock>docker exec d7d17a143852 dotnet WB.UI.Headquarters.dll manage users reset-password --username admin --password "AghyrAbyrr25"
+[16:18:59 INF] Headquarters Reset password for user admin succeeded
+

Example 2

to obtain the list of workspaces defined in the server running in the same +Docker container:

c:\dock>docker exec d7d17a143852 dotnet WB.UI.Headquarters.dll manage workspaces list
+primary         Default Workspace
+
\ No newline at end of file diff --git a/headquarters/config/workspace-settings/index.html b/headquarters/config/workspace-settings/index.html new file mode 100644 index 00000000..4287497a --- /dev/null +++ b/headquarters/config/workspace-settings/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/admin-settings/ + \ No newline at end of file diff --git a/headquarters/customize-web-interview-messages/index.html b/headquarters/customize-web-interview-messages/index.html new file mode 100644 index 00000000..23669d52 --- /dev/null +++ b/headquarters/customize-web-interview-messages/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/cawi/customize-web-interview-messages/ + \ No newline at end of file diff --git a/headquarters/data-export-files-/index.html b/headquarters/data-export-files-/index.html new file mode 100644 index 00000000..66c411b5 --- /dev/null +++ b/headquarters/data-export-files-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-files-/ + \ No newline at end of file diff --git a/headquarters/data-export-tab/index.html b/headquarters/data-export-tab/index.html new file mode 100644 index 00000000..9a11b537 --- /dev/null +++ b/headquarters/data-export-tab/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-tab/ + \ No newline at end of file diff --git a/headquarters/detailed-action-log/index.html b/headquarters/detailed-action-log/index.html new file mode 100644 index 00000000..44d15bed --- /dev/null +++ b/headquarters/detailed-action-log/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/detailed-action-log/ + \ No newline at end of file diff --git a/headquarters/downloadable-report-on-interviewers/index.html b/headquarters/downloadable-report-on-interviewers/index.html new file mode 100644 index 00000000..46fdf678 --- /dev/null +++ b/headquarters/downloadable-report-on-interviewers/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/downloadable-report-on-interviewers/ + \ No newline at end of file diff --git a/headquarters/errors-in-user-supplied-files-for-preloading/index.html b/headquarters/errors-in-user-supplied-files-for-preloading/index.html new file mode 100644 index 00000000..4f9ddbe2 --- /dev/null +++ b/headquarters/errors-in-user-supplied-files-for-preloading/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/errors-in-user-supplied-files-for-preloading/ + \ No newline at end of file diff --git a/headquarters/export-to-cloud-storage/index.html b/headquarters/export-to-cloud-storage/index.html new file mode 100644 index 00000000..9a11b537 --- /dev/null +++ b/headquarters/export-to-cloud-storage/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/data-export-tab/ + \ No newline at end of file diff --git a/headquarters/export/audio-audit-files/index.html b/headquarters/export/audio-audit-files/index.html new file mode 100644 index 00000000..a25d46c2 --- /dev/null +++ b/headquarters/export/audio-audit-files/index.html @@ -0,0 +1,23 @@ +Audio Audit Files +

Audio Audit Files

February 14, 2022

Survey Solutions has a feature of audio audit: a capability of recording an interview and provide the recording for the audit of the interviewing process. The recording covers all the duration of the interview from the moment it starts to completion, except the time when:

  • the tablet is off;
  • the user switches to a different app;
  • the interview is not active (Interviewer has switched to a different interview or switched to the dashboard);
  • the audio recording is done as an answer to an audio question;
  • when the interview is completed over the web (CAWI mode).

Audio audit files are exported as part of the binary data. +The naming convention used in forming this data archive is as following:

  • the archive contains subfolders named according to the interview key in the form of NN-NN-NN-NN.
  • each subfolder corresponding to an interview may contain a subfolder AudioAudit if audio audit was activated for it.
  • within the AudioAudit folder one or more audio files may be present. These files are named according to the following pattern:

################################-audio-audit-YYYYMMDD_hhmmssfff.m4a

where ###..#`` is a 32-digit long hexadecimal ID of the interview interview__id` (NB: without any dashes);

  • YYYY - four digit year;
  • MM - two digit month;
  • DD - two digit day;
  • hh - two digit hour;
  • mm - two digit minute;
  • ss - two digit second;
  • fff - fractions of a second (milliseconds) - 3 digits.

The timestamp included into the name of the file indicates the beginning of the recording session. Provided that there were no adjustments to the device clock, the audio recordings should be replayed in the increasing order of the timestamps.

All components of date and time are left-padded with zero if necessary to achieve the declared width.

The audio audit recording files have file extension .m4a.

The format of audio recording in the audio audit files is:

  • AAC, mono, 44.100kHz
  • data rate: 64.10 kbit/sec

The approximate duration of 1 hour of audio recording is thus:

64.10[kbit/sec] / 8[bit/byte] * 3600[sec/hour] = 28.845[MB/hour]
+
\ No newline at end of file diff --git a/headquarters/export/data-export-files-/images/677299.png b/headquarters/export/data-export-files-/images/677299.png new file mode 100644 index 00000000..f9f16f2c Binary files /dev/null and b/headquarters/export/data-export-files-/images/677299.png differ diff --git a/headquarters/export/data-export-files-/images/677299_hu3837235397516994071.png b/headquarters/export/data-export-files-/images/677299_hu3837235397516994071.png new file mode 100644 index 00000000..ca37f75c Binary files /dev/null and b/headquarters/export/data-export-files-/images/677299_hu3837235397516994071.png differ diff --git a/headquarters/export/data-export-files-/images/773031.png b/headquarters/export/data-export-files-/images/773031.png new file mode 100644 index 00000000..7ce003be Binary files /dev/null and b/headquarters/export/data-export-files-/images/773031.png differ diff --git a/headquarters/export/data-export-files-/images/773031_hu13602573748794108723.png b/headquarters/export/data-export-files-/images/773031_hu13602573748794108723.png new file mode 100644 index 00000000..86dc8d24 Binary files /dev/null and b/headquarters/export/data-export-files-/images/773031_hu13602573748794108723.png differ diff --git a/headquarters/export/data-export-files-/index.html b/headquarters/export/data-export-files-/index.html new file mode 100644 index 00000000..9f75e52b --- /dev/null +++ b/headquarters/export/data-export-files-/index.html @@ -0,0 +1,58 @@ +Data Export Files

Data Export Files

August 18, 2016

Overview

The exported data will be in a .zip file containing one or more files. +The number of such files is a function of the structure of the +questionnaire, meaning that exporting produces one file per level of +observation in the questionnaire, or in other words in addition to one +file at the questionnaire level, each roster in the questionnaire will +generate another export file.  For example, one file for household-level +variables, one file for household member-level variables, and one file +for asset-level or consumption item-level variables. Additionally, the +.zip file will contain interview comments and interview actions files. + 
 

Note that the exported data differentiates between missing values caused +by the logic of the questionnaire (skipped questions) and missing values +due to absence of an answer. Only the values of the logically skipped +questions will be have missing values (blanks in tab-delimited files), +whereas -999999999 or  ##N/A## (for string variables) will be +exported whenever an answer to a question was expected, but not recorded +for string variables).

Data formats

 
The actual files exported will differ slightly based on the file format +you have chosen to use.
 
Tab** **

  • Exports tab-delimited data in .tab files
  • Each file is accompanied by a Stata .do file that reads the .tab +file into memory, and applies variable and value labels

 
Stata
 

  • Exports DTA files directly. If .do file for applying variable and +value labels desired, they can be found accompanying the +tab-delimited data. 
  • Version 14, which supports Unicode standard for string data. 

 
SPSS
 

  • Exports SAV file directly. 

DDI** **

  • If you are thinking about +committing your collected data into a public repository you are +likely to be requested for a DDI description of your data. 
  • Data Documentation Initiativeis an +international project to create a standard for meta data in social +sciences. You can export an xml file with meta information about +your data for processing in DDI compatible software, for +example Nesstar +Publisher 
  • The +following information is exported: the list of data files, +variables, their types, labels, question texts, interviewer +instructions, etc.

**How the questionnaire structure affects the number of export files **

We will now explain how the data files are exported through an extended +example. In Questionnaire Designer, the example survey (below) consists +of questions about the interview at the household level and a household +roster that include questions about each household member. 

 

Data collected using this questionnaire is exported in the following +number of files: One file at the questionnaire/household level of +observation, another file at the household members/parent level, and two +system generated service files on interview actions and comments. 

Click the relevant links to see more detailed information regarding the +anatomy of each +file: Questionnaire (both +questionnaire and parent level files), System +Generated 

\ No newline at end of file diff --git a/headquarters/export/data-export-tab/images/export_card_annotated.png b/headquarters/export/data-export-tab/images/export_card_annotated.png new file mode 100644 index 00000000..8211aa0f Binary files /dev/null and b/headquarters/export/data-export-tab/images/export_card_annotated.png differ diff --git a/headquarters/export/data-export-tab/images/export_request_annotated.png b/headquarters/export/data-export-tab/images/export_request_annotated.png new file mode 100644 index 00000000..bfe4b90d Binary files /dev/null and b/headquarters/export/data-export-tab/images/export_request_annotated.png differ diff --git a/headquarters/export/data-export-tab/index.html b/headquarters/export/data-export-tab/index.html new file mode 100644 index 00000000..110b1532 --- /dev/null +++ b/headquarters/export/data-export-tab/index.html @@ -0,0 +1,54 @@ +Data Export +

Data Export

May 6, 2024

Export of data may be requested at any time when the Survey Solutions server is +running (during or after the survey) and it doesn’t cause any interruption of +the synchronization (of mobile devices) or online work (CAWI surveys). In case +the server is busy processing other export requests, the new export jobs are +put into a queue and processed sequentially. This article describes how to +request a data export from Survey Solutions.

  1. In the main menu select Data Export.

  2. Select the questionnaire corresponding to the survey that needs to be exported.

  3. Select the questionnaire version (from available at the server).

  4. Select the status of interviews that need to be exported or leave blank for +export of all interviews (in any status).

  5. Select data type, main survey data, binary data, or paradata.

  6. Select whether to include metadata (does not apply to paradata export).

  7. Select the format of the data file (does not apply to paradata export):

    • Tab-separated data (*.tab) - unicode text format with tab-character +used as a delimiter.
    • Stata format (*.dta) - Stata statistical package format, Stata version 14 or newer can open these files.
    • SPSS format (*.sav) - SPSS statistical package format.
  8. Select the export file destination (Binary data files, such as pictures and audio recordings are often large and can be time-consuming to download. One can opt for pushing the data to own cloud storage, rather than downloading directly):

    • Download - exported data will be prepared for downloading to the user’s machine.
    • Upload to OneDrive - when the data is ready it will be pushed to OneDrive cloud storage.
    • Upload to DropBox - when the data is ready it will be pushed to DropBox cloud storage.
    • Upload to Google Drive - when the data is ready it will be pushed to Google Drive cloud storage.
  9. Press the Add to Queue button to create a new export job and add it to the queue of export jobs.

If the queue is empty, a new job is immediately picked for processing. +Once an export job is processed, the result is either uploaded to the cloud +destination, or a Download button is presented to the user in a card +corresponding to the export job.

The cards are placed in the queue regardless whether the export was requested +directly from the web interface, or by submitting the corresponding request via +the Survey Solutions’ API.

If you’ve chosen export to the cloud storage, authenticate yourself with the +corresponding cloud storage provider. Note that despite the cloud-to-cloud data +transfer is usually faster than direct download, it may still take significant +time to complete, especially for large surveys.

Statuses of interviews

In step 4 the user may select all interviews by not specifying any particular +status, or rather select one of the following:

  • interviewer assigned
  • completed
  • approved by supervisor
  • approved by headquarters

Note that selection is based on the current status of interview when the export +of data is requested, and not on any of the past statuses that the interview +had. For example, if the interview is currently in the status +Approved by Headquarters it will not get exported when the status Completed +is specified, despite having one or more Completed events in the past.

Metadata

If metadata is requested to be included with main survey data, it includes:

  • a DDI description file (in XML format);
  • PDF documents containing textual representation of the questionnaire +(1 document per each translation of the questionnaire);
  • a questionnaire document (in JSON format);
  • questionnaire attachments (images, and other files that may be embedded into +the questionnaire).

See more on this in Organization of meta-data storage in the exported +data.

Export card

Export cards corresponding to past export jobs can also be seen here.

Each such card compactly displays a great amount of information about the export +job:

#ExplanationIn this example
1.Export job number21131
2.Job statusCOMPLETED
3.Timestamp when the export job was createdMay 01, 2024 22:08
4.Card menu button.
5.Title of the questionnaire and version"2023_24 Kenya Integrated Survey of Agriculture Pilot" version 2
6.Format of export dataparadata
7.Selection of interviews for exportinterviews in all statuses
8.Selection of language/translationoriginal language
9.Destinationthe job prepared a file for downloading by the user
10.Time spent in queueabout a minute
11.Time spent on production of the export dataa few seconds
12.Timestamp when this job's output was last updated (output can be regenerated, see below)May 01, 2024 22:08
13.Approximate size of the file for downloadabout 0.5 MB
14.DOWNLOAD button
(during production of the export data, while the DOWNLOAD button is not available, this space is utilized to display the current export step, such as RUNNING or COMPRESSING).

Export card menu

Export card menu (4) provides only one item, which allows to regenerate the +export of data with the same parameters, as for the current card.

When regeneration is started, a new export job is created and placed into the +queue (and a new card appears in the export queue with a new job number). +However, when the job completes, its result overrides all other jobs’ export +data matching the same parameters. Hence there are two timestamps on each card, +reflecting the point of processing of the job (3) and update of the data file +(12).

See also

\ No newline at end of file diff --git a/headquarters/export/export_of_calculated_variables/index.html b/headquarters/export/export_of_calculated_variables/index.html new file mode 100644 index 00000000..0a59e5f3 --- /dev/null +++ b/headquarters/export/export_of_calculated_variables/index.html @@ -0,0 +1,35 @@ +Export of calculated variables +

Export of calculated variables

September 28, 2018

Calculated variables are commonly used in CAPI questionnaires to implement complex +checks or indicate to the interviewer some derived information. For +example, one may create a variable that calculates the number of +children in the household,

numChildren = Persons.Count(person => person.age < 18)
+

and use this variable in subsequent questions to check if the number of +children in a household  exceeds a specific threshold.

Starting with version 5.24 of Survey Solutions these variables will be +automatically included in the export data. This is especially useful +when the variables are dependent on random sequence of values generated +by Survey Solutions, such as in the cases of random selection of +respondents in households or enterprises. +No special actions are required on the user side. After the upgrade the new +data downloads will contain the calculated variables as part of the +exported data. The variables are exported in the order they appear in +the questionnaire.

\ No newline at end of file diff --git a/headquarters/export/identify_records/index.html b/headquarters/export/identify_records/index.html new file mode 100644 index 00000000..c5da94b1 --- /dev/null +++ b/headquarters/export/identify_records/index.html @@ -0,0 +1,20 @@ +How does Survey Solutions identify records and establish connections between data? +

How does Survey Solutions identify records and establish connections between data?

October 5, 2020

Survey Solutions works with various surveys done in different conditions, so trying to come up with one naming scheme that would be equally suitable for all applications is a challenging task. A particular survey may come up with a numbering like 2 digits of the province code, followed by 3 digits of the district code, followed by the household id of 4 digits. Yet it is not a good identifier in the case where several surveys are conducted on the same server, or there may be repetitive visits, and other twists.

Survey Solutions protects the integrity of the data by not trusting the user to make the decisions where the integrity of data may be put at risk due to careless design. For that the program relies on a concept known as GUID (see more details in Wikipedia).

A GUID is assigned to any interview conducted with Survey Solutions. And:

  • such assignment is automatic - there is nothing that the designer or the administrator of the survey needs to do specially to make it happen.
  • such assignment is automatic - there is nothing that the designer or the administrator of the survey may do to prevent it from happening.
  • the assigned GUIDs are invisible to the interviewers and respondents: they never need to enter them or even know of their existence.

Example: In a survey of cars crossing the bridge you record (in a separate interview) for each car the following information: car type (passenger, lorry, bus, etc) and color (red/green/blue/etc).

The data may come out from Survey Solutions as:

interview__idcar_typecar_color********
4f53769053864f638d4d4a962fcbabd3busyellow*
31ba4bb9b5414458a6886efd695d12d1passengerred*
12a369339a5748b994801df21ea20ba2truckblue*
e4710251a7974b3ca28e12a7424c1519buswhite*
61fcce6fa8fd4d2c8aa57eeaf0b8ec55passengerwhite*

The last column covered with asterisks indicates that there are also other automatically generated attributes of records, which are not relevant for this discussion.

The interview__id is a unique identifier. It is assigned to the whole interview when it is created in an unpredictable (chaotic, random) pattern and stays invariable through the existence of that interview.

If for any reason, such as publishing this dataset I needed a simpler looking car__id, once the data collection is completed I could generate it with the following Stata code:

generate long car__id = _n

Note that the exported records are not guaranteed to be in any order. Do not assume that they are e.g. chronological.

Example 2: In a household survey you collect (in a separate interview) for every household the household size, and for every household member their age and sex.

The data will come out of Survey Solutions in 2 files (in fact more, but other files are system-generated diagnostics and other information not relevant for this description).

The household level (interview level, or main) file will have the following layout:

interview__idhhsize********
4f53769053864f638d4d4a962fcbabd32*
31ba4bb9b5414458a6886efd695d12d11*
12a369339a5748b994801df21ea20ba23*
e4710251a7974b3ca28e12a7424c15192*
61fcce6fa8fd4d2c8aa57eeaf0b8ec551*

The individual level data will come out as:

interview__idperson__idagesex********
e0c9d430a89241fb9078f81d738f112e143male*
e0c9d430a89241fb9078f81d738f112e239female*
1cda4e243e76402e9bff0300fa93eaee144male*
de18f59a31344c52a8bc3edd44098f02152male*
de18f59a31344c52a8bc3edd44098f02250female*
de18f59a31344c52a8bc3edd44098f02312male*
41e3db71db7e4041a097850d517278e9119female*
41e3db71db7e4041a097850d517278e921female*
93dda6f6add94a789fa24f5416a0865d169male*

Note that there are duplicate values in each of the columns: interview__id and person__id. But there are never any duplicates in both columns at the same time. Thus interview__id and person__id is a joint identifier (aka compound key).

One can always create a single key from a compound key by writing together all the components, taking into account the width in digits. Such as in the above example the ID of the first person could be “e0c9d430a89241fb9078f81d738f112e1”. In practice we would first renumber the households, such as “e0c9d430a89241fb9078f81d738f112e” to “1”, “1cda4e243e76402e9bff0300fa93eaee” to “2”, and only then perform concatenation.

Note that the interview__id is not an increasing value. Newer IDs may be assigned from in between the already assigned, hence one can’t be using sorting of the GUIDs to renumber them in two different export files and obtain consistent renumbering.

The described mechanism of identification automatically extends to deeper levels of data in case of nested rosters. Up to 4 IDs corresponding to roster levels may be assigned, such as in cases of:

  • Building → household → person;
  • Household → plot → crop → crop disposition;
  • Company → department → employee;
  • Shop → isle → item, etc

Since the GUID is automatically generated and always utilized for establishing the links between different data levels, effectively the survey questionnaire doesn’t have to define any identifying questions (such as province, district, etc) for this purpose. Survey Solutions will automatically utilize the interview ID for this purpose instead. (Yet those fields are useful for locating the targeted household, hence a dedicated “Cover page” section is automatically added to every questionnaire).

Note also that the exact numbering of the persons in this example (and correspondingly other units in other surveys) may depend on what triggers the size of the roster. Gaps are possible in these IDs if the trigger question is e.g. a multiselect question (for the ID in that case is the code of only selected options), or a fixed roster (if the original numeration was not consecutive), or a text-list question (if deletions occurred from the beginning or the middle of the list). For any roster, the gaps in numbering are possible, if enabling conditions were specified to enable the roster records only for some of the units.

Example 3: In this example we consider a more complex survey, which happens in several steps: first administrative records for enterprises are consulted to determine the address of the enterprise and indicative number of employees. Then one or more interviewers are sent to the enterprise to conduct interviews with the owner (based on Questionnaire A) about the enterprise and employees (based on Questionnaire B) about their working histories. For small enterprises (<5 employees) only one employee is interviewed, for medium (6-20 employees) two are interviewed, for large (21-100) 5 are interviewed, for 100+ twenty must be interviewed. Correspondingly, after the assignments are made for Questionnaires A and B a link must be established between interviews collected in the two questionnaires. Since these are two different questionnaires, Survey Solutions doesn’t know about the connection between them, unless it is told so.

If we knew the interview__id of the enterprise interview, we could have preloaded that as a connecting information for the employees survey. But since the interview hasn’t happened yet, we can’t utilize this non-existing ID yet.

Luckily, there is a different source of identification available to us, which is assignment__id. This identifier is given to every assignment and correspondingly retained as an automatic attribute in any interview resulting from that assignment. Assignment numbers start with 2 (two).

Correspondingly, our sequence of actions would be:

  1. Use the administrative information to determine the address of the enterprise.
  2. Create an assignment in Survey Solutions based on questionnaire A with address as obtained in #1 above.
  3. Preserve the resulting assignment number as G.
  4. Use the administrative information to determine the enterprise size category, and corresponding number of personal interviews, denote it as N.
  5. Create N assignments in Survey Solutions based on questionnaire B. Mark each with the same addressing information as for the enterprise, a sequential number 1..N and a hidden attribute h_assignment_number equal to G.

In practice the above should be implemented as a program/script and not performed manually, to avoid human errors.

After the data is collected on the enterprise and the employees, we export data from A and B, and unfold the link in the following manner: for every person in dataset B take her h_assignment_number value. Locate the record in A (main level) where assignment__number == h_assignment_number. There will be exactly one such record. Join the records based on this expression. Note that the same record from A will be utilized for multiple records in B (for there are multiple employees of the same enterprise).

If there are multiple surveys going on the same server, the assignment numbers in any particular survey may have gaps in numbering, such as 34, 35, 49, 50, … Assignment numbers are assigned on the Survey Solutions server chronologically, and thus assignments with larger numbers are more recent.

This may be inconvenient for subsequent processing or publication of data. The assignments may be renumbered to eliminate gaps. And in contrast to interview__ids the assignment__ids are strictly increasing.

We use the same approach for inter-temporal linking, such as linking 2-nd quarter data with the 1-st quarter data.

FAQ

1. Why does not Survey Solutions number the interviews as simply 1,2,…. ?

Because Survey Solutions is a distributed system with semi-autonomous nodes. This means that tablet of interviewer 1 needs to assign numbers to interviews and tablet of interviewer 2 needs to do the same without a possibility of communicating to each other (and with all other tablets) before assigning a new number to an interview.

2. Why does not Survey Solutions number the interviews as username1, username2, username3, etc?

This would be incompatible with multi-mode surveys, where the same interviewer may be utilizing a tablet for some interviews and directly accessing the server for others.

3. In a panel survey I forgot to include the quarter (1,2,3,4) among the identifying variables, hence for each household I have 4 assignments with identical identification information. Is this a problem?

A proper setup should either include a quarter identifier among the variables as the cover page, or importing the questionnaire 4 times to isolate interviews of each quarter by questionnaire name plus version. Survey Solutions will not confuse the records corresponding to different interviews even if their identification information is exactly the same, because it peeks to the interview__id variable storing a unique GUID to match the records of different levels (such as persons to households). Yet your supervisors will have no obvious guidance on what is different between the 4 interviews, and finding an interview for e.g. the second quarter will be a problem. Should this happen in practice, utilize the paradata, or the system-generated interview__actions file to determine when the interview occurred and hence to which quarter it belongs.

\ No newline at end of file diff --git a/headquarters/export/index.html b/headquarters/export/index.html new file mode 100644 index 00000000..746cecd2 --- /dev/null +++ b/headquarters/export/index.html @@ -0,0 +1,69 @@ +Data Export +

Data Export

Data Export

Export of data may be requested at any time when the Survey Solutions server is +running (during or after the survey) and it doesn’t cause any interruption of +the synchronization (of mobile devices) or online work (CAWI surveys). In case +the server is busy processing other export requests, the new export jobs are +put into a queue and processed sequentially. This article describes how to +request a data export from Survey Solutions.

May 6, 2024

System generated files

Every archive of data exported from the Survey Solutions Headquarters +contains among the user data the following system-generated data files:

The above data files are saved in the same data format as the main survey +data, for example, if the main data is requested in Stata format, the +system-generated data files will also be exported in Stata format.

The data files are also accompanied by an automatically generated text file +named export__readme.txt. This file documents which version of +the Survey Solutions software was used to export the data, when the +export was done, and placement of variables into the data files. Here is +an example of such a file that +may be accompanying, e.g. an agricultural survey.

May 5, 2024

Paradata file format

Every survey collected in Survey Solutions is supplemented with a paradata file. No actions are needed from the questionnaire designers or headquarters team to collect it, it is produced automatically by the Survey Solutions software.

The paradata files describe the process of data collection. They explain how the data was entered, detailing all edits, who and when undertaken them. These files may be large and most conveniently processed using specialized statistical packages, rather than general purpose tools.

January 30, 2024

Interview diagnostics file

interview__diagnostics file is a special service file, automatically produced +with every data export, that contains useful information for assessing the quality +of interviews:

  • number of invalid entities (invalid answers and errors in static texts),
  • number of questions with comments,
  • duration of the interview etc.

For a description of available fields and their types, refer to this article.

This is especially useful for user-written monitoring systems that work alongside +Survey Solutions and continually monitor the quality of incoming data by +periodically exporting the data and building customized reports. Supervisors already +had access to all the same information interactively through interview details and +interview history pages. The interview statistics API endpoint has been updated to +obtain the same information for API consumers.

December 5, 2023

Audio Audit Files

Survey Solutions has a feature of audio audit: a capability of recording an interview and provide the recording for the audit of the interviewing process. The recording covers all the duration of the interview from the moment it starts to completion, except the time when:

  • the tablet is off;
  • the user switches to a different app;
  • the interview is not active (Interviewer has switched to a different interview or switched to the dashboard);
  • the audio recording is done as an answer to an audio question;
  • when the interview is completed over the web (CAWI mode).

Audio audit files are exported as part of the binary data. +The naming convention used in forming this data archive is as following:

February 14, 2022

How does Survey Solutions identify records and establish connections between data?

Survey Solutions works with various surveys done in different conditions, so trying to come up with one naming scheme that would be equally suitable for all applications is a challenging task. A particular survey may come up with a numbering like 2 digits of the province code, followed by 3 digits of the district code, followed by the household id of 4 digits. Yet it is not a good identifier in the case where several surveys are conducted on the same server, or there may be repetitive visits, and other twists.

October 5, 2020

Organization of meta-data storage in the exported data

Survey Solutions export file is a zip-archive with multiple data files corresponding to various levels of data and system-generated accompanying data reflecting the comments, errors, statuses and other technical information about interviews and assignments. When the corresponding setting is activated in the export interface, the data is accompanied with the meta-data reflecting the structure of the questionnaire. The meta-data is saved to the subfolder Questionnaire of the export archive.

The questionnaire subfolder contains the following information:

September 17, 2020

Merging files of different data levels

Survey Solutions produces export data files separately for each data level. +This can be for example households, persons, plots, crops, etc. The process +is completely automatic and not configurable by the user.

If you need to combine information from different data levels (for example +bring household characteristics to the personal level) you can utilize a +statistical package to post-process your data. This is a basic operation +supported by most packages, such as SAS, SPSS, Stata, R and others, though +the exact terms may differ by package. Note that doing this in spreadsheet +applications like Excel introduces unnecessary complications.

January 7, 2019

Export of calculated variables

Calculated variables are commonly used in CAPI questionnaires to implement complex +checks or indicate to the interviewer some derived information. For +example, one may create a variable that calculates the number of +children in the household,

numChildren = Persons.Count(person => person.age < 18)
+

and use this variable in subsequent questions to check if the number of +children in a household  exceeds a specific threshold.

Starting with version 5.24 of Survey Solutions these variables will be +automatically included in the export data. This is especially useful +when the variables are dependent on random sequence of values generated +by Survey Solutions, such as in the cases of random selection of +respondents in households or enterprises. +No special actions are required on the user side. After the upgrade the new +data downloads will contain the calculated variables as part of the +exported data. The variables are exported in the order they appear in +the questionnaire.

September 28, 2018

Missing values

Survey Solutions recognizes two situations of missingness:

  1. the value is missing because the logic of the questionnaire is +disabling (skipping) this question. There is nothing that the +interviewer can do to enter a value in such a field and in some +cases even to see the question and its options.
  2. the value is missing despite the question is enabled (not skipped). +This could be because of any of the following:
  • interviewer hasn’t reached this point in the interview;
  • interviewer missed the question, didn’t ask it and hence no answer +was recorded;
  • none of the options was suitable to accommodate the respondent’s +answer and hence the interviewer didn’t record the answer;
  • other similar situations.

In the first case the missingness will be reflected in the export data +file with a system missing, in the second case special reserved values +will be used:

June 13, 2017
\ No newline at end of file diff --git a/headquarters/export/interview_diagnostics_file/images/interview__diagnostics.jpg b/headquarters/export/interview_diagnostics_file/images/interview__diagnostics.jpg new file mode 100644 index 00000000..9ae1adec Binary files /dev/null and b/headquarters/export/interview_diagnostics_file/images/interview__diagnostics.jpg differ diff --git a/headquarters/export/interview_diagnostics_file/images/interview__diagnostics.png b/headquarters/export/interview_diagnostics_file/images/interview__diagnostics.png new file mode 100644 index 00000000..487d9c2c Binary files /dev/null and b/headquarters/export/interview_diagnostics_file/images/interview__diagnostics.png differ diff --git a/headquarters/export/interview_diagnostics_file/index.html b/headquarters/export/interview_diagnostics_file/index.html new file mode 100644 index 00000000..6c1f0f81 --- /dev/null +++ b/headquarters/export/interview_diagnostics_file/index.html @@ -0,0 +1,29 @@ +Interview diagnostics file +

Interview diagnostics file

December 5, 2023

interview__diagnostics file is a special service file, automatically produced +with every data export, that contains useful information for assessing the quality +of interviews:

  • number of invalid entities (invalid answers and errors in static texts),
  • number of questions with comments,
  • duration of the interview etc.

For a description of available fields and their types, refer to this article.

This is especially useful for user-written monitoring systems that work alongside +Survey Solutions and continually monitor the quality of incoming data by +periodically exporting the data and building customized reports. Supervisors already +had access to all the same information interactively through interview details and +interview history pages. The interview statistics API endpoint has been updated to +obtain the same information for API consumers.

This feature was proposed by Andreas Kutka and other users.

\ No newline at end of file diff --git a/headquarters/export/merging-files/index.html b/headquarters/export/merging-files/index.html new file mode 100644 index 00000000..3a80e8af --- /dev/null +++ b/headquarters/export/merging-files/index.html @@ -0,0 +1,63 @@ +Merging files of different data levels +

Merging files of different data levels

January 7, 2019

Survey Solutions produces export data files separately for each data level. +This can be for example households, persons, plots, crops, etc. The process +is completely automatic and not configurable by the user.

If you need to combine information from different data levels (for example +bring household characteristics to the personal level) you can utilize a +statistical package to post-process your data. This is a basic operation +supported by most packages, such as SAS, SPSS, Stata, R and others, though +the exact terms may differ by package. Note that doing this in spreadsheet +applications like Excel introduces unnecessary complications.

Here is an example. Suppose we have a survey with interviews +corresponding to households and within each household we collect +information about the household members. Each household has a +categorical attribute region (among other characteristics) and a list of +household members (text list type question hhmembers). Suppose further +that the main survey level has the ID HOUSEHOLDS and the information +about the household members is collected in the roster called MEMBERS.

Now, if we were to combine the household and personal information together, +we would run a code like the following:

   version 14.0
+   clear all
+   cd "C:\path\to\data\"
+   use "MEMBERS.dta"
+   merge m:1 interview__id using "HOUSEHOLDS.dta" , generate(merge_quality) keepusing(region)
+   tabulate merge_quality
+   assert merge_quality==3
+   drop merge_quality
+

where all the magic happens in the single merge command and the rest is +helping to set the stage for the merge or to control the quality of the +merge.

Note that:

  • you will need to adjust the path to data as appropriate for the location +of the unpacked exported data folder on your computer;
  • this is a many-to-one merge, since there are (potentially) multiple +persons in a household;
  • we are merging by matching the cases based on the variable interview__id +and in the resulting dataset the level is still that of persons, but now +with the household variables (region in our case) attached;
  • in the resulting dataset the cases are identified by the household id +variable interview__id and person id within the household variable +hhmembers__id, both identifying variables are generated by Survey Solutions +automatically;
  • all members of a household will have the same value of the region +(and other household level variables);
  • we specified the names of the variable region to bring from the household +level, you can omit this option and then Stata brings all the variables from +that level.

Depending on the analysis that you intend to perform, you may need to +merge sequentially several files, for example to bring the household and +plot characteristics to the crop level, or make several merges to combine +e.g. households with persons and households with livestock, or create +other structures.

More formally:

The exact syntax may vary by versions of a particular package. Refer to the +documentation appropriate for the software you are using.

\ No newline at end of file diff --git a/headquarters/export/metadata-organization/index.html b/headquarters/export/metadata-organization/index.html new file mode 100644 index 00000000..5204c3fd --- /dev/null +++ b/headquarters/export/metadata-organization/index.html @@ -0,0 +1,21 @@ +Organization of meta-data storage in the exported data +

Organization of meta-data storage in the exported data

September 17, 2020

Survey Solutions export file is a zip-archive with multiple data files corresponding to various levels of data and system-generated accompanying data reflecting the comments, errors, statuses and other technical information about interviews and assignments. When the corresponding setting is activated in the export interface, the data is accompanied with the meta-data reflecting the structure of the questionnaire. The meta-data is saved to the subfolder Questionnaire of the export archive.

The questionnaire subfolder contains the following information:

  • file content.zip - which is the content of the questionnaire as it is designed in the Designer tool;
  • file ddi.xml - which is a representation of the questionnaire in the DDI format;
  • subfolder PDF - which contains PDF-previews of the questionnaire rendered in all languages of the questionnaire. The translations are named with a human-readable title of the language followed by the questionnaire variable (both as specified in the Designer tool).

The content of the questionnaire may be accessed by the user-written applications by inspecting the zip-archive content.zip. This archive has the following structure:

  • file document.json - JSON file describing the content of the questionnaire (includes all sections, questions, logical expressions, etc).
  • folder Attachments - contains individually saved attachments to questionnaire object. Each attachment is saved into a subfolder bearing the GUID of the attachment (as referenced to from the questionnaire document) and a file Content-Type.txt which mentions the attachment content type.
  • folder Categories - contains sets of reusable categories saved as individual files in Excel format (xlsx) and named with the GUID of the reusable categories set (as referenced from the questionnaire document).
  • folder Lookup Tables - contains lookup tables saved as individual files in tab-delimited text format (txt) and named with the GUID of the reusable categories set (as referenced from the questionnaire document).
  • folder Translations - contains translations of questionnaire saved as individual files in Excel format (xlsx) and named with the GUID of translation (as referenced from the questionnaire document).
\ No newline at end of file diff --git a/headquarters/export/missing-values/index.html b/headquarters/export/missing-values/index.html new file mode 100644 index 00000000..ef928cfe --- /dev/null +++ b/headquarters/export/missing-values/index.html @@ -0,0 +1,30 @@ +Missing values +

Missing values

June 13, 2017

Survey Solutions recognizes two situations of missingness:

  1. the value is missing because the logic of the questionnaire is +disabling (skipping) this question. There is nothing that the +interviewer can do to enter a value in such a field and in some +cases even to see the question and its options.
  2. the value is missing despite the question is enabled (not skipped). +This could be because of any of the following:
  • interviewer hasn’t reached this point in the interview;
  • interviewer missed the question, didn’t ask it and hence no answer +was recorded;
  • none of the options was suitable to accommodate the respondent’s +answer and hence the interviewer didn’t record the answer;
  • other similar situations.

In the first case the missingness will be reflected in the export data +file with a system missing, in the second case special reserved values +will be used:

  • for numeric variables, the value: -999,999,999;
  • for string variables, the value: ##N/A##.

These special values should be replaced with proper missing values prior +to performing the analysis.

\ No newline at end of file diff --git a/headquarters/export/page/1/index.html b/headquarters/export/page/1/index.html new file mode 100644 index 00000000..26eafa91 --- /dev/null +++ b/headquarters/export/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/ + \ No newline at end of file diff --git a/headquarters/export/page/2/index.html b/headquarters/export/page/2/index.html new file mode 100644 index 00000000..b7b8c017 --- /dev/null +++ b/headquarters/export/page/2/index.html @@ -0,0 +1,44 @@ +Data Export +

Data Export

Stata export file format

When Survey Solutions v5.18 is writing an exported data file in Stata +format it is producing it according to Stata 14 data file specification, +available from StataCorp LLC. 

Stata versions prior to version 14.0 (e.g. 12.0, 13.1, etc) cannot open +these files because these older versions of the software are not aware +of the newer file format. The message that the user will see on the +screen varies, and may look, for example like the following:

April 11, 2017

Rosters-Export File Anatomy

Recall that each exported file corresponds with a level of observation +in the questionnaire. Rosters and their source question are exported as +follows:

  • Source question: Export file at the questionnaire level (corresponds +with the name of the questionnaire)
  • Roster: Export file at the roster level (corresponds with the roster +name)

List Roster

In the export file at the questionnaire level, a list roster source +question generates as many columns as the defined maximum number of list +elements. Recorded values will be shown in each column.

November 9, 2016

Questionnaire Data - Export File Anatomy

Every questionnaire will contain at least one data file corresponding to +the main level of data, and potentially one or more subordinate files +corresponding to additional levels defined by the rosters.

Questionnaire level file: file name corresponds to the title of the questionnaire  

The questionnaire level export file consists of the following columns: +Id, question variable names including roster trigger questions, and the +system generated case Id.

September 23, 2016

Data Export Files

Overview

The exported data will be in a .zip file containing one or more files. +The number of such files is a function of the structure of the +questionnaire, meaning that exporting produces one file per level of +observation in the questionnaire, or in other words in addition to one +file at the questionnaire level, each roster in the questionnaire will +generate another export file.  For example, one file for household-level +variables, one file for household member-level variables, and one file +for asset-level or consumption item-level variables. Additionally, the +.zip file will contain interview comments and interview actions files. + 
 

August 18, 2016
\ No newline at end of file diff --git a/headquarters/export/paradata_file_format/index.html b/headquarters/export/paradata_file_format/index.html new file mode 100644 index 00000000..3933dea8 --- /dev/null +++ b/headquarters/export/paradata_file_format/index.html @@ -0,0 +1,34 @@ +Paradata file format +

Paradata file format

January 30, 2024

Every survey collected in Survey Solutions is supplemented with a paradata file. No actions are needed from the questionnaire designers or headquarters team to collect it, it is produced automatically by the Survey Solutions software.

The paradata files describe the process of data collection. They explain how the data was entered, detailing all edits, who and when undertaken them. These files may be large and most conveniently processed using specialized statistical packages, rather than general purpose tools.

The paradata is supplied in a zip archive with a tab-delimited data file and supplementary meta-data files inside.

Contents of paradata export archive

File
Description
paradata.tabParadata in tab-delimited format. Each line of this file corresponds to one recorded event. See below description of the columns of this file.
paradata.doScript for Stata statistical package to import tab-delimited paradata.
Example
export__readme.txtHuman-readable description file (in text format).
Example
export__info.jsonMachine-readable description/identification file (in JSON format).
Example

Columns of paradata.tab file

The paradata events are recorded (along with their attributes) placed in the following columns:

Variable
Type
Meaning
Example
interview__id
string
32-hexadecimal ID (GUID) of the interview affected by the event.75efdc0456fb4b35be4690bd19eab870
order
numeric integer
Numeric sequential ID of the event (starts from 1 for every interview).1
event
string
Type of the event that has been recorded (see coding of event types below).AnswerSet
responsible
string
Login name of the person responsible for the eventEnumerator25
role
numeric
Role of the person mentioned in the responsible column +(see coding of roles below)1
timestamp_utc
string
Date and time when the event occurred combined in a single timestamp (in UTC), using the following format:
YYYY-MM-DDThh:mm:ss.msc
2018-12-28T23:00:59.123
tz_offset
string
Time zone offset (relative to UTC).-05:00:00
parameters
string
One or more parameters of the event, the interpretation of which depends on the type of event.GPSLOC||16.73526463,75.93207878[13]27||2.0

Paradata events and associated codes

The following table outlines the types of the events tracked by Survey Solutions. You may encounter some of them (though not all) in the paradata. The table also provides the interpretation of the parameters column corresponding to each type of event. Presence of some of the types of events is dependent on the version of Survey Solutions.

Event name
(alphabetical)
Numeric code
Meaning
Parameters
AnswerRemoved3Question's answer was removed (cleared).varname||OptionalRosterAddress
AnswerSet2Question was answered in the interview.varname||value||OptionalRosterAddress

Values are mostly same as they are present in the tab-delimited export files, with a few exceptions where the value in the tab-delimited file is split among multiple columns.

Values of multiselect questions are recorded as codes of selected items separated by commas: 323.0, 315.0, 147.0

Values of text list questions are recorded as specified items separated by the |-character: Sergiy|Maryna|Natalia

Values of GPS questions are represented in the form latitude,longitude[accuracy]altitude, such as 16.73526463,75.93207878[13]27
ApproveByHeadquarter8Indicates when the interview was approved by an HQ user.Comment entered by the HQ user during approval.
ApproveBySupervisor7Indicates when the supervisor approved the interview.Comment entered by the supervisor during approval.
ClosedBySupervisor30Indicates when the supervisor closed the interview opened for a review.NO PARAMETERS
CommentSet4Occurs when a comment was written to a question in the interview.varname||comment - if the question is not in any roster
varname||comment||OptionalRosterAddress - if the question is part of a roster.
Completed5Indicates when the interview was marked as completed by the interviewer.Comment entered by the interviewer at completion.
Deleted11ReservedNO PARAMETERS.
GroupDisabled16⚠ This event is not included in the exported paradata file.

Event that corresponds to the group (section, subsection) being declared as enabled (to be skipped, not skipped).
NO PARAMETERS.
GroupEnabled15⚠ This event is not included in the exported paradata file.

Event that corresponds to the group (section, subsection) being declared as disabled (to be answered, not skipped).
NO PARAMETERS.
InterviewCreated32Occurs when the interview is created.NO PARAMETERS.
InterviewerAssigned1Event that occurs when the interviewer becomes responsible for the interview +(for example, when the interview is created from an assignment).Name of the interviewer that became responsible for this interview.
InterviewModeChanged31Event that occurs when the interview mode is set or changed +(for example, when the interviewer switches from CAPI to CAWI).New mode: CAPI or CAWI.
KeyAssigned27Newly created interview is assigned an interview key. Also occurs when a key +of the interview is modified tue to a collision with an existing interview's key. +Latest event will reflect the current interview key. Event may once OR twice per +interview only.Interview key in the form: NN-NN-NN-NN
OpenedBySupervisor29Indicates when the supervisor opened the interview for a review.NO PARAMETERS
Paused25Indicates a prolonged pause during the interviewing process, such as when the tablet goes into the sleep mode to conserve power.NO PARAMETERS
QuestionDeclaredInvalid18Event corresponding to the situation when the value of the question deemed to be invalid (not passing the specified validation).varname||OptionalRosterAddress
QuestionDeclaredValid17Event corresponding to the value of the question deemed to be valid (passing the specified validation).varname||OptionalRosterAddress
QuestionDisabled14⚠ This event is not included in the exported paradata file.

Event corresponding to the question being set to disabled state (question is to be skipped, not answered).
varname||OptionalRosterAddress
QuestionEnabled13⚠ This event is not included in the exported paradata file.

Event corresponding to the question being set to enabled state (question is to be answered, not skipped).
varname||OptionalRosterAddress
ReceivedByInterviewer20Indicates reception of the rejected interview by the interviewer on the tablet.NO PARAMETERS
ReceivedBySupervisor21Indicates when the completed interview was received by the supervisor.NO PARAMETERS
RejectedByHeadquarter10Occurs when an interview is rejected by a headquarters user.Comment written by the HQ user when the interview was rejected.
RejectedBySupervisor9Occurs when an interview is rejected by the supervisor.Comment written by the supervisor when the interview was rejected.
Restarted6Occurs when an interview is restarted on a tablet (from a completed status).NO PARAMETERS
Restored12Reserved.
Not to be confused with 'restarted' above.
NO PARAMETERS
Resumed26Indicates resuming work on the interview, such as when the tablet wakes up after going to a sleep mode.NO PARAMETERS
SupervisorAssigned0Newly created interview is assigned as responsibility to the team of the interviewer, which started the interview.NO PARAMETERS
TranslationSwitched28Occurs when the language (translation) of the interview is switched.Name of the selected language.
UnapproveByHeadquarters19Occurs when the interview was unapproved by the HQ (or an admin) user.Comment (if provided) when the interview was unapproved. Typically the automatic message "[Approved by Headquarters was revoked]".
VariableDisabled24Occurs when a variable is disabled (when it is part of a section which gets disabled).varname||value||OptionalRosterAddress
VariableEnabled23Occurs when a variable is enabled (when it is part of a section which gets enabled).varname||value||OptionalRosterAddress
VariableSet22Occurs when a variable is recalculated.varname||value||OptionalRosterAddress

OptionalRosterAddress denotes one or more numeric rowcodes +for each level of nesting when the event affects an item (question, +variable, etc) in a roster. In case of multiple rowcodes they are +separated by commas. For example, 2.0,5.0,0.0 may correspond to the job +coded 0, of the person with rowcode 5 of the household with rowcode 2. If +the item is not part of any roster, it's OptionalRosterAddress is blank.

Varname is the name of the data variable +corresponding to a question or a calculated variable (as specified in +the Questionnaire Designer).

Coding of roles

Numeric codes used to encode the role in the paradata records have the following meaning:

Numeric codeMeaning
0<UNKNOWN ROLE>
1Interviewer
2Supervisor
3Headquarter
4Administrator
5API User
\ No newline at end of file diff --git a/headquarters/export/paradata_file_format/resources/export__info.json b/headquarters/export/paradata_file_format/resources/export__info.json new file mode 100644 index 00000000..0e9585db --- /dev/null +++ b/headquarters/export/paradata_file_format/resources/export__info.json @@ -0,0 +1,5 @@ +{ + "HeadquartersVersion": "23.09.3 (build 35381)", + "ExportServiceVersion": "23.09.2 (build 35198)", + "QuestionnaireId": "GUIDGUIDGUIDGUIDGUIDGUIDGUIDGUID$123" +} \ No newline at end of file diff --git a/headquarters/export/paradata_file_format/resources/export__readme.txt b/headquarters/export/paradata_file_format/resources/export__readme.txt new file mode 100644 index 00000000..3db8a9e5 --- /dev/null +++ b/headquarters/export/paradata_file_format/resources/export__readme.txt @@ -0,0 +1,3 @@ +Generated by Survey Solutions export module 23.09.2 (build 35198) on Wednesday, January 31, 2024 +The data in this download were collected using the Survey Solutions questionnaire "Agriculture Survey Listing Questionnaire". +You can open the questionnaire in the Survey Solutions Designer online by that link: https://designer.mysurvey.solutions/questionnaire/details/GUIDGUIDGUIDGUIDGUIDGUIDGUIDGUID$123 diff --git a/headquarters/export/paradata_file_format/resources/paradata.do b/headquarters/export/paradata_file_format/resources/paradata.do new file mode 100644 index 00000000..cd312d7d --- /dev/null +++ b/headquarters/export/paradata_file_format/resources/paradata.do @@ -0,0 +1,12 @@ +insheet using "paradata.tab", tab case names +label variable interview__id `"Unique 32-character long identifier of the interview"' +label variable order `"Sequential event number within each interview"' +label variable event `"Type of event happened"' +label variable responsible `"Login name of the person who initiated the event"' +label define role 0 `""' 1 `"Interviewer"' 2 `"Supervisor"' 3 `"Headquarter"' 4 `"Administrator"' 5 `"API User"' +label values role role +label variable role `"System role of the person who initiated the event"' +label variable timestamp_utc `"Date and time when the event happened"' +label variable tz_offset `"Timezone offset relative to UTC"' +label variable parameters `"Event-specific parameters"' + diff --git a/headquarters/export/questionnaire-data---export-file-anatomy/images/677291.png b/headquarters/export/questionnaire-data---export-file-anatomy/images/677291.png new file mode 100644 index 00000000..90006e04 Binary files /dev/null and b/headquarters/export/questionnaire-data---export-file-anatomy/images/677291.png differ diff --git a/headquarters/export/questionnaire-data---export-file-anatomy/images/677291_hu14087300740751273475.png b/headquarters/export/questionnaire-data---export-file-anatomy/images/677291_hu14087300740751273475.png new file mode 100644 index 00000000..9d1b148a Binary files /dev/null and b/headquarters/export/questionnaire-data---export-file-anatomy/images/677291_hu14087300740751273475.png differ diff --git a/headquarters/export/questionnaire-data---export-file-anatomy/images/691174.png b/headquarters/export/questionnaire-data---export-file-anatomy/images/691174.png new file mode 100644 index 00000000..97c35dc9 Binary files /dev/null and b/headquarters/export/questionnaire-data---export-file-anatomy/images/691174.png differ diff --git a/headquarters/export/questionnaire-data---export-file-anatomy/images/691174_hu10929226309963990186.png b/headquarters/export/questionnaire-data---export-file-anatomy/images/691174_hu10929226309963990186.png new file mode 100644 index 00000000..310dbede Binary files /dev/null and b/headquarters/export/questionnaire-data---export-file-anatomy/images/691174_hu10929226309963990186.png differ diff --git a/headquarters/export/questionnaire-data---export-file-anatomy/index.html b/headquarters/export/questionnaire-data---export-file-anatomy/index.html new file mode 100644 index 00000000..ae76bf32 --- /dev/null +++ b/headquarters/export/questionnaire-data---export-file-anatomy/index.html @@ -0,0 +1,46 @@ +Questionnaire Data - Export File Anatomy +

Questionnaire Data - Export File Anatomy

September 23, 2016

Every questionnaire will contain at least one data file corresponding to +the main level of data, and potentially one or more subordinate files +corresponding to additional levels defined by the rosters.

Questionnaire level file: file name corresponds to the title of the questionnaire  

The questionnaire level export file consists of the following columns: +Id, question variable names including roster trigger questions, and the +system generated case Id.

1. Id. Survey Solutions +generated identifier for each survey case.
2. Variables for main (questionnaire) +level. These variables contain the answers for the questions in +the main questionnaire level. All sections of the questionnaire at the +same level are automatically combined.
3. Rosters trigger questions. +Answers to any questions that trigger rosters are also exported +at their respective level. In this illustration the Household Roster +(variable hh_list) and Garden Roster (variable garden_list) text list +questions at the questionnaire level.
4. ssSys_IRnd. A system generated +specific random number between 0 and 1 for each survey case.  

+Subordinate file(s): file name corresponds to roster ID  

The roster data is exported in subordinate files, which include the +following columns: Id, trigger question (only if the roster is triggered +by text list question), answers to roster questions, and system +generated identifier ParentId1. 
 

1. Id. Identifiers corresponding to +roster row code (@rowcode) of each item.
2. Roster source question. Values +recorded in the list question that has triggered the roster (only for +rosters triggered by text list questions).
3. Variables for questions inside the +household roster.
4. ParentId1. Refers to the Id +attribute of the corresponding parent (record at higher level). For +example, in this case the value of ParentId1 contains an identifier of +the household, and this value matches the value in the Id column of the +questionnaire level file.

\ No newline at end of file diff --git a/headquarters/export/rosters-export-file-anatomy/images/713157.png b/headquarters/export/rosters-export-file-anatomy/images/713157.png new file mode 100644 index 00000000..eed9989f Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713157.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/images/713157_hu17057967305671723299.png b/headquarters/export/rosters-export-file-anatomy/images/713157_hu17057967305671723299.png new file mode 100644 index 00000000..bc466b29 Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713157_hu17057967305671723299.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/images/713158.png b/headquarters/export/rosters-export-file-anatomy/images/713158.png new file mode 100644 index 00000000..e199dff5 Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713158.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/images/713158_hu9170247322391933492.png b/headquarters/export/rosters-export-file-anatomy/images/713158_hu9170247322391933492.png new file mode 100644 index 00000000..70715d4b Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713158_hu9170247322391933492.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/images/713160.png b/headquarters/export/rosters-export-file-anatomy/images/713160.png new file mode 100644 index 00000000..05f21a1e Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713160.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/images/713160_hu4564448132495009510.png b/headquarters/export/rosters-export-file-anatomy/images/713160_hu4564448132495009510.png new file mode 100644 index 00000000..7ced6489 Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713160_hu4564448132495009510.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/images/713165.png b/headquarters/export/rosters-export-file-anatomy/images/713165.png new file mode 100644 index 00000000..2136902d Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713165.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/images/713165_hu8300056290673420874.png b/headquarters/export/rosters-export-file-anatomy/images/713165_hu8300056290673420874.png new file mode 100644 index 00000000..04f17a03 Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713165_hu8300056290673420874.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/images/713172.png b/headquarters/export/rosters-export-file-anatomy/images/713172.png new file mode 100644 index 00000000..203ce8aa Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713172.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/images/713172_hu15411065029607983771.png b/headquarters/export/rosters-export-file-anatomy/images/713172_hu15411065029607983771.png new file mode 100644 index 00000000..6143c560 Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713172_hu15411065029607983771.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/images/713178.png b/headquarters/export/rosters-export-file-anatomy/images/713178.png new file mode 100644 index 00000000..24aecacd Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713178.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/images/713178_hu14018952530687562484.png b/headquarters/export/rosters-export-file-anatomy/images/713178_hu14018952530687562484.png new file mode 100644 index 00000000..757cdd1b Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713178_hu14018952530687562484.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/images/713181.png b/headquarters/export/rosters-export-file-anatomy/images/713181.png new file mode 100644 index 00000000..7323941a Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713181.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/images/713181_hu16703413914254675128.png b/headquarters/export/rosters-export-file-anatomy/images/713181_hu16703413914254675128.png new file mode 100644 index 00000000..98cb3050 Binary files /dev/null and b/headquarters/export/rosters-export-file-anatomy/images/713181_hu16703413914254675128.png differ diff --git a/headquarters/export/rosters-export-file-anatomy/index.html b/headquarters/export/rosters-export-file-anatomy/index.html new file mode 100644 index 00000000..023e26ae --- /dev/null +++ b/headquarters/export/rosters-export-file-anatomy/index.html @@ -0,0 +1,54 @@ +Rosters-Export File Anatomy +

Rosters-Export File Anatomy

November 9, 2016

Recall that each exported file corresponds with a level of observation +in the questionnaire. Rosters and their source question are exported as +follows:

  • Source question: Export file at the questionnaire level (corresponds +with the name of the questionnaire)
  • Roster: Export file at the roster level (corresponds with the roster +name)

List Roster

In the export file at the questionnaire level, a list roster source +question generates as many columns as the defined maximum number of list +elements. Recorded values will be shown in each column.

In the export file at the roster level, each value recorded is on a +separate row.

All files contain an Id and Parent Id column. The Id column corresponds +to the order in which the list item is shown in the export file at the +questionnaire level.  The Parent Id column is the survey case Id number. +The remaining columns in the file correspond to variable names of other +questions in the roster.

Multi-Select Roster

In the export file at the questionnaire level, a multi-select roster +source question generates an equal number of columns as there are answer +options. Recorded values will be shown in each column.

The picture below displays how a multi-select roster source question in +yes/no mode is exported.

In the export file at the roster level, each value recorded is on a +separate row.

All files contain an Id and Parent Id column. The Id column corresponds +to answer option code that is recorded as “yes” in the roster source +question, which is also shown in the export file at the questionnaire +level as “1”.  The Parent Id column is the survey case Id number. The +remaining columns in the file correspond to variable names of other +questions in the roster.

Numeric Roster

In the questionnaire level export file, the numeric roster source +question is simply one column labeled with the question variable name. + 

In the export file at the roster level, rows are generated according to +the number recorded in the numeric roster source question.

All files contain an Id and Parent Id column. The Id column corresponds +to row code of each item listed in the roster. The Parent Id column is +the survey case Id number. The remaining columns in the file correspond +to variable names of other questions in the roster.

Fixed Items Roster

Unlike the three other rosters described previously, the fixed titles +roster is not linked to a source question, and therefore is not included +in the questionnaire level export file. 

In the export file at the roster level, rows are generated according to +the number roster items defined in Designer. All files contain an Id and +Parent Id column. The Id column corresponds to row code of each item +listed in the roster. The Parent Id column is the survey case Id number. +The remaining columns in the file correspond to variable names of +questions in the roster.

\ No newline at end of file diff --git a/headquarters/export/stata-export-file-format/index.html b/headquarters/export/stata-export-file-format/index.html new file mode 100644 index 00000000..f97a60ea --- /dev/null +++ b/headquarters/export/stata-export-file-format/index.html @@ -0,0 +1,40 @@ +Stata export file format +

Stata export file format

April 11, 2017

When Survey Solutions v5.18 is writing an exported data file in Stata +format it is producing it according to Stata 14 data file specification, +available from StataCorp LLC. 

Stata versions prior to version 14.0 (e.g. 12.0, 13.1, etc) cannot open +these files because these older versions of the software are not aware +of the newer file format. The message that the user will see on the +screen varies, and may look, for example like the following:

dta too modern
+    File D:\1.dta is from a more recent version of Stata.  Type update query
+    to determine whether a free update of Stata is available, and browse 
+    http://www.stata.com/ to determine if a new version is available.
+r(610);
+

Or it may simply suggest that the data file is unknown format or +corrupt.

Users having access to Stata 14 software should open the files exported +from Survey Solutions with the Stata 14 software. If they need to pass +the data to users of older versions of Stata, they should resave the +data in the older format by using the saveold command in their Stata +(for each datafile produced by Survey Solutions).

Users not having access to Stata 14 software may download tab-delimited +data and run the accompanying do-files to import the data into their +Stata software, then save the imported data as a Stata file +corresponding to their version of Stata.

Alternatively, users may download data exported from Survey Solutions in +SPSS file format and import them with the help of a user-written command +usespss.

\ No newline at end of file diff --git a/headquarters/export/system-generated---export-file-anatomy/index.html b/headquarters/export/system-generated---export-file-anatomy/index.html new file mode 100644 index 00000000..07513ce9 --- /dev/null +++ b/headquarters/export/system-generated---export-file-anatomy/index.html @@ -0,0 +1,31 @@ +System generated files +

System generated files

May 5, 2024

Every archive of data exported from the Survey Solutions Headquarters +contains among the user data the following system-generated data files:

The above data files are saved in the same data format as the main survey +data, for example, if the main data is requested in Stata format, the +system-generated data files will also be exported in Stata format.

The data files are also accompanied by an automatically generated text file +named export__readme.txt. This file documents which version of +the Survey Solutions software was used to export the data, when the +export was done, and placement of variables into the data files. Here is +an example of such a file that +may be accompanying, e.g. an agricultural survey.

The contents of the system-generated data files is described in the table below:

assignment__actions

VariableTypeMeaningExample
assignment__idnumericUnique id of the assignment.6037
datestringDate when the action was taken2018-12-12
timestringTime when the action was taken10:11:12
actionnumericType of action taken. See assignment action codes.12
originatorstringLogin name of the person performing the actionJohnSup
rolenumericSystem role of the person performing the action. See role codes.2
responsible_namestringLogin name of the person now responsible for the interviewJackInt
responsible_rolenumericSystem role of the person now responsible for the interview. See role codes.1
old__valuestringValue that was changed (optional).3
new__valuestringNew value that was specified (optional).5
commentstringAny comment left by the action originator.Complete this assignment by Friday!

interview__actions

VariableTypeMeaningExample
interview__keystringInterview key (identifier in XX-XX-XX-XX format)12-34-56-78
interview__idstringUnique 32-character long identifier (GUID) of the interview.5b3c8288289646699580e16f5d1b6d1e
datestringDate when the action was taken2018-12-12
timestringTime when the action was taken10:11:12
actionnumericType of action taken. See action codes.12
originatorstringLogin name of the person performing the actionJohnSup
rolenumericSystem role of the person performing the action. See role codes.2
responsible_namestringLogin name of the person now responsible for the interviewJackInt
responsible_rolenumericSystem role of the person now responsible for the interview. See role codes.1

interview__comments

VariableTypeMeaningExample
interview__keystringInterview key (identifier in XX-XX-XX-XX format)12-34-56-78
interview__idstringUnique 32-character long identifier (GUID) of the interview5b3c8288289646699580e16f5d1b6d1e
roster*stringName of the roster containing the variablemembers
id1*numericRoster ID of the 1st level of nesting7
id2*numericRoster ID of the 2nd level of nesting7
id3*numericRoster ID of the 3rd level of nesting7
id4*numericRoster ID of the 4th level of nesting7
variablestringVariable name for the commented questionage
ordernumericSequential order of the comment1
datestringDate when the comment was left2018-12-31
timestringTime when the comment was left12:34:56
originatorstringLogin name of the person leaving the commentJohnSup
rolenumericSystem role of the person leaving the comment. See role codes.2
commentstringText of the commentAge is confirmed by document

interview__diagnostics

VariableTypeMeaningExample
interview__keystringInterview key (identifier in XX-XX-XX-XX format)12-34-56-78
interview__idstringUnique 32-character long identifier (GUID) of the interview5b3c8288289646699580e16f5d1b6d1e
interview__statusnumericLast status of interview. See status codes.100
responsiblestringLast responsible personJohnSup
interviewersnumericNumber of interviewers who worked on this interview1
rejections__supnumericHow many times this interview was rejected by supervisors0
rejections__hqnumericHow many times this interview was rejected by HQ1
entities__errorsnumericNumber of questions and static texts with errors10
interview__durationstringActive time it took to complete the interview, DD.HH:MM:SS00.05:28:39

interview__errors

VariableTypeMeaningExample
interview__keystringInterview key (identifier in XX-XX-XX-XX format)12-34-56-78
interview__idstringUnique 32-character long identifier (GUID) of the interview5b3c8288289646699580e16f5d1b6d1e
roster*stringName of the roster containing the variablemembers
id1*numericRoster ID of the 1st level of nesting7
id2*numericRoster ID of the 2nd level of nesting7
id3*numericRoster ID of the 3rd level of nesting7
id4*numericRoster ID of the 4th level of nesting7
variablestringVariable name for the question, where validation error occurredage
typenumericType of the variable where the validation error occurred. See type codes.2
message__numbernumericNumeric index of the validation rule that has fired1
messagestringText of the error messageAge may not be negative

Fields indicated with a star (*) are optional and present only if the questionnaire +template contains rosters.

Code tables

For coded variables in the system-generated data files the following tables outline the meaning of the codes:

Coding of roles
CodeMeaning
0<UNKNOWN ROLE>
1Interviewer
2Supervisor
3Headquarter
4Administrator
5API User
 

Coding of assignment actions
CodeMeaning
0Unknown
1Created
2Archived
3Deleted
4ReceivedByTablet
5Unarchived
6AudioRecordingChanged
7Reassigned
8QuantityChanged
9WebModeChanged
 

Coding of interview actions
CodeMeaning
0SupervisorAssigned
1InterviewerAssigned
2FirstAnswerSet
3Completed
4Restarted
5ApprovedBySupervisor
6ApprovedByHeadquarter
7RejectedBySupervisor
8RejectedByHeadquarter
9Deleted
10Restored
11UnapprovedByHeadquarter
12Created
13InterviewReceivedByTablet
14Resumed
15Paused
16TranslationSwitched
17OpenedBySupervisor
18ClosedBySupervisor
19InterviewSwitchedToCawiMode
20InterviewSwitchedToCapiMode
21InterviewReceivedBySupervisor
 

Coding of interview statuses
CodeMeaning
-1Deleted
0Restored
20Created
40SupervisorAssigned
60InterviewerAssigned
65RejectedBySupervisor
80ReadyForInterview
85SentToCapi
95Restarted
100Completed
120ApprovedBySupervisor
125RejectedByHeadquarters
130ApprovedByHeadquarters
 

Coding of types
CodeMeaning
1Section
2Question
3StaticText
4Variable

See also:

paradata file format

\ No newline at end of file diff --git a/headquarters/export/system-generated---export-file-anatomy/resources/export__readme.txt b/headquarters/export/system-generated---export-file-anatomy/resources/export__readme.txt new file mode 100644 index 00000000..0ebc66f6 --- /dev/null +++ b/headquarters/export/system-generated---export-file-anatomy/resources/export__readme.txt @@ -0,0 +1,16 @@ +Exported from Survey Solutions Headquarters 18.11.241-release on Wednesday, November 14, 2018 + +HOUSEHOLDS.dta +head, GPS, interview_date, hh_list, garden_list + +hh_roster.dta +hh_relationship, hh_relationship_oth, hh_age + +ag_garden_roster.dta +ag_garden_location, ag_garden_area, ag_garden_unit, ag_plot_list + +ag_plot_roster.dta +ag_plot_location, ag_plot_area, ag_plot_unit, ag_crops + +ag_crop_roster.dta +ag_crop_stand, ag_area_planted_1, ag_area_planted_2 diff --git a/headquarters/export_of_calculated_variables/index.html b/headquarters/export_of_calculated_variables/index.html new file mode 100644 index 00000000..0cea53c7 --- /dev/null +++ b/headquarters/export_of_calculated_variables/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/export_of_calculated_variables/ + \ No newline at end of file diff --git a/headquarters/index.html b/headquarters/index.html new file mode 100644 index 00000000..e1bfc2de --- /dev/null +++ b/headquarters/index.html @@ -0,0 +1,336 @@ +Headquarters +

Headquarters

Import the Questionnaire

A questionnaire document prepared in the Designer site needs to be imported +to the Survey Solutions data server before the data collection may start in +that survey. This article outlines how to import a questionnaire from the +Designer to the HQ.

  1. In the main menu select Survey setup, then Questionnaires.

    February 6, 2024

Server Audit Log

Survey Solutions server administrator +may inspect the server audit log. The audit log lists important events that were initiated by the users on the server, identifying who made that action, and when.

For actions of interviewers, see the detailed actions log.

The server actually provides two kinds of audit logs: per workspace and server-wide.

  • To view the server audit log, the admin user should proceed to MenuAdministrationAudit log.
  • To view the audit log for a particular workspace, the admin user should proceed to MenuAdministration→ click on a workspace name in the list of workspaces → Audit log.

The audit log presents its records as a table with the following attributes:

August 20, 2023

Audio audit

Description

Audio auditing enables audio recording of the interviewing process for quality control. +Audio auditing automatically records the full interview for selected assignments, stores +the recording in encrypted audio files, and synchronizes these audio files along with the +linked interview files. It is not possible to record only parts of an interview, but it +is possible to select which assignments will be recorded.

How to enable/disable audio auditing

Before creating an assignment

  • In the main menu of the Headquarters navigate to Survey Setup > Questionnaires;
  • Click on a questionnaire;
  • In the context menu that appears, select Details;
  • Click in the box next to Record audio to enable audio auditing.

After this point, all created assignments will have audio audit enabled.

March 19, 2023

Exposed Variables

Exposed variables are special variables that are made available by Survey Solutions for speedy access that can be utilized for the filtering of observations in the interviews lists and map reports.

All questions and variables from the cover page of any questionnaire are automatically considered to be exposed and no action needs to be undertaken by the user to expose them. In addition the user may expose up to 15 questions or variables from the main level of the questionnaire (the interview level). These questions must be of the types that are acceptable for questions at the cover page.

May 11, 2021

Questionnaire Details Page

Questionnaire details page reflects information about the questionnaire +that has been earlier imported to the Headquarters. You access it by clicking +a questionnaire in the list of imported questionnaires (Survey Setup/Questionnaires)

Notably, the information properties reflect the structure of the +questionnaire as designed (number of sections, rosters, questions, etc) +and the information about how the questionnaire is configured at the Headquarters +(whether the web mode is on, whether the audio recording is turned on for +new assignments, etc).

November 19, 2019

Components of the Headquarters Software

The headquarters software is a suite of connected tools for the +administrator and headquarters users:
 

  • to track the overall progress of the survey +(Reports)
  • to review completed interviews +(Interviews)
  • to manage the human resources (Teams and +Roles)
  • to specify survey instruments, create survey assignments with those +instruments(Survey +Setup)
  • to export the data collected from these assignments (Data +Export)
  • to find a check the status of particular case assignments +(Troubleshooting)

The difference between the headquarters and administrator users is that +the administrator can create headquarters/observer user accounts, +archive user accounts, and delete questionnaire templates from the +headquarters server.

June 29, 2016

Distributing Assignments to Interviewers

Step 1

Log in to your server using a supervisor account. If you are testing +Survey Solutions, log in at demo.mysurvey.solutions using a supervisor +account. 


 

Step 2

Once the supervisor’s dashboard has loaded, select the Assignments +tab.

The list of assignments can be filtered by questionnaire template, +person responsible, and/or archived status.

June 28, 2016

Installer Command Line Parameters

Survey Solutions installer may be launched with command line parameters.

ParameterMeaningExampleDefault
Siteportport number on which the site shall be installed in IIS80809700
Connserverpart of the DB connection string identifying the address of the database serverdata.warehouse.com127.0.0.1
Connportpart of the DB connection string identifying the port of the database server4435432
Connusernameuser name for connection to the DBjohnsmithpostgres
Connpasswordpassword for connection to the DBMyPassword911
Installfolderfull installation path where the Survey Solutions server should be installedC:\World Bank\Survey SolutionsC:\Survey Solutions
Additionally, specify /s for a silent install.

Example:

Install to directory D:\SuSo\ silently and bind Survey Solutions site to port 8080 in IIS:

May 11, 2020

Alternative maps for servers in China

Survey Solutions map reports at the data server utilize maps provided by Google +through their online service. The installation sets the parameters regulating +access to this service with the parameters applicable to the majority of users, +but these servers are known to be inaccessible from the networks in China.

To enable access to Google maps from China, a different server, specific to +China, must be used. The following two parameters should be changed in the +GoogleMap section in appsettings.Production.ini configuration file of the +Survey Solutions server:

May 6, 2020

Changing the Interface Language

Survey Solutions interface for Headquarter and Supervisor users can be +presented in different languages. This article describes how to switch +the interface to be presented in an alternative language.

Recall that both HQ and Supervisor users work via a web browser. +Switching the interface is done by telling the browser to request the +content in a particular language. Note that this affects both Survey +Solutions and other sites that are visited with the same browser.

June 16, 2016

Report: Survey Statistics

Survey Statistics report is accessible to supervisors and headquarter +users, observers, and administrators.

The report presents basic statistics calculated on survey data currently +on the server and eliminates (in some cases) the need to export the data +for calculation of these statistics.

The report is always built within a single survey and is built for one +of the questions in that survey.

The report may be presented in one of the two modes: tabulation or +summary statistics. Summary statistics mode is always applied for the +numeric questions, tabulation mode is always applied for categorical +(single-select or multi-select questions).

January 15, 2020

Detailed action log

The detailed action log allows the headquarters users view important +actions undertaken by the interviewers on the tablets, such as +application start and login activities, starting or discarding an +interview, synchronization attempts, and other actions undertaken in the +last 7 days. The actions log is updated with any synchronization of the +tablet. (But if the tablet does not synchronize, there is no way for the +HQ personnel to know what actions were undertaken, since this +information won’t be sent).

June 8, 2018

Downloadable Report on Interviewers

This report is accessible in CSV, TSV, or Excel formats from the list of +the interviewers screen and contains important information about the +equipment being used by the interviewer and various statistics about the +interviewer accounts, equipment status, etc.

Thematically the indicators reported here are placed in the following +groups:

Indicator namingGroup
i_*indicators related to the interviewer account
these indicators represent static or accumulated information about the interviewer account
t_*indicators related to the tablet device;
these characteristics, like RAM size or manufacturer are not expected to change throughout the lifetime of the device.
s_*indicators related to the current status;
these characteristics, like battery charge, or screen orientation may change throughout the lifetime of the device.
z_*indicators related to the last synchronization session;
these indicators characterize the last synchronization session.
d_*indicators related to dashboard of the interviewer
these indicators characterize the state of the interviewer's dashboard.

Below is the full list of the indicators exported in this report and +their interpretation

December 6, 2017

Reports Tab: Track the Overall Progress of the Survey

Reports provide headquarters with a summary of the status of +fieldwork—of progress by questionnaire, by +team, by status duration, by +devices/interviewersby geography, by +quantityby speed, or on detailed survey +statistics

All the reports under this tab can be exported in XLSX, TAB, and CSV +formats. To export, navigate to the bottom right of the report, and +click on the desired download format.

June 29, 2016

Menu Map

This article describes the structure of the main menu and dialogs structure of the Survey Solutions Data Server.

The items in curly brackets { } are links and buttons present in the dialogs. The rest are items in the main or context menus.

Please note:

May 13, 2021

Online maps key

Usage of online maps is possible in Survey Solutions by consuming data +sources of Esri.

By default the API key is blank (not specified) and the online maps are not +selectable on mobile devices. Specifying a valid key facilitates using Esri’s +services supplying tiles for base map layer when:

  • using the map dashboard, and/or
  • answering geography type questions

in Interviewer and Supervisor apps.

Usage of the ESRI API key may (and likely will) cost you +money. It is important to familiarize yourself with the pricing, plans, charges +and limits as applicable. These conditions may be changed, possibly even without +prior notice. Pricing and billing conditions may depend on whether the user is a +private user or an organization. All of the billing for this service occurs +between you and the corresponding provider, the Survey Solutions developers are +not charging you for this service.

June 5, 2024

Map files

In Survey Solutions all maps are first uploaded to the server, then +distributed to the interviewers based on assignments of maps.

This functionality is accessible for the users in roles headquarters and +administrator only.

The Map files page is the page where the maps are managed at the Survey +Solutions server (Headquarters). It can be accessed by

The Maps dialog is using two icons to denote types of the uploaded maps:

June 5, 2024

Digital Map Formats

Survey Solutions offline maps may be prepared in any of the following formats:

FORMAT
EXTENSION
TYPE
EXTERNAL LINKS
ESRI tile package.
*.tpk

raster
USDA Tutorial on creation of TPK tile packages.
ESRI documentation Create Map Tile Package
ESRI mobile map package.
*.mmpk

raster
ESRI tutorial on creating MMPK mobile map packages.
GeoTIFF
*.tiff

raster
OGC GeoTIFF standard
Example file and +description.
Pacific Community (SPC) tutorial How to generate offline maps for Survey Solutions in QGIS.
Shapefile
*.shp
*.shx
*.dbf

vector
QGIS tutorial on creation of shapefiles.
ESRI Shapefile Technical Description

Useful links:

January 9, 2024

Shapefile maps

Survey Solutions Interviewer App displays maps for two purposes:

  • The dashboard depicts the assignments and interviews on the map by placing markers that correspond to the coordinates of an identifying question.
  • Geography questions (single- and multiple points, polyline and polygon) allow capturing geographical information by marking it on the map layer, typically a satellite or aero-photography.

Survey Solutions has been employing this functionality for several years already using the ESRI ArcGIS Android SDK components. A common problem for the interviewers is understanding the boundaries of their area of responsibility when using the above mentioned capabilities, because satellite and aero photography typically lacks the labels that help identify streets, blocks or landmarks.

June 14, 2022

Deleting accounts

Deleting accounts

An account that is created in Survey Solutions can not be deleted. Ever. This is because the account is mentioned in the history of the events that were originated by that user (such as created or completed an interview).

Yet an account can be archived, which is the closest thing to deleting it.

This action is available to an administrator only, which can (1) select the interviewer account to be archived and (2) click the Archive button to perform the action:

July 28, 2020

Two factor authentication (2FA) for user accounts

Setting up two factor authentication

  1. login to the server using your login and password;

  2. navigate to your account settings (for interviewers: +Interviewer profile –> Edit personal info);

  3. click the Two factor authentication tab;

  4. click the Setup authenticator button;

  1. You will be presented with the Configure authenticator app form showing a QR-code.
  1. Now take your Android, IOS or Windows phone or tablet and set up +any of the following applications: Google Authenticator, Microsoft +Authenticator, or another authenticator as designated by the survey +coordinator.

    May 13, 2020

Survey Solutions Server Observer

Observer is an optional account, kind of an HQ user with a limited +functionality, to passively monitor a survey. Observer accesses +information through impersonation, looking through the eyes of a +different user.

An observer can do:

  • Read individual interviews including any comments left;
  • See reports;
  • See lists of users and their profiles.

An observer can not do:

  • approve/reject interviews;
  • create/delete assignments.
  • any other change-state operations;
  • download data.

An observer account is created for a server, not for a survey! Hence +an observer user may monitor the activity in all surveys that are +running on the server.

October 6, 2017

Dynamic filters for interviews

Dynamic filters are used to filter responses in the interviews list and in the map report. The filters can be formulated based on the variables belonging to the cover page and/or exposed variables.

Rules

Rules utilize comparative operators, that are logical operators for comparing the value to a constant. Which operators are available depends on the type of the question/variable:

  • For categorical single-select: equals, not equals.
  • For numeric: =, <>, <, <=, >, >=.
  • For text: equals, not equals, contains, not contains, starts with, not starts with.
  • For date:
    • on - event occurred specifically on that date;
    • not on - event didn’t occur on the specified date;
    • before - event occurred before the specified date;
    • not later than - event occurred before or on the specified date;
    • after - event occurred after the specified date;
    • on or after - event occurred on or after the specified date.

For all types of questions one can apply unary logical operators answered and not answered.

May 11, 2021

Headquarters user: Browsing the Completed Interview

Step 1

Log in to your server using a headquarters account. If you are testing +Survey Solutions, log in to the demo server

 

Step 2

Go to the Interviews tab

 

July 19, 2016

Interview Tab: How to Find, Review, and Delete Survey Cases

The Interview tab is designed for taking action. Under the Interview +tab, headquarters may search for survey cases, reallocate +them to different teamsreview them for quality +assurance, and delete them to fix problems.

The interview tab consists of the following tools:
 

June 30, 2016

Survey Workflow

Workflow Demonstration

Check out the video below (starting from 0:30) to learn about the survey +workflow in Survey Solutions.

 

Workflow Description

Headquarters, designated by the PC at the top of the figure, determines +the subjects that need to be interviewed (households, firms, geographic +area, etc.) and their assignments across team supervisors. Assignments +can include one or more interview cases. Team supervisors, denoted by +the laptops in the middle, first receive these assignments and then +allocate them to the members of their team.

June 29, 2016

Stata export file format

When Survey Solutions v5.18 is writing an exported data file in Stata +format it is producing it according to Stata 14 data file specification, +available from StataCorp LLC. 

Stata versions prior to version 14.0 (e.g. 12.0, 13.1, etc) cannot open +these files because these older versions of the software are not aware +of the newer file format. The message that the user will see on the +screen varies, and may look, for example like the following:

April 11, 2017

Rosters-Export File Anatomy

Recall that each exported file corresponds with a level of observation +in the questionnaire. Rosters and their source question are exported as +follows:

  • Source question: Export file at the questionnaire level (corresponds +with the name of the questionnaire)
  • Roster: Export file at the roster level (corresponds with the roster +name)

List Roster

In the export file at the questionnaire level, a list roster source +question generates as many columns as the defined maximum number of list +elements. Recorded values will be shown in each column.

November 9, 2016

Questionnaire Data - Export File Anatomy

Every questionnaire will contain at least one data file corresponding to +the main level of data, and potentially one or more subordinate files +corresponding to additional levels defined by the rosters.

Questionnaire level file: file name corresponds to the title of the questionnaire  

The questionnaire level export file consists of the following columns: +Id, question variable names including roster trigger questions, and the +system generated case Id.

September 23, 2016

Data Export Files

Overview

The exported data will be in a .zip file containing one or more files. +The number of such files is a function of the structure of the +questionnaire, meaning that exporting produces one file per level of +observation in the questionnaire, or in other words in addition to one +file at the questionnaire level, each roster in the questionnaire will +generate another export file.  For example, one file for household-level +variables, one file for household member-level variables, and one file +for asset-level or consumption item-level variables. Additionally, the +.zip file will contain interview comments and interview actions files. + 
 

August 18, 2016

Upgrading assignments

Survey Solutions assignments play a critical role in the survey process because they regulate who is supposed to deliver the incoming data (interviews). Each assignment is referring to a particular questionnaire.

It is best to not modify the questionnaire during the survey. Some of the undesirable effects of this are:

  • the survey becomes split between several databases, each has to be downloaded separately from Survey Slutions and appended later using external tools;
  • the data may no longer be comparable (e.g. choice sets differ between questions);
  • the data quality may be heterogenious (differing between collected earlier and later periods);
  • interviewers may need retraining for the newer version of the questionnaire;
  • the process of upgrading the questionnaire needs to be followed by upgrading of assignments, which depends on which interviews have been already conducted and which have not.

Sometimes this is unavoidable, e.g. in case a gross mistake was made during the questionnaire development and further data collection based on unfixed version doesn’t make sense.

December 12, 2018

Protecting pre-loaded answers

Starting with v18.06 Survey Solutions allows protecting values of +trigger questions that have been preloaded from being subsequently +modified by the interviewer. The protection applies to reduction, but +permits extension. This is commonly needed in the panel surveys, where, +for example, the names in the list of household members that are +preloaded should not be eliminated by the interviewer, but new household +members may be added if needed.

The protection applies to questions that may perform the role of +triggers: 

June 6, 2018

Errors in user-supplied files for preloading

Survey Solutions allows preloading assignments with data, including +answers to questions inside rosters and nested rosters.

It is the user’s responsibility to supply valid input files for this +process. The user-supplied files will be validated to match the +questionnaire template that is being preloaded. Survey Solutions can +detect a number of inconsistencies and common problems and will indicate +them during preloading. 

Each detected error is having a code listed in the table below. +Additional checks may be added in the future. 

March 9, 2018

Survey Setup Tab: Import, Copy, and Delete Questionnaire Templates, and Create Assignments

The survey setup tab lets you do several things:

Questionnaires

  1. Import template. Import questionnaires from the +Designer site to the headquarters software.
  2. Create assignments: Headquarters provides two ways of +creating assignments for a given questionnaire: one at a +time, or in a many at a time (batch).
  3. Clone questionnaire template: Copy the questionnaire +templates previously imported to the server. This feature is only +available to the administrator.
  4. Delete questionnaire. This feature is only available to +the administrator.

Assignments 

  1. Archive and reallocate assignments to members of the +data collection team. 
  2. Monitor assignments. Displays a tabular view of all assignment and +enables you to edit the quantity of interviews for any +assignment. 

Maps

June 29, 2017

Creating Assignments One at Time

Step 1

Log in to your server using the headquarters username and password

Note that each institution using Survey Solutions will utilize their +own server. Consequently, your username can differ from the one depicted +above
 

 

Step 2

Select the Survey Setup tab, and click on Questionnaires.

June 29, 2017

Numbering in subordinate rosters during preloading

It is important to make sure that during preloading of multiple files +the subordinate records are correctly identified.

The numbering depends on the kind of trigger used for determining the +size of the roster:

  1. fixed: the Id variable in the subordinate file should contain +the code of the item specified in the Designer.
  2. multiple choice: the subordinate file should contain the codes +of items as specified during setting up the multiple choice question +in the Designer.
  3. numeric: the subordinate file should contain the items with +sequential ids starting from zero (0);
  4. text list: the subordinate file should contain the items with +sequential ids starting from one (1). Note that the text list +question itself requires indexing of members starting with zero (0).

February 23, 2017

Uploading Many Assignments at a time

For many surveys, creating assignments one by one will be a tedious and +time intensive task. To help speed up your work, Survey Solutions allows +you to batch upload many assignments at once using a tab delimited. +Follow the steps below to perform a batch upload of assignments:

Step 1

Create a tab-delimited file with the identifying information for your +assignments
 
Before performing an interview, data collection teams must know the name +(e.g., name and surname of the head of household) and/or location (e.g., +region, county, district, neighborhood) of who they should be +interviewing. To facilitate locating the respondents, this identifying +information will appear on the dashboard of enumerator app for each +interview for which they are responsible.

June 27, 2016

Bulk email service providers

Bulk email service providers solve the task of sending out a +massive amount of emails. Survey Solutions may utilize such a +service provider to deliver email invitations for CAWI surveys +to the respondents. At the moment the following providers are supported:

  • Amazon SES;
  • Twilio SendGrid;
  • Other senders that support Simple Mail Transfer Protocol (SMTP).

You don’t have to use the above services to conduct a CAWI +survey, but in that case (just as it was in versions prior +to 19.04) it will be your responsibility to deliver the links +for the interviews to individual respondents. The use of the +bulk email service providers streamlines this process.

August 6, 2024

Configuring SMTP server as an email service provider

Servers providing Simple Mail Transfer Protocol (SMTP) service can be used to send out messages from Survey Solutions. The technical description for the SMTP has passed several revisions and users may refer to e.g. RFC 8314 for details.

The settings specific to using SMTP are described below, while the other settings common to other service providers are described in the article Bulk email service providers.

July 29, 2024

Configuring Amazon SES as an email service provider

Amazon provides a number of services (free and paid) that may +be of interest to the application developer. Here we are specifically +interested in utilizing the Simple Email Service (SES) from within Survey +Solutions for mass email sending.

Usage of this service may cost you money. +Make sure you understand all charges, limits and policies before +utilizing this service.

Amazon Simple Email Service is available at the following address: +https://aws.amazon.com/ses

May 24, 2021

Webpage Templates

Survey Solutions presents several web pages to the respondents to the web +surveys (CAWI). These pages may need to be customized at the web interview +setup page: MenuSurvey SetupQuestionnaires → +YourQuestionnaireWeb interview setup.

Changes made to these templates take immediate effect: any new page of the +corresponding type will be shown using the most recently saved template.

Web pageDescription
Welcome page

This page is shown to the respondent opening the link to a web interview.

The content of this page will usually contain description of the survey, +its purposes and objectives, motivation for participation, and other +descriptives/instructions.

The page consists of three user-editable elements:

  • title,
  • description, and
  • the text on +the button to start a new interview.

Survey coordinator may apply formatting to the description part of this +web page.

Resume Page

A resume page is shown to the respondents when they resume an +interrupted interview (started, but not completed).

The page consists of three user-editable elements:

  • title,
  • description, and
  • the text on +the button to resume the interview.

Survey coordinator may apply formatting to the description part of this +web page.

The description may mention %QUESTIONNAIRE%, which will be automatically +replaced with the name of the survey.

Complete

Provides a possibility to customize texts utilized at the +system-generated Complete page of a web-interview.

The page consists of two user-editable elements:

  • Note for supervisor, and
  • Complete.

Survey coordinator may not apply formatting in any of the elements of this +web page.

Finish page

Provides a possibility to customize texts utilized at the +page displayed after a web-interview is completed.

The page consists of two user-editable elements:

  • title, and
  • description.

Survey coordinator may apply formatting to the description part of this +web page.

Text formatting

Where formatting is supported it is entered using the following toolbar:

November 26, 2020

Email Templates

Survey Solutions can send email notifications to the respondents to the web +surveys (CAWI). These notifications can be configured at the web interview +setup page: MenuSurvey SetupQuestionnaires → +YourQuestionnaireWeb interview setup.

Survey Solutions server automatically determines, which notifications need to be +sent out to the respondents. Every hour the notifications of the type marked +with ^ in the table below are sent out, if a +bulk email service provider has been set +up.

November 26, 2020

Web Interviewing

In addition to CAPI surveys on Android tablets, Survey Solutions +provides two distinct possibilities:

  • Interviewing: Interviewers conduct interviews using the +web interface (without a tablet);
  • Self-enumeration: Respondents fill out interviews in the browser.

The difference is essential:

  • In the first case the person filling out the interview is a known +member of the team, has an account created in the system, assigned +to a team of a certain supervisor and so on. We use this mode when +e.g. we set up a call centre and our interviewers don’t physically +travel to the respondent, so don’t need a mobile device (tablet) +or to work offline (disconnected), but collect multiple interviews +and report to a certain supervisor;

    October 30, 2020

Configuring Sendgrid as an email service provider

SendGrid is a bulk email service provider that can be used in Survey +Solutions for delivering invitations for CAWI surveys as an alternative +to Amazon SES: +https://sendgrid.com/

Usage of this service may cost you money. +Make sure you understand all charges, limits and policies before +utilizing this service.

SendGrid reqires you to have a domain and confirm yourself +as a domain owner. The sending address must belong to this +domain. For example, if you want to send emails from name@site.com +you must confirm yourself as the owner of the site.com.

March 31, 2019

Customize web interview messages

Web interviews conducted with Survey Solutions contain reasonable +default messages suitable for many surveys. But if the default messages +are not suitable for a certain purpose, they can be customized in the +web survey setup dialog at the Survey Solutions Headquarters:

Editing custom text messages for web interviews

For every parameter select if you wish to display a built-in default +message, or a custom one, and if so, provide your custom (formatted) +text of such a message. You can use the formatting toolbar provided in +the editor to adjust the font color and font attributes, include +numbered and bullet lists, and include hyperlinks.

April 2, 2018

API: R-package

Introduction to the Survey Solutions API R-package

Why this package

The World Bank’s Computer Assisted Survey System (CASS) Survey Solutions is a powerful tool for high quality data collection and used in many statistical offices around the world. Besides the standard GUI, it also comes with a powerful REST API. For details see https://docs.mysurvey.solutions/

To further facilitate its integration in a fully automated workflow we have developed this R package, which covers almost all of the available API calls. With this vignette you get a first overview on the different functions, further vignettes are available on survey management, paradata analysis and shiny integration.

May 10, 2023

Survey Solutions API

Survey Solutions includes a powerful and flexible API which allows +automating some tasks and allows our users to build larger systems, +which may compliment Survey Solutions to achieve larger goals. 

Some examples of use could be:

  • schedule periodic export of collected data
  • an external dashboard or monitoring and reporting system, which +updates some indicators every night and publishes them to a website, +or
  • an external checking and validation system which verifies collected +data against some external sources of information and rejects +automatically the incorrect interviews, or
  • an integrated system, which utilizes Survey Solutions for data +collections tasks and a statistical package for continuous analysis,
  • facility management, inventory and price monitoring systems, etc, +etc.

It is up to our users to decide on the particular scenario of use taking +into account their needs and existing legacy systems already in place. +The integration mode is usually dictated by the external system, which +may determine, for example, in which language the system is implemented +or to which storage the data is transferred from Survey Solutions.

May 1, 2022

API: .NET package

Introduction to the Survey Solutions .NET API Client package

There is a client library aviable to be used in .NET runtime to execute API methods of Survey Solutions software. In order to get started install dotnet SDK. +After done that you will be able to use included in SDK CLI to create a new project, execute the following command:

dotnet new console
+
+            March 5, 2021
+        
+ +
+

+ API interactive description +

+

The following page contains an interactive description of the Survey Solutions API for the current release: +https://demo.mysurvey.solutions/apidocs

+

If your server’s version is different, check its API at: +https://SERVERNAME.mysurvey.solutions/apidocs

+ January 23, 2021 +
+ +
+

+ API: Powershell Module +

+

SSAW PowerShell module contains cmdlets wrapping Survey Solutions API to abstract away from some of the HTTP details. +As PowerShell command-line shell is already present and all Windows machines, users can start automating their interaction +with Survey Solutions application without any additional software development. PowerShell can be installed on Mac and Linux +computers as well, but you may prefer to use the Python client insted.

+ +
+
+
+ +
+ + +
+
+
+
+ + + + + + + + + + + + + + diff --git a/headquarters/interview-tab-how-to-find-review-and-delete-survey-cases-/index.html b/headquarters/interview-tab-how-to-find-review-and-delete-survey-cases-/index.html new file mode 100644 index 00000000..13187ce2 --- /dev/null +++ b/headquarters/interview-tab-how-to-find-review-and-delete-survey-cases-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/ + \ No newline at end of file diff --git a/headquarters/interview_diagnostics_file/index.html b/headquarters/interview_diagnostics_file/index.html new file mode 100644 index 00000000..046cf151 --- /dev/null +++ b/headquarters/interview_diagnostics_file/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/interview_diagnostics_file/ + \ No newline at end of file diff --git a/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774368.png b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774368.png new file mode 100644 index 00000000..56f18858 Binary files /dev/null and b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774368.png differ diff --git a/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774368_hu11228765672639390129.png b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774368_hu11228765672639390129.png new file mode 100644 index 00000000..681c6a88 Binary files /dev/null and b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774368_hu11228765672639390129.png differ diff --git a/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774369.png b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774369.png new file mode 100644 index 00000000..76684ae4 Binary files /dev/null and b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774369.png differ diff --git a/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774369_hu3393943761369676105.png b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774369_hu3393943761369676105.png new file mode 100644 index 00000000..92a558e2 Binary files /dev/null and b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774369_hu3393943761369676105.png differ diff --git a/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774370.png b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774370.png new file mode 100644 index 00000000..27354baa Binary files /dev/null and b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774370.png differ diff --git a/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774370_hu16250718591825313659.png b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774370_hu16250718591825313659.png new file mode 100644 index 00000000..bd143600 Binary files /dev/null and b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774370_hu16250718591825313659.png differ diff --git a/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774371.png b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774371.png new file mode 100644 index 00000000..596d76d2 Binary files /dev/null and b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774371.png differ diff --git a/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774371_hu15833063838959146721.png b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774371_hu15833063838959146721.png new file mode 100644 index 00000000..e2d3efb8 Binary files /dev/null and b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774371_hu15833063838959146721.png differ diff --git a/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774372.png b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774372.png new file mode 100644 index 00000000..3e06c166 Binary files /dev/null and b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774372.png differ diff --git a/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774372_hu9077391171743397467.png b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774372_hu9077391171743397467.png new file mode 100644 index 00000000..b59e48bf Binary files /dev/null and b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/images/774372_hu9077391171743397467.png differ diff --git a/headquarters/interviews/headquarters-user-browsing-the-completed-interview/index.html b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/index.html new file mode 100644 index 00000000..c2c2b094 --- /dev/null +++ b/headquarters/interviews/headquarters-user-browsing-the-completed-interview/index.html @@ -0,0 +1,26 @@ +Headquarters user: Browsing the Completed Interview +

Headquarters user: Browsing the Completed Interview

July 19, 2016

Step 1

Log in to your server using a headquarters account. If you are testing +Survey Solutions, log in to the demo server

 

Step 2

Go to the Interviews tab

 

Step 3

From the filter on the left side of the screen, select Approved By +Supervisor

 

Step 4

Click on the interview key for the survey case that you would like to +browse.

Now you can see all the answers given by the respondents—the answers +marked in red are invalid according to the validation rules. 

 

Step 5

If the interview should be approved, click on the Approve button. To +return it to the supervisor, click on the Reject button.

\ No newline at end of file diff --git a/headquarters/interviews/index.html b/headquarters/interviews/index.html new file mode 100644 index 00000000..27de744e --- /dev/null +++ b/headquarters/interviews/index.html @@ -0,0 +1,30 @@ +Interviews +

Interviews

Dynamic filters for interviews

Dynamic filters are used to filter responses in the interviews list and in the map report. The filters can be formulated based on the variables belonging to the cover page and/or exposed variables.

Rules

Rules utilize comparative operators, that are logical operators for comparing the value to a constant. Which operators are available depends on the type of the question/variable:

  • For categorical single-select: equals, not equals.
  • For numeric: =, <>, <, <=, >, >=.
  • For text: equals, not equals, contains, not contains, starts with, not starts with.
  • For date:
    • on - event occurred specifically on that date;
    • not on - event didn’t occur on the specified date;
    • before - event occurred before the specified date;
    • not later than - event occurred before or on the specified date;
    • after - event occurred after the specified date;
    • on or after - event occurred on or after the specified date.

For all types of questions one can apply unary logical operators answered and not answered.

May 11, 2021

Headquarters user: Browsing the Completed Interview

Step 1

Log in to your server using a headquarters account. If you are testing +Survey Solutions, log in to the demo server

 

Step 2

Go to the Interviews tab

 

July 19, 2016

Interview Tab: How to Find, Review, and Delete Survey Cases

The Interview tab is designed for taking action. Under the Interview +tab, headquarters may search for survey cases, reallocate +them to different teamsreview them for quality +assurance, and delete them to fix problems.

The interview tab consists of the following tools:
 

June 30, 2016

Survey Workflow

Workflow Demonstration

Check out the video below (starting from 0:30) to learn about the survey +workflow in Survey Solutions.

 

Workflow Description

Headquarters, designated by the PC at the top of the figure, determines +the subjects that need to be interviewed (households, firms, geographic +area, etc.) and their assignments across team supervisors. Assignments +can include one or more interview cases. Team supervisors, denoted by +the laptops in the middle, first receive these assignments and then +allocate them to the members of their team.

June 29, 2016
\ No newline at end of file diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773854.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773854.png new file mode 100644 index 00000000..88ac3e7d Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773854.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773854_hu6516495108392763490.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773854_hu6516495108392763490.png new file mode 100644 index 00000000..1e5bb3fe Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773854_hu6516495108392763490.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773857.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773857.png new file mode 100644 index 00000000..5bea77b4 Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773857.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773857_hu16063699652645842743.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773857_hu16063699652645842743.png new file mode 100644 index 00000000..656e3305 Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773857_hu16063699652645842743.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773861.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773861.png new file mode 100644 index 00000000..77a87cf2 Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773861.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773861_hu8419374882918011595.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773861_hu8419374882918011595.png new file mode 100644 index 00000000..2b18b71d Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773861_hu8419374882918011595.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773873.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773873.png new file mode 100644 index 00000000..1331316c Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773873.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773873_hu15254982571687879495.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773873_hu15254982571687879495.png new file mode 100644 index 00000000..1db20188 Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773873_hu15254982571687879495.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773884.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773884.png new file mode 100644 index 00000000..97cbc64d Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773884.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773884_hu472190629822393252.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773884_hu472190629822393252.png new file mode 100644 index 00000000..d263227d Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773884_hu472190629822393252.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773886.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773886.png new file mode 100644 index 00000000..0ed72355 Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773886.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773886_hu2645454544223850834.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773886_hu2645454544223850834.png new file mode 100644 index 00000000..e3f5630c Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773886_hu2645454544223850834.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773889.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773889.png new file mode 100644 index 00000000..492deb19 Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773889.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773889_hu7655033081196486352.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773889_hu7655033081196486352.png new file mode 100644 index 00000000..86382986 Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773889_hu7655033081196486352.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773891.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773891.png new file mode 100644 index 00000000..ca060871 Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773891.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773891_hu10476527976478972292.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773891_hu10476527976478972292.png new file mode 100644 index 00000000..149753c7 Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/773891_hu10476527976478972292.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/818932.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/818932.png new file mode 100644 index 00000000..49f712f7 Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/818932.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/818932_hu667026179547606688.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/818932_hu667026179547606688.png new file mode 100644 index 00000000..9e0d379b Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/818932_hu667026179547606688.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/852904.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/852904.png new file mode 100644 index 00000000..b6876c4d Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/852904.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/852904_hu7643244861993362101.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/852904_hu7643244861993362101.png new file mode 100644 index 00000000..0ded0c8b Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/852904_hu7643244861993362101.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/886354.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/886354.png new file mode 100644 index 00000000..075c836a Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/886354.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/886354_hu16048271411725718322.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/886354_hu16048271411725718322.png new file mode 100644 index 00000000..605f0690 Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/886354_hu16048271411725718322.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/886356.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/886356.png new file mode 100644 index 00000000..71f70db4 Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/886356.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/886356_hu18339723839155665256.png b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/886356_hu18339723839155665256.png new file mode 100644 index 00000000..df186917 Binary files /dev/null and b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/images/886356_hu18339723839155665256.png differ diff --git a/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/index.html b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/index.html new file mode 100644 index 00000000..c4b4bfbd --- /dev/null +++ b/headquarters/interviews/interview-tab-how-to-find-review-and-delete-survey-cases-/index.html @@ -0,0 +1,135 @@ +Interview Tab: How to Find, Review, and Delete Survey Cases

Interview Tab: How to Find, Review, and Delete Survey Cases

June 30, 2016

The Interview tab is designed for taking action. Under the Interview +tab, headquarters may search for survey cases, reallocate +them to different teamsreview them for quality +assurance, and delete them to fix problems.

The interview tab consists of the following tools:
 

  1. Database of survey cases. The rows are survey case entries. The +columns capture details about survey cases, such as the respondent’s +address, interview status, and an indicator that the interviewer has +or has not received the survey case.
     
  2. Filters for querying the database. The database can be filtered +to show only the survey cases of interest—for example, those with a +particular status or those done by a particular supervisor.
     
  3. **Toolbar with a Delete, Approve, and Reject button. **Survey cases +can be deleted, approved, or rejected individually or as a group by +selecting the check box next to each case. The toolbar will appear +if one or more cases have been selected. If you would like to select +all the survey cases displayed on that page, click on the first +check box at the top of the list.
     
  4. Interview Key. This is a system generated random number for each +survey assignment. Completed survey cases can be reviewed in detail +by clicking on the interview key for that case. This will open +another interface that will be discussed below.
  5. Search bar to navigate through the survey cases quickly.

Search for survey cases

The Interview tab contains a detailed list of survey cases— those that +have been completed, those that supervisors have approved and sent for +headquarters’ review.
 
The details can be used to search for particular survey cases. The +interview panel in the lower right-hand quadrant of the screen presents +a list of interviews and information about them—where the respondent is +located (Identifying Questions), which supervisor is responsible +(Responsible), when the assignment was last updated (Last Updated), how +many errors the interview contains (Errors), what status the interview +has (Status), whether the interviewer has received the assignment +(Received by Interviewer), and in the case of census mode surveys +whether the case has been created on the device by the interviewer +(Created on Client).

 
There are three mechanisms for finding a survey. The first is by +clicking on the arrow associated with any column of the information in +the lower right-hand quadrant. This will sort the list of surveys in +ascending (^) or descending (v) order by that chosen column. 

The second mechanism is through the filters located on the left-hand +side of the screen. To narrow down the list of survey cases, +headquarters may filter by the questionnaire (Questionnaire), team +member responsible (Responsible), the status of the interview (Status), +and/or the assignment of the interview.

The third mechanism is through the search field located in the toolbar. +Use keywords to narrow down the list of survey cases.

The following are searched:

  • values of identifying questions;
  • Interview keys
  • Interview IDs.

The search term must appear from the start of the value. If the search +term appears in the middle or end of the value, it will not be matched. +For example, if you are searching for 321 the following records will +match:

ENUMERATION AREA: 3218 ADDRESS: 1064 Main str.
ENUMERATION AREA: 1800 ADDRESS: 3212 Freedom Ave.

And the following will not match:
ENUMERATION AREA: 3118 ADDRESS: 1321 Main str.
ENUMERATION AREA: 5216 ADDRESS: 1064 Main str., apt 321

Reallocate survey cases between teams

Survey cases will need to be reallocated when a new team is created and +needs to take over some of the work from existing teams. Cases can be +reassigned by a Headquarter user from one team to another.

Reassignment is possible when the interview is in any status except the +following two: “ApprovedByHeadquarter” and “ApprovedBySupervisor”. + To reassign cases, select the check boxes for the cases you wish to +reassign, and click on the green assign button. 

Review survey cases

The questionnaire review interface consists of five components:

  1. Navigation pane. Displays a table of contents for the +questionnaire, where you can use each entry in this pane to see a +particular part of the questionnaire. Clicking on the top entry, the +name of the questionnaire, brings the full questionnaire back into +focus.
  2. Filters. These boxes can be used to see questions that have +certain attributes—for example, comments or flags.
  3. Questionnaire review pane. Questions and their answers are +rendered just like the Interviewer application.  
  4. Comment. Click on the three dots on the corner of the question. +Then, select add comment.  Comments associated with the selected +item will be shown below the question answer.
  5. Approve/reject buttons. These buttons determine whether a +questionnaire returns to the supervisor or is integrated into the +final data set.
  6. **Language dropdown menu. **If the questionnaire is a multilingual +questionnaire, +the user can toggle between languages using this menu.
  7. **Flags. **Questions can be marked during the review process. +Use the filters (2) to only show the questions that have been +flagged. 

Headquarters plays a critical quality control role in the Survey +Solutions workflow. Supervisors supervise enumerators, reviewing +questionnaires the latter completes. Headquarters supervises +supervisors, reviewing the questionnaires the latter approves.

To do this, first headquarters clicks on the Interview Key associated +with any questionnaire whose status is ApprovedBySupervisor.

Then, headquarters reviews the questionnaire for completeness, +consistency, and plausibility of answers using the questionnaire review +interface. The questionnaire pane, located in the middle of the screen, +contains the questions and their answers.

Groups, on the left-hand part of the screen, allow headquarters to see +different parts of the questionnaire when any element of the pane is +clicked. The top heading corresponds to the complete questionnaire. +Bolded headings lead to modules (chapters) within the questionnaire. +Indented headings are linked to either groups of questions or rows of +rosters.

Filters, arrayed atop the questionnaire pane, facilitate the display of +questions that have particular attributes. The “All” filter presents all +questions. The “commented” and “flag” filters display questions with +comments or flags, respectively. The “answered” questions, as the name +suggests, are all those that have an answer. The “invalid” filter +displays questions that failed a validation check (e.g., range, +consistency with other responses, etc.). The “supervisor’s” filter +yields special questions that only the supervisor sees and can answer. +The “enabled” filter returns questions that are available to be answered +based on the skip logic of the questionnaire and answers provided to key +questions.

Next, headquarters either approves or rejects the questionnaire by +clicking the appropriate button. The headquarters’ choice determines +whether the assignment is included in the survey database (Approve) or +returned to the supervisor for correction (Reject).

To unapprove any interview in the Approved by Headquarters status +select this interview(s) by checking the checkbox next to it and click +the Unapprove button. Alternatively, open the interview case and click +on the Unapprove button on the toolbar. The interview will be reverted +to the Approved by Supervisor status, and the headquarters user will +have a possibility to reject it back to the supervisor if necessary. You +can apply this operation to multiple interviews if necessary.

+

Additionally, the headquarter user, has the authority to approve +completed interviews directly, without waiting for the supervisor’s +decision. This results in faster turnaround of the data circulating in +the system in case the supervisor is swamped with work, in which case +the headquarters can reduce the workload by pulling the good-quality +interviews from the supervisor’s stack. There is no change in the user +interface, but the button will now permit headquarters approvals of the +interviews in status “Completed”. Note that you cannot reject an +interview to an interviewer directly.
 

Delete survey cases

Deletion is a dangerous tool reserved for rare occasions—for example, +when errors arise in survey sampling or in creating survey cases.
 
Because deletion is dangerous, only the administrator/headquarters +users have the authority to delete selected interviews. It is only +allowed for interviews with the status SupervisorAssigned or +InterviewerAssigned. Those with the former status have been assigned to +a supervisor, but not yet assigned by the supervisor to an interviewer. +Those with the latter status have been assigned to an interviewer, but +have not been completed. In both cases, headquarters should exercise +extreme caution. Once deleted, an interview cannot be restored. Hence, +administrator should only delete interviews that have been carefully +confirmed as errors to be deleted.
 
To delete an interview, first find an eligible case. The most efficient +strategy for doing so may be to filter the questionnaires based on +status so that only those with status SupervisorAssigned or +InterviewerAssigned appear. (See the section Search for survey cases +above for more details.)

Next, select the case(s) to delete by clicking in the check box to the +left of the case. Make sure the correct cases have been selected before +proceeding.

Then, click on the Delete interview button located immediately above the +interview panel. This will permanently delete the selected survey +cases.

\ No newline at end of file diff --git a/headquarters/interviews/interviews-filters/images/filter_complex_and_or.png b/headquarters/interviews/interviews-filters/images/filter_complex_and_or.png new file mode 100644 index 00000000..c18d70e5 Binary files /dev/null and b/headquarters/interviews/interviews-filters/images/filter_complex_and_or.png differ diff --git a/headquarters/interviews/interviews-filters/images/filter_simple_and.png b/headquarters/interviews/interviews-filters/images/filter_simple_and.png new file mode 100644 index 00000000..c2a5a006 Binary files /dev/null and b/headquarters/interviews/interviews-filters/images/filter_simple_and.png differ diff --git a/headquarters/interviews/interviews-filters/images/filter_simple_categorical.png b/headquarters/interviews/interviews-filters/images/filter_simple_categorical.png new file mode 100644 index 00000000..61955c62 Binary files /dev/null and b/headquarters/interviews/interviews-filters/images/filter_simple_categorical.png differ diff --git a/headquarters/interviews/interviews-filters/images/filter_simple_or.png b/headquarters/interviews/interviews-filters/images/filter_simple_or.png new file mode 100644 index 00000000..4784ca3e Binary files /dev/null and b/headquarters/interviews/interviews-filters/images/filter_simple_or.png differ diff --git a/headquarters/interviews/interviews-filters/index.html b/headquarters/interviews/interviews-filters/index.html new file mode 100644 index 00000000..dd75ad8f --- /dev/null +++ b/headquarters/interviews/interviews-filters/index.html @@ -0,0 +1,26 @@ +Dynamic filters for interviews +

Dynamic filters for interviews

May 11, 2021

Dynamic filters are used to filter responses in the interviews list and in the map report. The filters can be formulated based on the variables belonging to the cover page and/or exposed variables.

Rules

Rules utilize comparative operators, that are logical operators for comparing the value to a constant. Which operators are available depends on the type of the question/variable:

  • For categorical single-select: equals, not equals.
  • For numeric: =, <>, <, <=, >, >=.
  • For text: equals, not equals, contains, not contains, starts with, not starts with.
  • For date:
    • on - event occurred specifically on that date;
    • not on - event didn’t occur on the specified date;
    • before - event occurred before the specified date;
    • not later than - event occurred before or on the specified date;
    • after - event occurred after the specified date;
    • on or after - event occurred on or after the specified date.

For all types of questions one can apply unary logical operators answered and not answered.

Examples:

ConditionMatchesDoes not match
Address contains Washington DC123 Main St, Washington DC, USA
4567 Washington St, Washington DC, USA
175 Washington Rd, Seattle WA, USA
1212 5th Ave, New York NY, USA
EmployeesCount>=10010099, Null
RegistrationDate on or after 2001-01-012001-01-01
2001-02-02
2000-12-31
1980-07-03
Region equals NorthNorthSouth
East
West
Null
EmployeesCount Answered....-1, 0, 1, 2, 3, ….100...1000...Null

Match types

Multiple rules or several groups, or a rule and a group may be combined (within a higher level group) with one of the logical operators:

📷 AND - observations pass the filter if they satisfy ALL of the specified criteria.

AND - observations pass the filter if they satisfy ALL of the specified criteria.


📷 OR - observations pass the filter is they satisfy ANY of the specified criteria.

OR - observations pass the filter is they satisfy ANY of the specified criteria.


Any expression is contained within at least one group.

Use of match types

We are using OR to identify observations from one of several groups: This is commonly utilizing a single variable and equality, with different constants. For example, we might want to highlight observations from e.g. districts 1, 2, 3, 4, 5 or 6 (of 1..10). Conceptually it is district.InList(1,2,3,4,5,6), which is same as:

district==1 || district==2 || district==3 || district==4 || district ==5 || district==6
+

which we can construct as a single OR group with 6 rules, each singling out a particular district from 1 to 6.

Different variables may still be used in a group of OR. For example, to identify skilled employees we may come up with a criterion:

educYears>=12 OR tenure>=8
+

We use AND to identify observations that satisfy several conditions simultaneously. For example, in an enterprise survey, we might be interested in finding all companies that are from the private sector, have more than 1 owner, more than 100 employees, located in the South. We describe such criteria as individual rules united in a group with an AND operator:

sector=Private AND NumOwners>1 AND NumEmployees>100 AND region==South.
+

A single variable may also be used within the AND group. This is commonly used for range checks:

age>=18 AND age<=65
+

Writing complex expressions

Suppose we are interested in finding interviews obtained from “old dwellings”. And our definition of “old dwellings” varies by region. Specifically, in the West it is all buildings built before 1930, while in all other regions before 1900.

We construct the following dynamic filter. First we realize that our observations come from two principally different locations, they can be from West or from Not-West. So we will have a top level group with an OR operator. We will then describe what we want to be true about the first location: West. We want that observations carry the region specifically West: Region equals West, and at the same time the year must be earlier than 1930: yearbuilt < 1930. We reflect the simultaneity of these conditions by selecting the AND operator to unite them in a group.

Similarly we construct the conditions for selection from the Non-West: Region not equals West AND yearbuilt < 1900.

As we formulate more and more complex expressions involving more operators, their level of nesting goes deeper. We can see the nesting by different indentation of the cards corresponding to individual rules in the dynamic filter, and the different colors of their tabs. Tabs at the same level of nesting are getting the same color of the tab.

Different users may construct different dynamic filters. They are not affecting each other and are not saved. Yet changing the set of the exposed variables does affect all the users utilizing dynamic filters.

Use with filter by questions

The dynamic filter may be utilized simultaneously with the filter by questions. In this case the observations shown are only those that satisfy both the filter by questions and the dynamic filter.

Note that this may result in incompatible choices, e.g. if the user selects REGION=5 in the filter by questions and REGION=7 in the dynamic filter. A single variable may not be equal 5 and 7 at the same time, so the resulting set of interviews will be empty.

\ No newline at end of file diff --git a/headquarters/interviews/page/1/index.html b/headquarters/interviews/page/1/index.html new file mode 100644 index 00000000..e1f0259b --- /dev/null +++ b/headquarters/interviews/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/ + \ No newline at end of file diff --git a/headquarters/interviews/survey-workflow/index.html b/headquarters/interviews/survey-workflow/index.html new file mode 100644 index 00000000..0b35f91b --- /dev/null +++ b/headquarters/interviews/survey-workflow/index.html @@ -0,0 +1,65 @@ +Survey Workflow +

Survey Workflow

June 29, 2016

Workflow Demonstration

Check out the video below (starting from 0:30) to learn about the survey +workflow in Survey Solutions.

 

Workflow Description

Headquarters, designated by the PC at the top of the figure, determines +the subjects that need to be interviewed (households, firms, geographic +area, etc.) and their assignments across team supervisors. Assignments +can include one or more interview cases. Team supervisors, denoted by +the laptops in the middle, first receive these assignments and then +allocate them to the members of their team.

Interviewers, represented by tablets, receive the assignments from the +team supervisors, collect data for the cases within the assignments, and +send completed cases back to supervisors for review. Team supervisors, +having received completed interview cases, review these questionnaires +to confirm that all questions are answered and that answers are +accurate, coherent, and plausible. After reviewing these completed +interview cases, team supervisors either approve or reject them.

If a team supervisor approves a completed interview case received from +an interviewer, the assignment is sent to headquarters, as represented +by the paper with a checkmark. If a team supervisor rejects a completed +assignment received from an interviewer, the assignment is returned to +the interviewer initially responsible for completing it.

Receiving the rejected assignment, the interviewer must either correct +it or provide explanatory notes on strange or implausible answers. When +the assignments are corrected, the interviewer sends them back to the +team supervisor for approval or rejection, a process that continues +until the assignments are completed with the highest level of quality +according to the team supervisor.

As an assignment moves through the survey workflow, it takes on a +different status at each stage, as illustrated in the photo above.

SupervisorAssigned means that +Headquarters has sent the interview assignment to the supervisor. The +supervisor must now take action on this assignment, allocating it to a +member of their team.
 
InterviewerAssigned means that a +supervisor has allocated this assignment to a member of their team. The +interviewer must now conduct an interview with the assigned member of +the survey population.
 
Completed means that an interviewer has +marked an interview case as complete and has sent it to the supervisor. +The supervisor must now review the questionnaire for quality and +completeness, and then reject or approve the interview.
 
RejectedBySupervisor means that a +supervisor has rejected the interview and, by default, that interview +returns to the interviewer who sent it. The interviewer must now address +their supervisor’s concerns, making a change to the questionnaire or +providing explanatory comments.
 
ApprovedBySupervisor means that a +supervisor has approved this interview and, in doing so, sent it +Headquarters for further review. Headquarters must now review the +interview and reject or approve it.
 
RejectedByHeadquarters means that +Headquarters has rejected the interview assignment and, thus, returned +it to the supervisor that initially approved it. The concerned +supervisor must now take action on the interview, providing explanatory +comments or sending to an interviewer to be fixed.
 
ApprovedByHeadquarters means that +Headquarters has approved the interview case and, no further action may +be taken on this final interview.

\ No newline at end of file diff --git a/headquarters/mapsmanage/index.html b/headquarters/mapsmanage/index.html new file mode 100644 index 00000000..b7f88d85 --- /dev/null +++ b/headquarters/mapsmanage/index.html @@ -0,0 +1,33 @@ +Maps Management +

Maps Management

Online maps key

Usage of online maps is possible in Survey Solutions by consuming data +sources of Esri.

By default the API key is blank (not specified) and the online maps are not +selectable on mobile devices. Specifying a valid key facilitates using Esri’s +services supplying tiles for base map layer when:

  • using the map dashboard, and/or
  • answering geography type questions

in Interviewer and Supervisor apps.

Usage of the ESRI API key may (and likely will) cost you +money. It is important to familiarize yourself with the pricing, plans, charges +and limits as applicable. These conditions may be changed, possibly even without +prior notice. Pricing and billing conditions may depend on whether the user is a +private user or an organization. All of the billing for this service occurs +between you and the corresponding provider, the Survey Solutions developers are +not charging you for this service.

June 5, 2024

Map files

In Survey Solutions all maps are first uploaded to the server, then +distributed to the interviewers based on assignments of maps.

This functionality is accessible for the users in roles headquarters and +administrator only.

The Map files page is the page where the maps are managed at the Survey +Solutions server (Headquarters). It can be accessed by

The Maps dialog is using two icons to denote types of the uploaded maps:

June 5, 2024

Digital Map Formats

Survey Solutions offline maps may be prepared in any of the following formats:

FORMAT
EXTENSION
TYPE
EXTERNAL LINKS
ESRI tile package.
*.tpk

raster
USDA Tutorial on creation of TPK tile packages.
ESRI documentation Create Map Tile Package
ESRI mobile map package.
*.mmpk

raster
ESRI tutorial on creating MMPK mobile map packages.
GeoTIFF
*.tiff

raster
OGC GeoTIFF standard
Example file and +description.
Pacific Community (SPC) tutorial How to generate offline maps for Survey Solutions in QGIS.
Shapefile
*.shp
*.shx
*.dbf

vector
QGIS tutorial on creation of shapefiles.
ESRI Shapefile Technical Description

Useful links:

January 9, 2024

Shapefile maps

Survey Solutions Interviewer App displays maps for two purposes:

  • The dashboard depicts the assignments and interviews on the map by placing markers that correspond to the coordinates of an identifying question.
  • Geography questions (single- and multiple points, polyline and polygon) allow capturing geographical information by marking it on the map layer, typically a satellite or aero-photography.

Survey Solutions has been employing this functionality for several years already using the ESRI ArcGIS Android SDK components. A common problem for the interviewers is understanding the boundaries of their area of responsibility when using the above mentioned capabilities, because satellite and aero photography typically lacks the labels that help identify streets, blocks or landmarks.

June 14, 2022
\ No newline at end of file diff --git a/headquarters/mapsmanage/map-files/images/map_delete_confirmation.png b/headquarters/mapsmanage/map-files/images/map_delete_confirmation.png new file mode 100644 index 00000000..75124800 Binary files /dev/null and b/headquarters/mapsmanage/map-files/images/map_delete_confirmation.png differ diff --git a/headquarters/mapsmanage/map-files/images/map_files_menu.png b/headquarters/mapsmanage/map-files/images/map_files_menu.png new file mode 100644 index 00000000..a3bc0012 Binary files /dev/null and b/headquarters/mapsmanage/map-files/images/map_files_menu.png differ diff --git a/headquarters/mapsmanage/map-files/images/map_preview.png b/headquarters/mapsmanage/map-files/images/map_preview.png new file mode 100644 index 00000000..fcf505a9 Binary files /dev/null and b/headquarters/mapsmanage/map-files/images/map_preview.png differ diff --git a/headquarters/mapsmanage/map-files/images/raster_map_icon.png b/headquarters/mapsmanage/map-files/images/raster_map_icon.png new file mode 100644 index 00000000..087f3bd8 Binary files /dev/null and b/headquarters/mapsmanage/map-files/images/raster_map_icon.png differ diff --git a/headquarters/mapsmanage/map-files/images/user_maps.png b/headquarters/mapsmanage/map-files/images/user_maps.png new file mode 100644 index 00000000..6ea69b37 Binary files /dev/null and b/headquarters/mapsmanage/map-files/images/user_maps.png differ diff --git a/headquarters/mapsmanage/map-files/images/vector_map_icon.png b/headquarters/mapsmanage/map-files/images/vector_map_icon.png new file mode 100644 index 00000000..22d10c16 Binary files /dev/null and b/headquarters/mapsmanage/map-files/images/vector_map_icon.png differ diff --git a/headquarters/mapsmanage/map-files/index.html b/headquarters/mapsmanage/map-files/index.html new file mode 100644 index 00000000..166f6b9b --- /dev/null +++ b/headquarters/mapsmanage/map-files/index.html @@ -0,0 +1,57 @@ +Map files +

Map files

June 5, 2024

In Survey Solutions all maps are first uploaded to the server, then +distributed to the interviewers based on assignments of maps.

This functionality is accessible for the users in roles headquarters and +administrator only.

The Map files page is the page where the maps are managed at the Survey +Solutions server (Headquarters). It can be accessed by

The Maps dialog is using two icons to denote types of the uploaded maps:

for raster maps (tiff, tpk, and mmpk map files);

for vector maps (shapefiles).

Additional information on managing the shapefiles is available in this article: Shapefile maps

The following actions are available here:

Upload maps

In Survey Solutions all maps are first uploaded to the server, then +distributed to the interviewers based on assignments of maps.

One or multiple maps in acceptable map formats +are uploaded in archived form (as a single *.zip archive) by clicking the green +Upload ZIP file button at the Map files page: Survey Setup –> Maps –> Upload ZIP file

Please note that:

  • Maps are stored separately by workspaces. If the same map is needed in +multiple workspaces it must be uploaded to each such workspace.
  • When a map with the same name already exists on the server, it will be +overwritten with the new map.

Delete a map

A confirmation is required before a map is deleted:

When a map is deleted, all assignments of that map to users are also deleted. At +next synchronization the files corresponding to this map will be erased from the +interviewers’ devices.

Open a map

For any given map, the survey manager may preview the map in the Headquarters, +and see the users to whom it is assigned.

See maps assigned to users

For any every user, the survey manager can see, which maps are assigned to that user:

Update assignments of maps to users

The map assignments file is a file, which is uploaded to the +Survey Solutions Headquarters to regulate which interviewer +has access to which offline maps. Online maps need not be assigned to individual +users, all users have access to online maps provided that they have received a +valid key for online maps usage +(entered by administrator in the workspace settings) +and have Internet connectivity when attempting to use them.

The offline maps are used by the interviewers to record answers to the +geography type questions and for displaying data on the +map dashboard. If the survey doesn’t use +any geography type question nor records any locations using location sensor +(GPS or similar) then no maps need to be assigned.

The map assignment file is formatted as a tab delimited file with two columns:

  • map must contain unique map names (must correspond to the +files uploaded to the server);

  • users contains the list of the users that have access to the +map listed in the first column.

When the map must be available to more than one user, separate their logins +in the list with a comma.

It is normal that a user name is mentioned for more than one map. That user +will have access to all of the maps where his name was mentioned and no other.

Here is an example of such a file: usermaps.tab.

Uploading the map assignments replaces the previous map assignments. +If the map was assigned to an interviewer and subsequently a map assignments +file was uploaded that doesn’t contain this map-user pair, then the previosly +pushed map will be removed from the interviewer’s tablet at the next maps +synchronization.

After the map was assigned to an interviewer, that interviewer needs to +synchronize his maps (not data!) to receive the map files. These files may +be quite large.

The headquarters users must plan carefully when preparing the map files and +assignments to assign only the necessary maps covering the relevant areas. +Assigning all maps to all users may result in a huge traffic to the server, +waiste of airtime, and clogging of tablets.

\ No newline at end of file diff --git a/headquarters/mapsmanage/map-files/usermaps.tab b/headquarters/mapsmanage/map-files/usermaps.tab new file mode 100644 index 00000000..d54accec --- /dev/null +++ b/headquarters/mapsmanage/map-files/usermaps.tab @@ -0,0 +1,10 @@ +map users +m1.tpk inter1,inter2 +m2.tpk inter2 +m3.tpk inter2,inter3 +m4.tpk inter2,inter3,inter4 +m5.tpk inter2,inter4 +m6.tpk +m7.tpk inter5 +m8.tpk inter5 +m9.tpk inter5 diff --git a/headquarters/mapsmanage/map-formats/index.html b/headquarters/mapsmanage/map-formats/index.html new file mode 100644 index 00000000..eb7c56ee --- /dev/null +++ b/headquarters/mapsmanage/map-formats/index.html @@ -0,0 +1,22 @@ +Digital Map Formats +

Digital Map Formats

January 9, 2024

Survey Solutions offline maps may be prepared in any of the following formats:

FORMAT
EXTENSION
TYPE
EXTERNAL LINKS
ESRI tile package.
*.tpk

raster
USDA Tutorial on creation of TPK tile packages.
ESRI documentation Create Map Tile Package
ESRI mobile map package.
*.mmpk

raster
ESRI tutorial on creating MMPK mobile map packages.
GeoTIFF
*.tiff

raster
OGC GeoTIFF standard
Example file and +description.
Pacific Community (SPC) tutorial How to generate offline maps for Survey Solutions in QGIS.
Shapefile
*.shp
*.shx
*.dbf

vector
QGIS tutorial on creation of shapefiles.
ESRI Shapefile Technical Description

Useful links:

\ No newline at end of file diff --git a/headquarters/mapsmanage/online-maps-key/images/esri_key.png b/headquarters/mapsmanage/online-maps-key/images/esri_key.png new file mode 100644 index 00000000..43755e1c Binary files /dev/null and b/headquarters/mapsmanage/online-maps-key/images/esri_key.png differ diff --git a/headquarters/mapsmanage/online-maps-key/index.html b/headquarters/mapsmanage/online-maps-key/index.html new file mode 100644 index 00000000..1ea43d6e --- /dev/null +++ b/headquarters/mapsmanage/online-maps-key/index.html @@ -0,0 +1,58 @@ +Online maps key +

Online maps key

June 5, 2024

Usage of online maps is possible in Survey Solutions by consuming data +sources of Esri.

By default the API key is blank (not specified) and the online maps are not +selectable on mobile devices. Specifying a valid key facilitates using Esri’s +services supplying tiles for base map layer when:

  • using the map dashboard, and/or
  • answering geography type questions

in Interviewer and Supervisor apps.

Usage of the ESRI API key may (and likely will) cost you +money. It is important to familiarize yourself with the pricing, plans, charges +and limits as applicable. These conditions may be changed, possibly even without +prior notice. Pricing and billing conditions may depend on whether the user is a +private user or an organization. All of the billing for this service occurs +between you and the corresponding provider, the Survey Solutions developers are +not charging you for this service.

The same key is shared across all surveys in the Survey Solutions workspace. If +there is a need to utilize more than one key, then more than one workspace must +be created on the server.

The ESRI API key is an alphanumeric key that the user needs to obtain from +Esri directly, and +subsequently monitor and be responsible for its use (it is recommended that the +user of the key checks regularly the usage of the service and compliance with +any applicable terms, conditions and limits). Survey Solutions software is not +tracking usage of the tiles or the costs associated with such use.

It is necessary that this key has the “Basemaps” scope enabled for the online +maps to work in Survey Solutions Android apps (Interviewer and Supervisor).

Once the key is received, it is entered by the administrator in the +workspace settings. Users of the +Android apps (interviewer, supervisor) will receive this key as part of the +next synchronization. Specifically, this key is transferred during the regular +synchronization (of questionnaires, assignments, interviews, etc), not the maps +synchronization.

Interviewers/Supervisors do not see the value of the key in their interface, +but when the key is received, the selection of online maps is activated +(otherwise only offline maps are available for selection).

To regulate the costs the person controlling the key may disable it during the +periods when the field operation is not in the active phase by deactivating the +key in Esri’s developer dashboard. To temporarily deactivate the key one can edit the key settings +to remove the “Basemaps” scope. This allows to re-activate online maps +functionality at a later point without re-issuing a new key and having all the +tablets to synchronize.

Any changes to key configuration are not instanteneous. It may take time for +the new key to become active, or scope of the key to change. Consult the details +at the service provider’s site.

Users relying on online maps should understand that it may be affected by +Internet connectivity of the mobile device and other factors beyond the control +of Survey Solutions’ developers or the users of the mobile devices.

One doesn’t need to specify this key if:

  • the questionnaire uses neither GPS nor geography type questions, or
  • insterviewers/supervisors are assigned and using offline maps only, or
  • only web surveys are collected, without the use of mobile applications.

The introduction of the online maps key was announced in the Survey Solutions +users’ forum +on May 22, 2024.

\ No newline at end of file diff --git a/headquarters/mapsmanage/page/1/index.html b/headquarters/mapsmanage/page/1/index.html new file mode 100644 index 00000000..76408c77 --- /dev/null +++ b/headquarters/mapsmanage/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/mapsmanage/ + \ No newline at end of file diff --git a/headquarters/mapsmanage/shapefile-maps/images/gadm_ukr_maps.png b/headquarters/mapsmanage/shapefile-maps/images/gadm_ukr_maps.png new file mode 100644 index 00000000..f5d04fbf Binary files /dev/null and b/headquarters/mapsmanage/shapefile-maps/images/gadm_ukr_maps.png differ diff --git a/headquarters/mapsmanage/shapefile-maps/images/gadm_ukr_preview.png b/headquarters/mapsmanage/shapefile-maps/images/gadm_ukr_preview.png new file mode 100644 index 00000000..d12f2451 Binary files /dev/null and b/headquarters/mapsmanage/shapefile-maps/images/gadm_ukr_preview.png differ diff --git a/headquarters/mapsmanage/shapefile-maps/images/non-latin.png b/headquarters/mapsmanage/shapefile-maps/images/non-latin.png new file mode 100644 index 00000000..eb2299ce Binary files /dev/null and b/headquarters/mapsmanage/shapefile-maps/images/non-latin.png differ diff --git a/headquarters/mapsmanage/shapefile-maps/images/raster_map_icon.png b/headquarters/mapsmanage/shapefile-maps/images/raster_map_icon.png new file mode 100644 index 00000000..22d10c16 Binary files /dev/null and b/headquarters/mapsmanage/shapefile-maps/images/raster_map_icon.png differ diff --git a/headquarters/mapsmanage/shapefile-maps/images/shapefile_select.png b/headquarters/mapsmanage/shapefile-maps/images/shapefile_select.png new file mode 100644 index 00000000..1fa86d02 Binary files /dev/null and b/headquarters/mapsmanage/shapefile-maps/images/shapefile_select.png differ diff --git a/headquarters/mapsmanage/shapefile-maps/images/shapefile_show.png b/headquarters/mapsmanage/shapefile-maps/images/shapefile_show.png new file mode 100644 index 00000000..65b4e739 Binary files /dev/null and b/headquarters/mapsmanage/shapefile-maps/images/shapefile_show.png differ diff --git a/headquarters/mapsmanage/shapefile-maps/images/vector_map_icon.png b/headquarters/mapsmanage/shapefile-maps/images/vector_map_icon.png new file mode 100644 index 00000000..087f3bd8 Binary files /dev/null and b/headquarters/mapsmanage/shapefile-maps/images/vector_map_icon.png differ diff --git a/headquarters/mapsmanage/shapefile-maps/index.html b/headquarters/mapsmanage/shapefile-maps/index.html new file mode 100644 index 00000000..faeac4a5 --- /dev/null +++ b/headquarters/mapsmanage/shapefile-maps/index.html @@ -0,0 +1,22 @@ +Shapefile maps +

Shapefile maps

June 14, 2022

Survey Solutions Interviewer App displays maps for two purposes:

  • The dashboard depicts the assignments and interviews on the map by placing markers that correspond to the coordinates of an identifying question.
  • Geography questions (single- and multiple points, polyline and polygon) allow capturing geographical information by marking it on the map layer, typically a satellite or aero-photography.

Survey Solutions has been employing this functionality for several years already using the ESRI ArcGIS Android SDK components. A common problem for the interviewers is understanding the boundaries of their area of responsibility when using the above mentioned capabilities, because satellite and aero photography typically lacks the labels that help identify streets, blocks or landmarks.

An interviewer without a visual clue on what is his area of responsibility may cross into the area of responsibility of another interviewer or out of the sampled area resulting in enumeration of duplicate or ineligible dwellings/households.

This is particularly important in case of spatial sampling, where the area of responsibility doesn’t have boundaries defined by natural or man-made features easily observable (for example, river banks, or streets), but rather defined conceptually as limits on the coordinates (for example, the latitude between LS and LN, and the longitude between LW and LE).

Ensuring that the interviewers remain in the valid area can be done by supplying the boundaries of such areas as an additional layer to be combined with the base layer map. A number of map file formats exist for this purpose of which shapefiles stands out:

  • It is a well established and supported format developed by ESRI and documented in ESRI White Paper: ESRI Shapefile Technical Description.
  • Digital maps in shapefile format can be produced in ESRI-developed tools as well as in a number of other alternatives, including free and open source ones.
  • National Statistical Offices commonly have access to very detailed maps indicating not only provinces/district levels, but going all the way to enumeration areas and the blocks that comprise them.
  • Shapefiles may be generated programmatically, which is required for e.g. grid sampling techniques.
  • Being a vector format, shapefiles are quite space-efficient, the data consists of the coordinates of the vertices that make the boundaries.

For the last couple of years Survey Solutions had a possibility of supporting a single shapefile that could have been loaded manually by the interviewer to the tablet, but this was not satisfactory for many scenarios of practical data collection. The version 22.06 of Survey Solutions allows the survey coordinator to centrally deploy one or multiple shapefiles to individual interviewers. The process closely replicates the deployment of the baseline maps and consists of:

  1. Packing the shapefile components into a zip-archive with maps;
  2. Uploading the archive with maps to the Survey Solutions headquarters server;
  3. Assigning shapefiles to the interviewer accounts;
  4. Synchronizing the maps on the tablet devices with the server;
  5. Selecting an appropriate shapefile while working with maps.

Below we discuss each of these steps in more detail.

1. Packing the shapefile components into a zip-archive with maps

Each shapefile is represented as multiple files on a disk (see shapefile components), most importantly the *.shp, *.shx, *.dbf, and *.prj files. All of them must be packed and uploaded to the server for the shapefile to be usable.

Packing can be done with any zip-packer, including the zip-packer that is built into Windows OS.

The zip-archive should contain no sub-folders. All content should be placed directly to the root of the archive. The zip-archive may contain other types of maps though, such as base layer maps if this is convenient for the uploader. There are limits on the total size of the archive (compressed) and each file that is contained in the archive (decompressed). Consult the Survey Solutions limits page for specific values (which may change in the future versions). Survey Solutions server will refuse to accept uploads of larger files.

The shapefile type may be any of the existing shapefile types defined in the specification, but most useful are the polygon-type shapefiles, which determine polygonal areas that can be interpreted as areas of interest or responsibility.

If any of the files in the maps archive contains non-Latin characters, the archive must be storing them in Unicode UTF-8. If you are using a Windows OS built-in tool, it will suggest renaming the files to contain only Latin characters:

but other software may be creating incompatible files. Please check your archiver documentation.

2. Uploading the archive with maps to the Survey Solutions headquarters server.

Uploading of maps to the Survey Solutions server can be done by users in headquarters or administrator roles and is done from the Survey SetupMaps dialog. The Maps dialog shows the list of the maps currently uploaded to the server and available for the distribution to the users.

NB: Maps are stored separately by workspaces. If the same map is needed in multiple workspaces it must be uploaded to each such workspace.

The Maps dialog is using two icons to denote types of the uploaded maps:

for raster maps (tiff, tpk, and mmpk map files);

for vector maps (shapefiles).

Shapefile maps uploaded to the server are referred to by their main file name: filename.shp. If a this map is assigned or deleted, the same action is automatically applied to all other files constituting that shapefile (to the *.dbf, *shx, and *prj files). The file size displayed for the shapefiles is the sum of individual sizes of all of its constituent files.

To upload a new maps file clicking the green UPLOAD ZIP-FILE button. If there are any problems detected with the uploaded archive, they will be reported to the user. For example, the program may respond that a necessary file may be missing, is too large, has invalid content, or may indicate some other problem. If no problems are detected with the uploaded map files they will become available for assignments at the server.

Once a shapefile is uploaded to the server, it is possible to see a preview of it in the maps list by clicking the map file name and selecting the Open menu item.

3. Assigning shapefiles to the interviewer accounts.

Any map file (including shapefiles) needs to be assigned to the interviewer to be usable by him. Such an assignment is done by a user in the role headquarters or administrator.

Such assignments are done by uploading a file that establishes the correspondence between the maps and a comma-delimited list of the user accounts that are assigned access to those maps. The structure of this file is described here.

Any such uploaded file completely supersedes any previously made assignments (including any assignments done through the API calls).

4. Synchronizing the maps on the tablet devices with the server.

Synchronization and usage of the maps is available only in the version of the Survey Solutions Interviewer App with maps. (There is also a version of the Interviewer App without support of the mapping features).

This action is initiated by an interviewer by switching to the Maps dialog in the Interviewer’s App menu and pressing the Synchronize button. During the maps synchronization process:

  • Any maps that are found on this device that the interviewer is not assigned to are removed;
  • Any maps that are assigned to this interviewer on the server and which are currently absent on the device are downloaded from the server and stored.

Warning:

For existing maps the size and content of the file are not checked. This specifically means that if the map was refreshed on the server (map file deleted on the server and a new file uploaded with the same name) it will not be refreshed on the tablet. To make sure the new map is available on the tablet, upload it with a unique name that you are sure is free of naming collisions with any previously used maps.

Important warning:

If you are upgrading from an earlier version of the Survey Solutions, your interviewers may have already been using shapefiles that they have copied manually to their mobile devices. These shapefiles were placed in the folder as was recommended on our website. These files will be retained during synchronization of maps to avoid losing them during an update. If a new shape file is received from the server with the same filename in the new version they will both be available to the user. To avoid any confusion, it is strongly recommended to switch to the new way of delivering shapefiles to the interviewers from the HQ as soon as possible, and avoid manually copying them to the tablet as it used to be in the earlier versions. Once the legacy files are uploaded to the server and assignments are done for the interviewers, the legacy folders on the tablets should be deleted by the interviewers manually, reversing the manual changes that they have done earlier.

Synchronization of maps is performed for maps of all types, whether raster or vector. No specific action is needed from the interviewer for obtaining the shapefiles/boundaries after maps synchronization.

5. Selecting an appropriate shapefile while working with maps.

Once the maps are synchronized they can be utilized in the following dialogs of the Survey Solutions Interviewer App:

  • when viewing the Map Dashboard;
  • when answering a geography question.

The interviewer should click SHOW BOUNDARIES and select a desired shapefile.

NB: If there is only a single shapefile available to the interviewer it will be displayed automatically, without the selection dialog. To avoid interviewers’ mistakes of selecting an incorrect shapefile, assign them only a single shapefile that they will need if your survey allows this.

+

Boundaries that are shown can be removed by clicking the HIDE BOUNDARIES button.

API Changes

As part of the development work to improve the The API of Survey Solutions has been extended with an endpoint to upload maps to the Survey Solutions data server. This is a new GraphQL query .uploadMap(). This allows integration with external tools that are capable of generating digital maps, for example selecting them from a library of satellite imagery covering the area or indicating the bounds of the sampled area by generating a corresponding shapefile.

The .uploadMap() mutation facilitates uploading a zip archive file with one or multiple maps in a single or in different formats (for example, one can upload a base layer in the tpk format and a corresponding boundary as a shapefile, all packed into the same archive). There is a limit on the size of this maps archive, which is the same for the API and for the manual maps upload as mentioned above.

See more details on the API in the interactive GraphQL documentation.

\ No newline at end of file diff --git a/headquarters/menu/index.html b/headquarters/menu/index.html new file mode 100644 index 00000000..751bcb1a --- /dev/null +++ b/headquarters/menu/index.html @@ -0,0 +1,20 @@ +Menu Map +

Menu Map

Menu Map

This article describes the structure of the main menu and dialogs structure of the Survey Solutions Data Server.

The items in curly brackets { } are links and buttons present in the dialogs. The rest are items in the main or context menus.

Please note:

May 13, 2021
\ No newline at end of file diff --git a/headquarters/menu/menu-map/index.html b/headquarters/menu/menu-map/index.html new file mode 100644 index 00000000..293cf843 --- /dev/null +++ b/headquarters/menu/menu-map/index.html @@ -0,0 +1,22 @@ +Menu Map +

Menu Map

May 13, 2021

This article describes the structure of the main menu and dialogs structure of the Survey Solutions Data Server.

The items in curly brackets { } are links and buttons present in the dialogs. The rest are items in the main or context menus.

Please note:

  • [workspace] is a selector of available workspaces. HQ-users will see only the workspaces to which they have access, administrators will see all workspaces.

  • [account] menu item will be named with the login name of the user.

  • PDF preview of a questionnaire is available in every translation.

\ No newline at end of file diff --git a/headquarters/menu/page/1/index.html b/headquarters/menu/page/1/index.html new file mode 100644 index 00000000..a90ac299 --- /dev/null +++ b/headquarters/menu/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/menu/ + \ No newline at end of file diff --git a/headquarters/missing-values/index.html b/headquarters/missing-values/index.html new file mode 100644 index 00000000..1aa45f75 --- /dev/null +++ b/headquarters/missing-values/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/missing-values/ + \ No newline at end of file diff --git a/headquarters/numbering-in-subordinate-rosters-during-preloading/index.html b/headquarters/numbering-in-subordinate-rosters-during-preloading/index.html new file mode 100644 index 00000000..c0f36b15 --- /dev/null +++ b/headquarters/numbering-in-subordinate-rosters-during-preloading/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/numbering-in-subordinate-rosters-during-preloading/ + \ No newline at end of file diff --git a/headquarters/preloading/creating-assignments-one-at-time/images/732100.png b/headquarters/preloading/creating-assignments-one-at-time/images/732100.png new file mode 100644 index 00000000..0d377c39 Binary files /dev/null and b/headquarters/preloading/creating-assignments-one-at-time/images/732100.png differ diff --git a/headquarters/preloading/creating-assignments-one-at-time/images/732100_hu4000903647745100266.png b/headquarters/preloading/creating-assignments-one-at-time/images/732100_hu4000903647745100266.png new file mode 100644 index 00000000..dd9ac714 Binary files /dev/null and b/headquarters/preloading/creating-assignments-one-at-time/images/732100_hu4000903647745100266.png differ diff --git a/headquarters/preloading/creating-assignments-one-at-time/images/793728.png b/headquarters/preloading/creating-assignments-one-at-time/images/793728.png new file mode 100644 index 00000000..fef9f054 Binary files /dev/null and b/headquarters/preloading/creating-assignments-one-at-time/images/793728.png differ diff --git a/headquarters/preloading/creating-assignments-one-at-time/images/793728_hu15805136680431144206.png b/headquarters/preloading/creating-assignments-one-at-time/images/793728_hu15805136680431144206.png new file mode 100644 index 00000000..e0224ec4 Binary files /dev/null and b/headquarters/preloading/creating-assignments-one-at-time/images/793728_hu15805136680431144206.png differ diff --git a/headquarters/preloading/creating-assignments-one-at-time/images/793730.png b/headquarters/preloading/creating-assignments-one-at-time/images/793730.png new file mode 100644 index 00000000..28e8f42e Binary files /dev/null and b/headquarters/preloading/creating-assignments-one-at-time/images/793730.png differ diff --git a/headquarters/preloading/creating-assignments-one-at-time/images/793730_hu4937909408078704170.png b/headquarters/preloading/creating-assignments-one-at-time/images/793730_hu4937909408078704170.png new file mode 100644 index 00000000..b6f4d9ec Binary files /dev/null and b/headquarters/preloading/creating-assignments-one-at-time/images/793730_hu4937909408078704170.png differ diff --git a/headquarters/preloading/creating-assignments-one-at-time/images/793731.png b/headquarters/preloading/creating-assignments-one-at-time/images/793731.png new file mode 100644 index 00000000..4666a4cb Binary files /dev/null and b/headquarters/preloading/creating-assignments-one-at-time/images/793731.png differ diff --git a/headquarters/preloading/creating-assignments-one-at-time/images/793731_hu3775976345820285680.png b/headquarters/preloading/creating-assignments-one-at-time/images/793731_hu3775976345820285680.png new file mode 100644 index 00000000..90646a46 Binary files /dev/null and b/headquarters/preloading/creating-assignments-one-at-time/images/793731_hu3775976345820285680.png differ diff --git a/headquarters/preloading/creating-assignments-one-at-time/index.html b/headquarters/preloading/creating-assignments-one-at-time/index.html new file mode 100644 index 00000000..19916a0c --- /dev/null +++ b/headquarters/preloading/creating-assignments-one-at-time/index.html @@ -0,0 +1,41 @@ +Creating Assignments One at Time +

Creating Assignments One at Time

June 29, 2017

Step 1

Log in to your server using the headquarters username and password

Note that each institution using Survey Solutions will utilize their +own server. Consequently, your username can differ from the one depicted +above
 

 

Step 2

Select the Survey Setup tab, and click on Questionnaires.

Step 3

Create the new assignment for your questionnaire.
 
Click on the questionnaire template you want to create a new assignment +for, and then click on New Assignments  from the pop-up menu. 

Step 4

Fill out as many identifying fields as you would like. You do not need +to fill out all the identifying fields. Interviewers will be able to +fill out any identifying fields left blank so you may want to leave +identifying field blank if you think the Interviewer would be able to +more accurately fill out that information.
 

Step 6

Specify the quantity for the assignment. The quantity is the maximum +number of interviews that can be generated for that assignment. For +example, if you want your interviewer to perform 5 interviews for the +assignment, you would put ‘5’ in the Quantity field. To specify an +unlimited number of interviews for that assignment (previously known as +census mode), leave the Quantity field empty. The quantity can be +changed later if you want to increase or decrease the number of +interviews.
 

Step 7

Specify who will be responsible for the assignment. Select the +supervisor or interviewer that will be responsible for the assignment. +The field allows you to search for the supervisor or interviewer by +their username.

Step 8

Click on the blue Create button to generate the assignment. After +creating the assignment, you will be taken to the Assignments dashboard +where you will see your newly generated assignment at the top of the +list.

\ No newline at end of file diff --git a/headquarters/preloading/errors-in-user-supplied-files-for-preloading/index.html b/headquarters/preloading/errors-in-user-supplied-files-for-preloading/index.html new file mode 100644 index 00000000..1cd896b9 --- /dev/null +++ b/headquarters/preloading/errors-in-user-supplied-files-for-preloading/index.html @@ -0,0 +1,76 @@ +Errors in user-supplied files for preloading +

Errors in user-supplied files for preloading

March 9, 2018

Survey Solutions allows preloading assignments with data, including +answers to questions inside rosters and nested rosters.

It is the user’s responsibility to supply valid input files for this +process. The user-supplied files will be validated to match the +questionnaire template that is being preloaded. Survey Solutions can +detect a number of inconsistencies and common problems and will indicate +them during preloading. 

Each detected error is having a code listed in the table below. +Additional checks may be added in the future. 

When an error is detected in the preloading file, Survey Solutions may +reject such input data fully or partially. If Survey Solutions rejects +the preloading file completely, and you can’t localize the problem (in +which interview it occurs) it is a good idea to try to break down the +preloading file into smaller portions to identify, in which specific +interview the problem is present.

Many of the messages below are accompanied by various identifying +information, such as a line number in the file, values of identifying +questions, variable names, roster indices or other supplementary +information that helps localizing the problem.

It is a good practice to establish a reproducible process of creating +assignments (preloading data files) by writing scripts/programs that can +be adjusted and re-run to obtain the desired preloading file. Survey +Solutions users commonly use various statistical packages, such as +Stata, SPSS, R as well as queries to databases to extract the necessary +information in exactly the format expected at input by Survey Solutions. +This practice allows adjustments be done to those scripts whenever the +format of input data for Survey Solutions changes, or if the sample file +needs to be replicated for troubleshooting purposes.
 

CodeMessageDescription/Comment
PL0001
Questionnaire is missing in HQ
Rare. Questionnaire that you are trying to preload has been deleted by the server administrator.

Contact the server administrator.
PL0002
N/A
If you see this error contact the support team.
PL0003
Column cannot be mapped to any question in the questionnaire.
In the file being uploaded a column name (variable) is specified, which is not present in the questionnaire.

Check column names for typos, check variables are in appropriate levels (files).
PL0004
File cannot be mapped to any roster in the questionnaire.
The archive being uploaded contains a file that Survey Solutions doesn't know what to do with it.

Check how the files are named against the template downloadable from Survey Solutions HQ.
PL0005
N/A
If you see this error contact the support team.
PL0006
Duplicate Id values found.
Check the ids for duplicates and renumber or correct the typos.
PL0007
One or more parent Id column is missing.
For every element of roster files id columns linking it to higher levels must be present and non-missing.

Check the id columns in the roster files and fill them out with appropriate ids. For example, for every person in the household roster there must be a household id specified where this person resides.
PL0008
Roster record does not have a parent.
A record in the roster file refers to non-existent record in the parent file (orphan record).

Check for relationships between the files. For every detailed record the parent record must exist.
PL0009
Roster Id is inconsistent with roster size.
Either the number of elements in the roster or their numeration is inconsistent with the trigger question.

See recommendations here.
PL0010
Linked questions cannot be preloaded.
Remove the values from the columns corresponding to linked questions.
PL0011
General error occurred.
Inspect the records you are preloading against the questionnaire designed. Survey Solutions reported that it can't preload the records with the values it received from the user, but no additional information is available.
PL0012
Question found in the uploaded file(s) that does not exist in the questionnaire
Check column names against the template that can be downloaded from the Survey Solutions HQ for this questionnaire.
PL0013
Provided value is null or empty
Value that was expected to be not empty is found to be empty in the preloading file.

Replace the blank values with appropriate non-missing values.
PL0014
Provided question value not allowed.
Replace the erroneous value with a permitted one. For example, in categorical questions, make sure the category exists among the categories specified for this question in the questionnaire.
PL0015
Type of question is not correct.
Check that the value being uploaded corresponds to the question type. Such as string vs numeric content.
PL0016
Invalid Date or Time value entered in the date question.
Check the format of the date/time values you are preloading.
PL0017
Invalid GPS value.
Check the GPS coordinates for validity. Express coordinates in degrees and decimals, such as 51.50, not in degrees and minutes, seconds, not 51°30′00".
PL0018
Only integer values are allowed.
You are trying to put a non-integer value to a question or variable that only accepts integer answers.

Replace with integer values.
PL0019
Only real values are allowed.
Non-numeric value found for categorical question.
PL0022
Roster size question cannot have negative values.
Replace with non-negative values.
PL0023
Picture question cannot be preloaded.
Remove the values from the columns corresponding to picture questions.
PL0024
Preloading data were not found
 
PL0025
Responsible field was not provided for 1 or more observations
If the _responsible column is present in the preloading data, it must be all populated without any blanks.

Check _responsible column for blanks (missings) and fill out with appropriate account names.
PL0026
Responsible does not exist for 1 or more observations
Name specified as responsible person (recepient of the assignment) does not exist.

Check _responsible column for typos. Make sure all of the accounts mentioned are already created in the HQ and have either a supervisor or interviewer role.
PL0027
Responsible is a locked user for 1 or more observations
Assignments can't be made to the users locked out from the system.

Check that the responsible users are not locked. Either unlock the user or assign to a different user.
PL0028
User is not Supervisor or Interviewer for 1 or more observations
Preloading file contains a login name of a person who is neither a supervisor nor an interviewer, and hence may not receive an assignment.

Check the names and roles of the account names mentioned in the _responsible column. Revise so that everyone is either a supervisor or an interviewer.
PL0029
Answer to roster size question cannot be greater than NN.
You are trying to preload a very large value not supported by Survey Solutions.

Reduce the value.
PL0030
GPS questions require separate columns for Latitude and Longitude
In early versions of Survey Solutions GPS question data was exported into a single string column with internal formatting. This is no longer the case in new versions, and each component occupies it's own column.

Separate latitude from longitude.
PL0030
GPS question requires Latitude and Longitude to be set.
Make sure both latitude and longitude are specified for GPS questions.
PL0031
Two or more columns have the same name.
There should be no two columns with identical names in any file, downloaded from or uploaded to Survey Solutions.

Check column names for typos. For columns that correspond to lists, make sure +the indices are present in column titles, for example, member__0, +member__1, etc.
PL0032
Latitude must be greater than -90° and less than 90°.
Check that the values of latitude in the preloading file are all within the -90, 90 range. 

If your coordinates come from some other projection you may need to convert (reproject) to degrees.
PL0033
Longitude must be greater than -180° and less than 180°.
Check that the values of longitude in the preloading file are all within the -180, 180 range. 

If your coordinates come from some other projection you may need to convert (reproject) to degrees.
PL0034
Invalid decimal separator. The "," symbol is not allowed in numeric answers. Please use "." instead.
Always use a dot in fractional numeric values, even if a comma (or another character) is used in your country or in your current OS settings as a decimal delimiter.

Reformat the values in the preloading file to use a dot as a decimal delimiter.
PL0035
Only integer values are allowed.
Preloading file contains a fractional (non-integer) value, where only integers were expected based on the questionnaire template.

Replace fractional with integer values.
PL0036
Quantity should be greater than or equal to -1.
In assignments, the requested quantity must be an integer value, and may be 0 or a positive value, or a -1 for infinite number of interviews. Other negative values are not permitted.

Revise the requested quantities of interviews in the assignments.
PL0037
Column cannot be mapped to non identifying question
Check the variable names in the first row of each file against the template that can be downloaded from Survey Solutions HQ.
PL0038
Area question cannot be preloaded.
Remove the values from the columns corresponding to area questions.
PL0039
Audio question cannot be preloaded.
Remove the values from the columns corresponding to audio questions.
PL0040
File with questionnaire level data is missing.
Survey Solutions can't find in the zip-archive being uploaded the file named the same as the questionnaire.

Check the names of the files in the zip archive being uploaded. One file must have the same name as the questionnaire. Note that Survey Solutions refines the name of the questionnaire removing any special characters, punctuation, non-latin and accented characters from the filename (and does not expect any of them in the files being preloaded). To see what name the questionnaire should have, download the template file offered at the sample preloading step.
PL0041
Answer to multiple choice question cannot contain more than NN answers.
Preloading file contains more answers than permitted by the maximum answers NN set in the questionnaire template.

Reduce the number of answers in the preloading file or revise the questionnaire template in the Designer.
PL0042
Id column doesn't have any value.
Provide a valid value for all ids.
PL0047Required column variable__name is missingThe file protected__variables.tab does not contain the required column variable__name.

Make sure that this file is a text file and contains a single column with the name variable__name. Mind the double underscores in the name of this column.
PL0048Protected variable is not found in provided questionnaireThe file protected__variables.tab specified a variable name that doesn't exist in the questionnaire template.

Check the names of the variables versus the names in the questionnaire Designer. For text list and multi-select categorical questions only the root name must be specified, e.g. hhmembers, not hhmembers__2.
PL0049Variable has type that does not support protectionThe file protected__variables.tab mentions a variable name corresponding to a question not supported by protection. Error message mentions the first of such invalid variables.

Check the file for typos in variable names.

Check the types of the variable mentioned in the error message. It must be one +of the permitted for protection.
PL0050Negative value is not allowed for Categorical Multi select question.Check the value being preloaded into a multi-select question.
?Password-protected archives are not supportedUpload the preloading data in an archive without a password, since there +is no way for the server to unpack password-protected data.
PL0052List roster should have a column for text list answersWhen preloading values in the roster triggered by a text list type question, +include a column of text values in the roster-level file. The variable should be +having the same name as name of the trigger question itself.
PL0053Inconsistent roster code for numeric roster. Sequence of roster codes +should be 0, 1, ... to count of roster instancesCheck the IDs of the items in the roster file. Correct the IDs to follow +the indicated sequence.
PL0054Max quantity shouldn't be more than # .The value specified for _quantity is too large, +overshooting the indicated limit value.

Review the requested quantities of interviews. Break large assignments into +two or more smaller size assignments, or use the specific value +-1 to indicate infinite-size assignments.
PL0055Email is not validValue indicated in the _email field of the preloading file is +not a valid email for one or multiple assignments. Review and correct the email +values.
PL0056Invalid Password. At least 6 numbers and upper case letters or single symbol +'?' to generate passwordValue indicated in the _password field of the preloading +file does not comply with the password rules. Review the passwords specified in +the preloading file and specify passwords that are compliant with the indicated +rules, or specify the question mark for the cases where you want Survey +Solutions to automatically generate a valid password.
PL0057For assignments with provided email allowed quantity is 1Assignments distributed over email necessarily need the quantity value of +1.
PL0058Web Mode has to be activated for assignments having EmailThe parameter _email should only be prefilled if the mode +for an assignment is CAWI (web).
PL0059Web Mode has to be activated for assignments having PasswordThe parameter _password should only be prefilled if the mode +for an assignment is CAWI (web).
PL0060Assignment with size 1 for web mode should have either email or password +providedMake sure you specify a valid email, or valid password (or both) for +web-assignments of size 1.
PL0061Password is not unique. Password by assignment for web mode with +quantity 1 should be uniqueCheck that within the preloading file no two assignments have identical +passwords specified. Specify the question mark for the assignments where you +want Survey Solutions to automatically generate a valid password.
PL0062All assignments for web interviews must be made to an interviewerCheck the values of the _responsible field. For +web-assignments the responsible person should be an account in the role +Interviewer.
PL0063Answer to question with variable name {0} can't be preloaded, since it is +of unsupported type. Refer to the following support article +https://support.mysurvey.solutions/questionnaire-designer/limits/design-limitations-by-question-type +for details of what can be preloaded in the current version.You are trying to preload a question, where preloading is not possible +based on the question type. Refer to the linked resource for a discussion of +where preloading is possible.
\ No newline at end of file diff --git a/headquarters/preloading/index.html b/headquarters/preloading/index.html new file mode 100644 index 00000000..944b3b3a --- /dev/null +++ b/headquarters/preloading/index.html @@ -0,0 +1,61 @@ +Creating Assignments +

Creating Assignments

Upgrading assignments

Survey Solutions assignments play a critical role in the survey process because they regulate who is supposed to deliver the incoming data (interviews). Each assignment is referring to a particular questionnaire.

It is best to not modify the questionnaire during the survey. Some of the undesirable effects of this are:

  • the survey becomes split between several databases, each has to be downloaded separately from Survey Slutions and appended later using external tools;
  • the data may no longer be comparable (e.g. choice sets differ between questions);
  • the data quality may be heterogenious (differing between collected earlier and later periods);
  • interviewers may need retraining for the newer version of the questionnaire;
  • the process of upgrading the questionnaire needs to be followed by upgrading of assignments, which depends on which interviews have been already conducted and which have not.

Sometimes this is unavoidable, e.g. in case a gross mistake was made during the questionnaire development and further data collection based on unfixed version doesn’t make sense.

December 12, 2018

Protecting pre-loaded answers

Starting with v18.06 Survey Solutions allows protecting values of +trigger questions that have been preloaded from being subsequently +modified by the interviewer. The protection applies to reduction, but +permits extension. This is commonly needed in the panel surveys, where, +for example, the names in the list of household members that are +preloaded should not be eliminated by the interviewer, but new household +members may be added if needed.

The protection applies to questions that may perform the role of +triggers: 

June 6, 2018

Errors in user-supplied files for preloading

Survey Solutions allows preloading assignments with data, including +answers to questions inside rosters and nested rosters.

It is the user’s responsibility to supply valid input files for this +process. The user-supplied files will be validated to match the +questionnaire template that is being preloaded. Survey Solutions can +detect a number of inconsistencies and common problems and will indicate +them during preloading. 

Each detected error is having a code listed in the table below. +Additional checks may be added in the future. 

March 9, 2018

Survey Setup Tab: Import, Copy, and Delete Questionnaire Templates, and Create Assignments

The survey setup tab lets you do several things:

Questionnaires

  1. Import template. Import questionnaires from the +Designer site to the headquarters software.
  2. Create assignments: Headquarters provides two ways of +creating assignments for a given questionnaire: one at a +time, or in a many at a time (batch).
  3. Clone questionnaire template: Copy the questionnaire +templates previously imported to the server. This feature is only +available to the administrator.
  4. Delete questionnaire. This feature is only available to +the administrator.

Assignments 

  1. Archive and reallocate assignments to members of the +data collection team. 
  2. Monitor assignments. Displays a tabular view of all assignment and +enables you to edit the quantity of interviews for any +assignment. 

Maps

June 29, 2017

Creating Assignments One at Time

Step 1

Log in to your server using the headquarters username and password

Note that each institution using Survey Solutions will utilize their +own server. Consequently, your username can differ from the one depicted +above
 

 

Step 2

Select the Survey Setup tab, and click on Questionnaires.

June 29, 2017

Numbering in subordinate rosters during preloading

It is important to make sure that during preloading of multiple files +the subordinate records are correctly identified.

The numbering depends on the kind of trigger used for determining the +size of the roster:

  1. fixed: the Id variable in the subordinate file should contain +the code of the item specified in the Designer.
  2. multiple choice: the subordinate file should contain the codes +of items as specified during setting up the multiple choice question +in the Designer.
  3. numeric: the subordinate file should contain the items with +sequential ids starting from zero (0);
  4. text list: the subordinate file should contain the items with +sequential ids starting from one (1). Note that the text list +question itself requires indexing of members starting with zero (0).

February 23, 2017

Uploading Many Assignments at a time

For many surveys, creating assignments one by one will be a tedious and +time intensive task. To help speed up your work, Survey Solutions allows +you to batch upload many assignments at once using a tab delimited. +Follow the steps below to perform a batch upload of assignments:

Step 1

Create a tab-delimited file with the identifying information for your +assignments
 
Before performing an interview, data collection teams must know the name +(e.g., name and surname of the head of household) and/or location (e.g., +region, county, district, neighborhood) of who they should be +interviewing. To facilitate locating the respondents, this identifying +information will appear on the dashboard of enumerator app for each +interview for which they are responsible.

June 27, 2016
\ No newline at end of file diff --git a/headquarters/preloading/numbering-in-subordinate-rosters-during-preloading/index.html b/headquarters/preloading/numbering-in-subordinate-rosters-during-preloading/index.html new file mode 100644 index 00000000..9a95618b --- /dev/null +++ b/headquarters/preloading/numbering-in-subordinate-rosters-during-preloading/index.html @@ -0,0 +1,30 @@ +Numbering in subordinate rosters during preloading +

Numbering in subordinate rosters during preloading

February 23, 2017

It is important to make sure that during preloading of multiple files +the subordinate records are correctly identified.

The numbering depends on the kind of trigger used for determining the +size of the roster:

  1. fixed: the Id variable in the subordinate file should contain +the code of the item specified in the Designer.
  2. multiple choice: the subordinate file should contain the codes +of items as specified during setting up the multiple choice question +in the Designer.
  3. numeric: the subordinate file should contain the items with +sequential ids starting from zero (0);
  4. text list: the subordinate file should contain the items with +sequential ids starting from one (1). Note that the text list +question itself requires indexing of members starting with zero (0).
\ No newline at end of file diff --git a/headquarters/preloading/page/1/index.html b/headquarters/preloading/page/1/index.html new file mode 100644 index 00000000..62ed596c --- /dev/null +++ b/headquarters/preloading/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/ + \ No newline at end of file diff --git a/headquarters/preloading/protecting-pre-loaded-answers/index.html b/headquarters/preloading/protecting-pre-loaded-answers/index.html new file mode 100644 index 00000000..9ea9923d --- /dev/null +++ b/headquarters/preloading/protecting-pre-loaded-answers/index.html @@ -0,0 +1,61 @@ +Protecting pre-loaded answers +

Protecting pre-loaded answers

June 6, 2018

Starting with v18.06 Survey Solutions allows protecting values of +trigger questions that have been preloaded from being subsequently +modified by the interviewer. The protection applies to reduction, but +permits extension. This is commonly needed in the panel surveys, where, +for example, the names in the list of household members that are +preloaded should not be eliminated by the interviewer, but new household +members may be added if needed.

The protection applies to questions that may perform the role of +triggers: 

  • numeric, 
  • text list, and 
  • multiple-select categorical (in regular or Y/N-mode). 

Note also, that the answers to the questions may be protected even if +they are not triggering any rosters, as long as the type of the question +is one of these three.

If the answer to the question is protected, then:

  • for numeric question the interviewer may specify an answer greater +or equal to the one specified during preloading;
  • for text list question the interviewer may append new items to the +end of the text list, but not remove the ones that were preloaded;
  • for multiple-select categorical question the interviewer may select +any categories in addition to the ones already selected during +preloading, but can’t unselect the pre-selected categories.
  • for multiple-select categorical question in Y/N-mode the interviewer +may change the selection of options that were preloaded as missing, +but can’t change their selection if they were preloaded as either +positively or negatively selected.

The protection of answers may only be done in advanced preloading mode +when the identifying information and preloading data are uploaded as a +single zip archive. To protect the answers an additional text file with +the name protected__variables.tab (mind the double underscores +in the file name) must be created and placed into the zip-archive +alongside the main data file there. This file has the following +structure: the 1st line should contain exactly this word: +variable__name, while the 2nd, 3rd and subsequent lines should +contain variable names of the questions that need to be protected (each +variable on it’s own line). For example:

variable__name
+hhmembers
+n_parcels
+n_crops
+

The protection applies to the variable specified, regardless of the +level where it is positioned in the questionnaire, whether in the main +level of the interview, in a roster, or in a nested roster. In the above +example, the n_crops variable may be the trigger for the crops roster +nested into the parcels roster, and the answers to n_crops specified +in any parcel will be protected.

If the Survey Solutions identifies a problem with this file, it reports +an error and aborts the preloading process. For details, see the +following troubleshooting +reference.

This protection of answers is effective in the whole set of data being +preloaded. Note that the empty answers are not protected (e.g. if +numeric question was not preloaded, the interviewer will be able to +specify any value).

\ No newline at end of file diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/692348.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/692348.png new file mode 100644 index 00000000..3a3f5fd0 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/692348.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/692348_hu2787029081371051854.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/692348_hu2787029081371051854.png new file mode 100644 index 00000000..0292e64b Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/692348_hu2787029081371051854.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/692351.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/692351.png new file mode 100644 index 00000000..1e130e87 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/692351.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/692351_hu16281967394775427427.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/692351_hu16281967394775427427.png new file mode 100644 index 00000000..998a069f Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/692351_hu16281967394775427427.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/732258.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/732258.png new file mode 100644 index 00000000..39ac15d1 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/732258.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/732258_hu10991152677331948648.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/732258_hu10991152677331948648.png new file mode 100644 index 00000000..50b01c36 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/732258_hu10991152677331948648.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/732262.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/732262.png new file mode 100644 index 00000000..d79c2bcf Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/732262.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/732262_hu2945900117134457665.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/732262_hu2945900117134457665.png new file mode 100644 index 00000000..b8f85659 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/732262_hu2945900117134457665.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/756583.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/756583.png new file mode 100644 index 00000000..b1e3ac9e Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/756583.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/756583_hu5884363366576849236.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/756583_hu5884363366576849236.png new file mode 100644 index 00000000..6080a8fc Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/756583_hu5884363366576849236.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/778551.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/778551.png new file mode 100644 index 00000000..d3c2c2d1 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/778551.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/778551_hu3798092636429677814.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/778551_hu3798092636429677814.png new file mode 100644 index 00000000..364226e6 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/778551_hu3798092636429677814.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/778552.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/778552.png new file mode 100644 index 00000000..101e44c2 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/778552.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/778552_hu11352678183593170568.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/778552_hu11352678183593170568.png new file mode 100644 index 00000000..3eb909b6 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/778552_hu11352678183593170568.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794222.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794222.png new file mode 100644 index 00000000..1cbb1ac0 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794222.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794222_hu11134549905230070055.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794222_hu11134549905230070055.png new file mode 100644 index 00000000..b3d85732 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794222_hu11134549905230070055.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794223.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794223.png new file mode 100644 index 00000000..02cf64ca Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794223.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794223_hu15826186737655371853.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794223_hu15826186737655371853.png new file mode 100644 index 00000000..0ab1d7a0 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794223_hu15826186737655371853.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794225.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794225.png new file mode 100644 index 00000000..21821862 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794225.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794225_hu4410961698840204116.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794225_hu4410961698840204116.png new file mode 100644 index 00000000..ee2c3fe8 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794225_hu4410961698840204116.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794230.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794230.png new file mode 100644 index 00000000..1f3f9c1e Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794230.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794230_hu11340293876007660796.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794230_hu11340293876007660796.png new file mode 100644 index 00000000..e6512ca1 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794230_hu11340293876007660796.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794256.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794256.png new file mode 100644 index 00000000..eabda63d Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794256.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794256_hu2940356800125836522.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794256_hu2940356800125836522.png new file mode 100644 index 00000000..900facf8 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794256_hu2940356800125836522.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794258.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794258.png new file mode 100644 index 00000000..6d515de8 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794258.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794258_hu1872823388933594751.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794258_hu1872823388933594751.png new file mode 100644 index 00000000..c44bb70f Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794258_hu1872823388933594751.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794261.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794261.png new file mode 100644 index 00000000..6d515de8 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794261.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794261_hu1872823388933594751.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794261_hu1872823388933594751.png new file mode 100644 index 00000000..c44bb70f Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794261_hu1872823388933594751.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794264.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794264.png new file mode 100644 index 00000000..a0da89e3 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794264.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794264_hu126728190391463972.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794264_hu126728190391463972.png new file mode 100644 index 00000000..f2a736f9 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794264_hu126728190391463972.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794265.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794265.png new file mode 100644 index 00000000..4ef4863c Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794265.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794265_hu16902994986309652400.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794265_hu16902994986309652400.png new file mode 100644 index 00000000..48c222fe Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794265_hu16902994986309652400.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794269.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794269.png new file mode 100644 index 00000000..c5ef0da2 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794269.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794269_hu8769359003095645300.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794269_hu8769359003095645300.png new file mode 100644 index 00000000..daa5cb41 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/794269_hu8769359003095645300.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818940.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818940.png new file mode 100644 index 00000000..8c154dbe Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818940.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818940_hu8338585167029900716.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818940_hu8338585167029900716.png new file mode 100644 index 00000000..b9c1739f Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818940_hu8338585167029900716.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818942.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818942.png new file mode 100644 index 00000000..ae85d1f2 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818942.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818942_hu139146151085442090.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818942_hu139146151085442090.png new file mode 100644 index 00000000..31deed94 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818942_hu139146151085442090.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818943.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818943.png new file mode 100644 index 00000000..599ef22b Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818943.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818943_hu3393611958818968819.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818943_hu3393611958818968819.png new file mode 100644 index 00000000..06ae004b Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/818943_hu3393611958818968819.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/839994.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/839994.png new file mode 100644 index 00000000..90faeff3 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/839994.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/839994_hu913484290504484584.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/839994_hu913484290504484584.png new file mode 100644 index 00000000..0a8f5720 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/839994_hu913484290504484584.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/839995.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/839995.png new file mode 100644 index 00000000..76a67847 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/839995.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/839995_hu13405751927713991935.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/839995_hu13405751927713991935.png new file mode 100644 index 00000000..6b7cbf47 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/839995_hu13405751927713991935.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/852920.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/852920.png new file mode 100644 index 00000000..33bd1581 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/852920.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/852920_hu3739223897511251326.png b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/852920_hu3739223897511251326.png new file mode 100644 index 00000000..20996516 Binary files /dev/null and b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/images/852920_hu3739223897511251326.png differ diff --git a/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/index.html b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/index.html new file mode 100644 index 00000000..161c3fc1 --- /dev/null +++ b/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/index.html @@ -0,0 +1,184 @@ +Survey Setup Tab: Import, Copy, and Delete Questionnaire Templates, and Create Assignments +

Survey Setup Tab: Import, Copy, and Delete Questionnaire Templates, and Create Assignments

June 29, 2017

The survey setup tab lets you do several things:

Questionnaires

  1. Import template. Import questionnaires from the +Designer site to the headquarters software.
  2. Create assignments: Headquarters provides two ways of +creating assignments for a given questionnaire: one at a +time, or in a many at a time (batch).
  3. Clone questionnaire template: Copy the questionnaire +templates previously imported to the server. This feature is only +available to the administrator.
  4. Delete questionnaire. This feature is only available to +the administrator.

Assignments 

  1. Archive and reallocate assignments to members of the +data collection team. 
  2. Monitor assignments. Displays a tabular view of all assignment and +enables you to edit the quantity of interviews for any +assignment. 

Maps

  1. Upload and assign maps (.tpk) for interviewers to download onto +their tablet devices. Maps are used for the Area question type. 

Questionnaires 

When you first navigate to the questionnaires page under the Survey +Setup tab in Headquarters, you will see this screen:


 

  1. **List of questionnaires: **This has the list of questionnaires that +you have already imported. For each questionnaire, you will see the +following information: name of questionnaire, version, the date and +time the questionnaire was imported to the server, the date and time +the questionnaire was created on Designer, and the date and time the +questionnaire was last changed on Designer. The questionnaires can +be sorted by any of these information.
  2. Import template button: This will allow you to import a new +questionnaire onto the server
  3. Search button: If you have a lot of questionnaires on your +server, you can quickly search for the questionnaire you want by +clicking on the search button and typing the name of the +questionnaire. 

 

Import a questionnaire template

When clicked, the green Import template button prompts the user to +connect to the Designer site and to select a questionnaire template for +import. To connect to Designer, headquarters must enter a valid login +and password (as pictured below). Note that these login credentials are +for the Designer site, not the headquarters software.

After connecting to the Designer site, the user must select a +questionnaire template to import. To do so, the user must first find a +questionnaire, either by scrolling through the list of questionnaires +available or using the search box. Click on the questionnaire to import +it. 

Then, you will be prompted to confirm the import. 

Once import of the selected questionnaire is complete, the name of that +questionnaire appears in the list of questionnaires on the +Questionnaires tab. If this is the first time the questionnaire has been +imported, the headquarters software will add “(1)” in the column titled +“Version”. Each time a new version of the same questionnaire is +imported, the software will add the corresponding version number in that +column.

When a new version of an existing questionnaire is imported to the +server, any unfulfilled assignments in the old version may be migrated +to the new version. If the HQ user decides to migrate the assignments, +the system will examine them one by one and decide whether the migration +is possible and if so, archive the original assignment and recreate a +new assignment in the new version of the questionnaire (for the +remaining number of interviews still not delivered). We recommend +testing the questionnaires extensively to minimize any revisions to the +questionnaires during fieldwork.

Create assignments

To create assignment, click on the questionnaire you want to create +assignments for. Then you will see a menu that will have two options for +creating assignments: New Assignment, which creates assignments one at +a time; and Upload assignment , which creates several assignments at +once.


 

One assignment at a time

After clicking on *New assignment *menu, you will be prompted to provide +identifying information for the survey case—typically name and +geographic location of the respondent—and to select a +supervisor/interviewer to be responsible for the assignment. The system +does not require you to fill in all the information. The set of +identifying information, which corresponds to the questions marked +as Identifying on the Designer site, should be provided by +headquarters when creating a case and will appear on the interviewer’s +dashboard when assigned. ** **Next, define the number of interviews that +should be generated for the assignment. To allow an unlimited number of +interviews, leave the Quantity field blank.

You will also prompted to designate a supervisor/interviewer as +responsible for the case (Responsible). Once assigned to a supervisor, +the survey case will appear on the supervisor’s dashboard and will be +available to assign to one of the supervisor’s data collection team. If +assigned to a interviewer, the survey case will appear on the +interviewers device after synchronization.


 

Several assignments at a time

While selecting *New assignments *requires you to enter case address +information manually, the Upload assignments method relies on an +external tab delimited .tab file that contains that same information for +each case to be created—and potentially other information to include +into those cases as well. The headquarters software offers two ways of +using external .tab files to pre-fill survey cases in a batch upload:

  1. Identifying data only, typically used for cross-sectional surveys, +which loads only respondent address information (e.g., region, +enumeration area, village, name of household head)
  2. An advanced mode which involves preloading info (identifying data +and collected data), typically used for panel surveys, which loads +not only information on the respondent’s address, but also +information for any other field of the questionnaire (e.g., name and +age all of household members from last wave of data collection).

For uploading assignments , either create a .tab file with variable +names of identifying questions or download the template.

Then, in the first row variable names and variable values in subsequent +rows. The variable names in the top row of the .tab file must match +those in the Designer template. The format of those variables must match +those specified in Designer. To set a specific number of cases for each +assignment add the column _quantity

Then, upload the data in the .tab file. To do so, first click on the +“Upload .TAB File” and select your file. 
Next, the headquarters software will confirm that the uploaded .tab file +contains valid contents and follows the format that the headquarters +software expects. If there are any error messages, check the .tab file +and make the necessary changes. Otherwise, proceed to the next step.


 
Then, select the person responsible for this batch of survey +assignments. To do so, choose the username from the drop-down menu. +Lastly, click on Create Assignments. Note that in this method +headquarters must upload one .tab file per person responsible.

 
However, you can upload one .tab for the survey sample by adding a +column in the .tab file with the heading _responsible and +populating all the fields with the appropriate interviewer or supervisor +usernames.

Preloading

Preloading (identifying and collected data) is used primarily for panel +surveys, is generally similar to the mode described previously but +involves a few additional steps.  To preload both identifying and +collected data, you need to first create a .tab file or set of .tab +files.

To do this, click on the *download .zip template *link.

A .zip file containing one .tab file for each hierarchical level in the +questionnaire will download (e.g., one file containing all +household-level variables, another file containing all household +member-level variables, and still another file containing all +consumption item-level variables). In other words, this provides +headquarters with a template to fill with any pre-existing information +about the survey cases that will be created.

While the number of such template files depends on the questionnaire, +the structures of these template files follow the same format. Each file +is composed of: Id, ParentId, and all other variables. The Id is meant +to be a unique identifier for the template file (e.g. a simple serial +number). The ParentId is an identifier that links a lower-level item to +a higher-level item (e.g., serial number of household that operate a +plot). If a roster is nested in another roster, the template file can +also have ParentId1 and ParentId2. See the image below for a graphical +explanation. The other variables in the file correspond to the variables +present at that hierarchical level of observation.

Note that the numbering in the +subordinate data files should correspond to the type of roster, please +refer to this +article +for more information. 

Once the .tab file has been created, fill it with three sets of +information. First, headquarters must provide the same set of respondent +address information as outlined in the previous section—that is, +information for the fields marked in the Designer tool as Identifying. +Second, headquarters may fill in any pre-existing information about +respondents, using any field in the questionnaire. This would be done by +filling in the columns for any variables, in any one of the .tab files +that make up the questionnaire template. These questions will not appear +on the interviewer’s dashboard, and the values can be edited on the +tablet. (For information on how to protect the values of some question +types from being changed on the tablet, please refer to this +article). +Third, headquarters must include identifiers in the Id and ParentId +fields so that each record is unique and that the headquarters software +can link each *child *.tab file to its parent file. The Id, typically +a simple number, serves as a unique identifier for each record—that is, +a computer identifier that is distinct from the case identifiers used +for locating respondents. The ParentId links records at one level of +hierarchy with records from another level of hierarchy—for example, an +Id that links household members with the household to which they +belong.

After all .tab files have been filled in this way, zip all the .tab +files into one .zip file. Then, upload the .zip file using Upload Zip +File button.

As in the previous method of creating cases, the headquarter software +will then evaluate the uploaded files for validity and consistency with +the questionnaire template. If any errors are identified, correct the +files. Otherwise proceed to the next step and assign the batch of cases +to a supervisor.

Note that headquarters must either upload one set of .tab files per +supervisor (i.e., one .zip file containing one or more .tab files) or +one .tab file for all supervisors where each survey case has been +assigned a supervisor within the file.

 

Copy questionnaire templates (Administrators)

Cloning questionnaires on headquarters allows you to start a new survey +using the same questionnaire that has been imported to the HQ +previously.

To copy a questionnaire in headquarters, click on the questionnaire you +would like to copy and then select Clone questionnaire from the +menu.

If necessary, a new name can be given to the survey initiated from a +cloned questionnaire, such as LFS Quarter 1, LFS Quarter 2, and so on.
 

Delete questionnaires (Administrators)

This feature is only available to the administrator. **This should should only be used in special +circumstances with extreme caution because it will delete all data +collected with that questionnaire from the server. **

To delete a questionnaire, click on the questionnaire you would like to +delete and select *Delete questionnaire *from the menu.

Assignments 

When you first navigate to the assignments page under the Survey Setup +tab in Headquarters, you will see this screen:

This page displays a tabular view of all assignments that have been +created, the quantity of interviews within each assignment, and other +information about the assignment such as the person responsible, +identifying questions, update date, and create date.  

Quantity of interview cases 

The quantity of interviews for each assignment can be changed on this +page. This is especially useful for cases where Survey Solutions is +being used for a listing exercise and you wish to set or later change a +maximum number interviews for each assignments. To change the quantity, +click on the number in the quantity column and edit the field before +clicking on Save.

Reallocating and archiving assignments

Assignments can be archived or reallocated to another member of the data +collection team. To do this, select the check box corresponding to the +assignments, then select Assign or Archive. If reassigning, select +the new person responsible and confirm the change. 

 

Maps

To upload and make assignments, follow these simple steps:

  • First, log into Headquarters.
  • Then, upload maps to the server. Click on UPLOAD .ZIP FILE. +Select a zip archive containing one or more maps (.tpk)
  • Next, assign maps to users. Click on the Update user-to-map +linking. Upload a tab-delimited file that assigns one or more maps +to users. 
\ No newline at end of file diff --git a/headquarters/preloading/upgrading-assignments/index.html b/headquarters/preloading/upgrading-assignments/index.html new file mode 100644 index 00000000..c30ef6ab --- /dev/null +++ b/headquarters/preloading/upgrading-assignments/index.html @@ -0,0 +1,28 @@ +Upgrading assignments +

Upgrading assignments

December 12, 2018

Survey Solutions assignments play a critical role in the survey process because they regulate who is supposed to deliver the incoming data (interviews). Each assignment is referring to a particular questionnaire.

It is best to not modify the questionnaire during the survey. Some of the undesirable effects of this are:

  • the survey becomes split between several databases, each has to be downloaded separately from Survey Slutions and appended later using external tools;
  • the data may no longer be comparable (e.g. choice sets differ between questions);
  • the data quality may be heterogenious (differing between collected earlier and later periods);
  • interviewers may need retraining for the newer version of the questionnaire;
  • the process of upgrading the questionnaire needs to be followed by upgrading of assignments, which depends on which interviews have been already conducted and which have not.

Sometimes this is unavoidable, e.g. in case a gross mistake was made during the questionnaire development and further data collection based on unfixed version doesn’t make sense.

If a new questionnaire is imported, it doesn’t affect the existing survey work, since the assignments have been already issued based on the earlier version of the questionnaire.

In order for the new version of the questionnaire to be used, new assignments must be created referring to it, and older assignments, which are not fulfilled yet must be cancelled (archived). This may be a tedious process of determining, which part of the survey has been already conducted and which hasn’t been fulfilled yet. Survey Solutions tries to help the HQ user by providing a possibility to upgrade the assignments automatically during the import of the new version of the questionnaire template. Here is what it is doing:

  • inspects assignments one after another to determine whether the assignment is still outstanding (not all interviews have been delivered);
  • if the assignment has been fulfilled already fully, nothing happens to it;
  • if the assignment is outstanding Survey Solutions examines whether it can be upgraded to the new version of the questionnaire template;
  • if it can’t be upgraded, then nothing happens to it;
  • if it can be upgraded, then a new assignment for the number of outstanding interviews is created based on the new questionnaire template (and all the other fields untouched);
  • original assignment is automatically archived.

If the original assignment called for an unlimited number of interviews (size=-1) then the newly created one will also require the same regardless of how many have been already delivered.

Note that during the upgrading process some of the assignments may be upgraded while others not. This is dependent on what information is contained in the preloaded fields of the assignment. The number of assignments that have been successfully upgraded is reported at the end of the upgrading process.

How does Survey Solutions determine whether the assignment may be upgraded? +It looks at the preloading information (e.g. the identifying fields, and other preloaded data) specified in the assignment and checks whether it can fit all of it without any loss to the new questionnaire template. If yes, then the assignment will be considered upgradeable, otherwise not upgradeable.

Here are some examples of change between the versions that permit an upgrade of assignments:

  • a new question has been added;
  • the text of an existing question has been changed;
  • a new option has been added to a categorical question;
  • a new validation rule has been added; +etc.

Here are some examples of changes between the versions that will prevent an upgrade of assignments:

  • preloaded question has been deleted;
  • type of a preloaded question has changed to a more restrictive, e.g. from text to numeric;
  • option category has been removed, which has been mentioned in the preloaded data; +etc.

What will happen to the interviews that have been completed on the tablets based on old assignments received before the upgrade? +When the interviewer received the original assignment and conducted the interview, she usually knows nothing about the intent of the HQ to modify the questionnaire and works disconnected as usual. She may conduct one or more of such interviews as permitted by existing assignments, complete them and synchronize to the server. These interviews will be received by the HQ and displayed in the list of the interviews as completed. The interviews will carry the original assignment number, even if that assignment has since been upgraded and archived. In addition, since at the HQ a new assignment has been created from the original, the interviewer will receive it on the tablet, potentially leading to return to the same respondent.

Chances of this will be smaller if the interviewer is notified about the upgrade when it happens and synchronizes immediately to swap the assignment cards.

What will happen to the interviews that have been started on the tablets based on the old assignments, but not completed yet? +The started interview will remain on the tablet and available to be continued, completed and synchronized. At the same time there will be no assignment card (at the ‘create new’ page) corresponding to this interview. In particular this means that if the interviewer discards this interview, she will not be able to start it again.

What to do? +Regardless, it is best to not to update the questionnaire for ongoing surveys. Test your questionnaires extensively using the Tester and online Tester tools and correct all the design errors prior to going to the field. A series of pre-tests/pilots helps minimize the need for modifications of the questionnaire. See more recommendations here.

When the modification of the questionnaire is unavoidable, it’s best to inform the interviewers about it coming (plan for a particular date), ask them to finish (and synchronize!) interviews that they have started already and not to start new ones. Then update the questionnaire and assignments, then synchronize all the interviewers immediately afterwards.

\ No newline at end of file diff --git a/headquarters/preloading/uploading-many-assignments-at-a-time/images/774325.png b/headquarters/preloading/uploading-many-assignments-at-a-time/images/774325.png new file mode 100644 index 00000000..16bab7a7 Binary files /dev/null and b/headquarters/preloading/uploading-many-assignments-at-a-time/images/774325.png differ diff --git a/headquarters/preloading/uploading-many-assignments-at-a-time/images/774325_hu366044944194543450.png b/headquarters/preloading/uploading-many-assignments-at-a-time/images/774325_hu366044944194543450.png new file mode 100644 index 00000000..905fc967 Binary files /dev/null and b/headquarters/preloading/uploading-many-assignments-at-a-time/images/774325_hu366044944194543450.png differ diff --git a/headquarters/preloading/uploading-many-assignments-at-a-time/images/795371.png b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795371.png new file mode 100644 index 00000000..1cbb77af Binary files /dev/null and b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795371.png differ diff --git a/headquarters/preloading/uploading-many-assignments-at-a-time/images/795371_hu18379586251706515565.png b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795371_hu18379586251706515565.png new file mode 100644 index 00000000..e46b52e8 Binary files /dev/null and b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795371_hu18379586251706515565.png differ diff --git a/headquarters/preloading/uploading-many-assignments-at-a-time/images/795375.png b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795375.png new file mode 100644 index 00000000..029766de Binary files /dev/null and b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795375.png differ diff --git a/headquarters/preloading/uploading-many-assignments-at-a-time/images/795375_hu740493703792970486.png b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795375_hu740493703792970486.png new file mode 100644 index 00000000..1af7f1bf Binary files /dev/null and b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795375_hu740493703792970486.png differ diff --git a/headquarters/preloading/uploading-many-assignments-at-a-time/images/795400.png b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795400.png new file mode 100644 index 00000000..cba19872 Binary files /dev/null and b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795400.png differ diff --git a/headquarters/preloading/uploading-many-assignments-at-a-time/images/795400_hu7441163951783839712.png b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795400_hu7441163951783839712.png new file mode 100644 index 00000000..42ddcc81 Binary files /dev/null and b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795400_hu7441163951783839712.png differ diff --git a/headquarters/preloading/uploading-many-assignments-at-a-time/images/795407.png b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795407.png new file mode 100644 index 00000000..6f5640a6 Binary files /dev/null and b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795407.png differ diff --git a/headquarters/preloading/uploading-many-assignments-at-a-time/images/795407_hu7298862678430357526.png b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795407_hu7298862678430357526.png new file mode 100644 index 00000000..c8695a81 Binary files /dev/null and b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795407_hu7298862678430357526.png differ diff --git a/headquarters/preloading/uploading-many-assignments-at-a-time/images/795408.png b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795408.png new file mode 100644 index 00000000..fa68ca5b Binary files /dev/null and b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795408.png differ diff --git a/headquarters/preloading/uploading-many-assignments-at-a-time/images/795408_hu9900201016678387454.png b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795408_hu9900201016678387454.png new file mode 100644 index 00000000..2d04ea5d Binary files /dev/null and b/headquarters/preloading/uploading-many-assignments-at-a-time/images/795408_hu9900201016678387454.png differ diff --git a/headquarters/preloading/uploading-many-assignments-at-a-time/index.html b/headquarters/preloading/uploading-many-assignments-at-a-time/index.html new file mode 100644 index 00000000..b611ff4f --- /dev/null +++ b/headquarters/preloading/uploading-many-assignments-at-a-time/index.html @@ -0,0 +1,66 @@ +Uploading Many Assignments at a time +

Uploading Many Assignments at a time

June 27, 2016

For many surveys, creating assignments one by one will be a tedious and +time intensive task. To help speed up your work, Survey Solutions allows +you to batch upload many assignments at once using a tab delimited. +Follow the steps below to perform a batch upload of assignments:

Step 1

Create a tab-delimited file with the identifying information for your +assignments
 
Before performing an interview, data collection teams must know the name +(e.g., name and surname of the head of household) and/or location (e.g., +region, county, district, neighborhood) of who they should be +interviewing. To facilitate locating the respondents, this identifying +information will appear on the dashboard of enumerator app for each +interview for which they are responsible.

When designing the questionnaire template, each of the identifying +variables that you want to appear on the dashboard should be designated +as Identifying. To do this, select Identifying as the scope +of the question. 

After creating the questionnaire, you must define the sample for +fieldwork. Create a tab-delimited (.tab) file where every column +corresponds to a variable ​​designated as Identifying and every +row—to an assignment. You can leave some ***Identifying ***information +blank for any assignment. Any identifying information left blank can be +filled out by the interviewers.

 

Step 2

Specify the person responsible for the assignment and the quantity of +interviews per assignment
Add a column titled _responsible and populate the fields with the +appropriate supervisor or interview usernames to avoid having to create +and upload a tab-delimited file for each interviewer or supervisor.
Add a column titled _quantity and populate the fields with the +maximum number of interviews you want per assignment. To specify an +unlimited quantity, put ‘-1’ in the column. If you do leave the field +blank or if there is no _quantity column in your tab delimited file, +then the quantity of interview will automatically be set to ‘1’ per +assignment.

 

Step 3

Upload the sample to your server
 
The first step is to click on the Survey Setup tab and select +Questionnaires. Then, click on the questionnaire template for +which you would like to upload the sample. Once the list of options is +displayed select Upload assignments.

Afterwards, click the Upload .tab File button to select the .tab +file that defines the sample. If you want a template of the identifying +variables and what the .tab data file should look like for the +questionnaire template, then click on Download .tab Template for this +Questionnaire.

 

Step 4

After the server has verified the data in .tab file has no errors, you +will see a screen that says “Verification Complete”. If you have not +added a _responsible column to your tab-delimited file, you will need +to choose the supervisor responsible for these interviews. After +selecting the responsible supervisor or interviewer, click on the +Create button. You will need to prepare a separate .tab file for +each supervisor or interviewer if you do not include a _responsible +column in the .tab file.

If there are errors in your .tab file, then it will list what the errors +are. Once you have fixed these errors, you can try to upload the .tab +file again. Error messages are self-explanatory for most cases, but when +it is not obvious you can refer to the preloading troubleshooting +article explaining +the nature of these errors.

\ No newline at end of file diff --git a/headquarters/protecting-pre-loaded-answers/index.html b/headquarters/protecting-pre-loaded-answers/index.html new file mode 100644 index 00000000..935a2627 --- /dev/null +++ b/headquarters/protecting-pre-loaded-answers/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/protecting-pre-loaded-answers/ + \ No newline at end of file diff --git a/headquarters/questionnaire-data---export-file-anatomy/index.html b/headquarters/questionnaire-data---export-file-anatomy/index.html new file mode 100644 index 00000000..2a092b24 --- /dev/null +++ b/headquarters/questionnaire-data---export-file-anatomy/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/questionnaire-data---export-file-anatomy/ + \ No newline at end of file diff --git a/headquarters/report-survey-statistics/index.html b/headquarters/report-survey-statistics/index.html new file mode 100644 index 00000000..752ad1b6 --- /dev/null +++ b/headquarters/report-survey-statistics/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/report-survey-statistics/ + \ No newline at end of file diff --git a/headquarters/reporting/detailed-action-log/images/882200.png b/headquarters/reporting/detailed-action-log/images/882200.png new file mode 100644 index 00000000..9adcca54 Binary files /dev/null and b/headquarters/reporting/detailed-action-log/images/882200.png differ diff --git a/headquarters/reporting/detailed-action-log/index.html b/headquarters/reporting/detailed-action-log/index.html new file mode 100644 index 00000000..322d9125 --- /dev/null +++ b/headquarters/reporting/detailed-action-log/index.html @@ -0,0 +1,68 @@ +Detailed action log +

Detailed action log

June 8, 2018

The detailed action log allows the headquarters users view important +actions undertaken by the interviewers on the tablets, such as +application start and login activities, starting or discarding an +interview, synchronization attempts, and other actions undertaken in the +last 7 days. The actions log is updated with any synchronization of the +tablet. (But if the tablet does not synchronize, there is no way for the +HQ personnel to know what actions were undertaken, since this +information won’t be sent).

The report is accessible from the interviewer profile, following the +link “Show actions log”. Here is an example of the actions log +reflecting the work of the interviewer AP1 on Friday, June 8, 2018:

We can see that the interviewer was working on the interview at the +beginning of the day, then had a series of failed synchronization +attempts, and then after a pause of about 10 minutes, a successful +synchronization attempt.

The log may be downloaded in the form of a tab-delimited file with two +columns: Timestamp and Action. The timestamps in the report +on the screen and in the downloadable version are reported using the +tablet’s clock in the tablet’s current time zone. Here is an example:

Timestamp Action
+06/08/2018 11:05:46 Sync completed: 2 interview(s) uploaded
+06/08/2018 11:05:04 Sync started
+06/08/2018 11:04:53 User ap1 logged in application
+06/08/2018 11:04:38 Application opened
+06/08/2018 10:55:00 Sync failed
+06/08/2018 10:54:58 Sync started
+06/08/2018 10:48:50 Sync failed
+06/08/2018 10:48:48 Sync started
+06/08/2018 10:48:43 User ap1 logged in application
+06/08/2018 10:48:28 Application opened
+06/08/2018 10:48:05 Sync failed
+06/08/2018 10:48:05 Sync started
+06/08/2018 10:47:41 Sync failed
+06/08/2018 10:47:40 Sync started
+06/08/2018 10:47:33 Sync failed
+06/08/2018 10:47:33 Sync started
+06/08/2018 10:47:30 Sync failed
+06/08/2018 10:47:30 Sync started
+06/08/2018 10:47:17 Sync failed
+06/08/2018 10:47:15 Sync started
+06/08/2018 10:46:35 Sync failed
+06/08/2018 10:46:15 Sync started
+06/08/2018 10:44:34 Interview 60-10-38-48 closed
+06/08/2018 10:44:34 Interview 60-10-38-48 completed
+06/08/2018 10:05:07 Interview 60-10-38-48 opened
+06/08/2018 10:03:41 User ap1 logged in application
+06/08/2018 10:03:22 Application opened
+

The HQ-users may utilize this report as an additional source of +information to confirm or reject interviewers’ claims. For example, the +above shown report corroborates the claim of the interviewer that he was +attempting to synchronize the collected data, but was experiencing +communication difficulties.

Answers to individual questions in the interviews are not recorded in +this log, but may be found in the paradata file.

\ No newline at end of file diff --git a/headquarters/reporting/downloadable-report-on-interviewers/index.html b/headquarters/reporting/downloadable-report-on-interviewers/index.html new file mode 100644 index 00000000..c888cf31 --- /dev/null +++ b/headquarters/reporting/downloadable-report-on-interviewers/index.html @@ -0,0 +1,36 @@ +Downloadable Report on Interviewers +

Downloadable Report on Interviewers

December 6, 2017

This report is accessible in CSV, TSV, or Excel formats from the list of +the interviewers screen and contains important information about the +equipment being used by the interviewer and various statistics about the +interviewer accounts, equipment status, etc.

Thematically the indicators reported here are placed in the following +groups:

Indicator namingGroup
i_*indicators related to the interviewer account
these indicators represent static or accumulated information about the interviewer account
t_*indicators related to the tablet device;
these characteristics, like RAM size or manufacturer are not expected to change throughout the lifetime of the device.
s_*indicators related to the current status;
these characteristics, like battery charge, or screen orientation may change throughout the lifetime of the device.
z_*indicators related to the last synchronization session;
these indicators characterize the last synchronization session.
d_*indicators related to dashboard of the interviewer
these indicators characterize the state of the interviewer's dashboard.

Below is the full list of the indicators exported in this report and +their interpretation

IndicatorInterpretationWhat to expect (example)
i_nameLogin name of the interviewerjohnsmith
i_idUnique ID of the interviewer's accountd7a7324a-c4f9-472d-8f16-be3a5c38f3a1
i_supervisorNameLogin name of the supervisor, which supervises this interviewermaryjackson
i_fullName(optional) full name of the interviewer (if specified)John SMITH
i_email(optional) contact email for interviewer (if specified)john@nowhere.org
i_phone(optional) contact phone number of the interviewer (if specified)555-4321
i_lastLoginDateDate of last login to the server. Missing if never logged in.
(UTC, in the format YYYY-MM-DDThh:mm:ss)
2022-04-15T13:39:38
s_appVersionVersion of the Survey Solutions Interviewer App installed on the tablet of this interviewer5.25.10 (build 12345) with Maps
s_updateAvailableFlag whether an update is available for the Interviewer AppTrue, False
s_linkedDateDate when the tablet was linked or last re-linked
Note: date only, no time.
11/16/2017
i_nSyncSuccTotal number of successful synchronization sessions10
i_nSyncFailTotal number of failed synchronization sessions2
n_avgSyncSpeedAverage synchronization speed, in bytes per second4000
t_lastCommDateLast communication date
(UTC, in the format YYYY-MM-DDThh:mm:ss).
2022-04-15T13:39:38
t_idTablet device IDb48cc07217168f0c
t_serialNumberTablet device serial number*.1374c8ba06c120a8
t_deviceTypeType of the device (tablet or phone)Tablet, Phone
t_manufacturerDevice manufacturer HP, samsung, asus, ...
t_modelDevice modelSM-T350, P01M, ...
t_buildNumberDevice build numberMMB99M.T350XXU1BSS1
s_languageCurrent interface language of the device (written in that language)English, Русский
s_androidVersionVersion of the Android OS currently installed on the linked device.5.0 Lollipop(21)
s_updatedDateDate of the last update of the installed Survey Solutions App
(UTC, in the format YYYY-MM-DDThh:mm:ss)
2022-04-15T13:39:38
s_lastKnownLocationLatLatitude of the last known location of the tablet**43
s_lastKnownLocationLonLongitude of the last known location of the tablet**-29
s_orientationScreen orientation of the devicePortrait, Landscape
s_batteryStatusBattery charge, percent66
s_powerSourcePower sourceAc, Battery, Usb, Charge,
s_powerSaveModeFlag whether the device is in the power save modeTrue, False
s_storageFreeFree storage space on device, in bytes7863558144
t_storageTotalTotal storage space on device, in bytes11907813376
s_RAMFreeFree RAM space on device, in bytes499838976
t_RAMTotalTotal RAM space on device, in bytes1498583040
s_databaseSizeSize of the Survey Solutions database locally stored on the tablet, in bytes862725
z_serverClockAtBeginLastSyncServer clock at the beginning of the last synchronization session
(UTC, in the format YYYY-MM-DDThh:mm:ss)
2022-04-15T13:39:38
z_tabletClockAtBeginLastSyncTablet clock at the beginning of the last synchronization session
(UTC, in the format YYYY-MM-DDThh:mm:ss)
2022-04-15T13:39:38
z_connectionTypeType of connection used during the last synchronization session3G, GPRS, WIFI, LAN***
z_connectionSubTypeSub type of the connection used during the last synchronization session1
z_questReceivedOnTabletNumber of questionnaires received by the tablet during the last synchronization session.1
z_intervReceivedOnTabletNumber of interviews received by the tablet during the last synchronization session2
z_intervReceivedOnServerNumber of interviews received by the server during the last synchronization session5
d_numberAssignmentsTotal number of assignments on the interviewer's dashboard as present during the last synchronization.12
d_numberNewInterviewsTotal number of new interviews on device as present during the last synchronization.3
d_numberRejectedInterviewsTotal number of the rejected interviews on device as present during the last synchronization.0

Notes

* each manufacturer may opt for a different numbering scheme, or opt for not +assigning unique serial numbers; do not rely on this number to uniquely +identify a particular physical device.

** coordinates represent only the last known location of the tablet, +which may differ from the current location of the tablet;

*** exact spelling of categories may vary by models, for example: WiFi +or WIFI.

\ No newline at end of file diff --git a/headquarters/reporting/index.html b/headquarters/reporting/index.html new file mode 100644 index 00000000..197f0f73 --- /dev/null +++ b/headquarters/reporting/index.html @@ -0,0 +1,46 @@ +Reports +

Reports

Report: Survey Statistics

Survey Statistics report is accessible to supervisors and headquarter +users, observers, and administrators.

The report presents basic statistics calculated on survey data currently +on the server and eliminates (in some cases) the need to export the data +for calculation of these statistics.

The report is always built within a single survey and is built for one +of the questions in that survey.

The report may be presented in one of the two modes: tabulation or +summary statistics. Summary statistics mode is always applied for the +numeric questions, tabulation mode is always applied for categorical +(single-select or multi-select questions).

January 15, 2020

Detailed action log

The detailed action log allows the headquarters users view important +actions undertaken by the interviewers on the tablets, such as +application start and login activities, starting or discarding an +interview, synchronization attempts, and other actions undertaken in the +last 7 days. The actions log is updated with any synchronization of the +tablet. (But if the tablet does not synchronize, there is no way for the +HQ personnel to know what actions were undertaken, since this +information won’t be sent).

June 8, 2018

Downloadable Report on Interviewers

This report is accessible in CSV, TSV, or Excel formats from the list of +the interviewers screen and contains important information about the +equipment being used by the interviewer and various statistics about the +interviewer accounts, equipment status, etc.

Thematically the indicators reported here are placed in the following +groups:

Indicator namingGroup
i_*indicators related to the interviewer account
these indicators represent static or accumulated information about the interviewer account
t_*indicators related to the tablet device;
these characteristics, like RAM size or manufacturer are not expected to change throughout the lifetime of the device.
s_*indicators related to the current status;
these characteristics, like battery charge, or screen orientation may change throughout the lifetime of the device.
z_*indicators related to the last synchronization session;
these indicators characterize the last synchronization session.
d_*indicators related to dashboard of the interviewer
these indicators characterize the state of the interviewer's dashboard.

Below is the full list of the indicators exported in this report and +their interpretation

December 6, 2017

Reports Tab: Track the Overall Progress of the Survey

Reports provide headquarters with a summary of the status of +fieldwork—of progress by questionnaire, by +team, by status duration, by +devices/interviewersby geography, by +quantityby speed, or on detailed survey +statistics

All the reports under this tab can be exported in XLSX, TAB, and CSV +formats. To export, navigate to the bottom right of the report, and +click on the desired download format.

June 29, 2016
\ No newline at end of file diff --git a/headquarters/reporting/page/1/index.html b/headquarters/reporting/page/1/index.html new file mode 100644 index 00000000..fbc74cbd --- /dev/null +++ b/headquarters/reporting/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/ + \ No newline at end of file diff --git a/headquarters/reporting/report-survey-statistics/images/886358.png b/headquarters/reporting/report-survey-statistics/images/886358.png new file mode 100644 index 00000000..dc9e41df Binary files /dev/null and b/headquarters/reporting/report-survey-statistics/images/886358.png differ diff --git a/headquarters/reporting/report-survey-statistics/images/886359.png b/headquarters/reporting/report-survey-statistics/images/886359.png new file mode 100644 index 00000000..617cfbd6 Binary files /dev/null and b/headquarters/reporting/report-survey-statistics/images/886359.png differ diff --git a/headquarters/reporting/report-survey-statistics/index.html b/headquarters/reporting/report-survey-statistics/index.html new file mode 100644 index 00000000..780f21e1 --- /dev/null +++ b/headquarters/reporting/report-survey-statistics/index.html @@ -0,0 +1,48 @@ +Report: Survey Statistics +

Report: Survey Statistics

January 15, 2020

Survey Statistics report is accessible to supervisors and headquarter +users, observers, and administrators.

The report presents basic statistics calculated on survey data currently +on the server and eliminates (in some cases) the need to export the data +for calculation of these statistics.

The report is always built within a single survey and is built for one +of the questions in that survey.

The report may be presented in one of the two modes: tabulation or +summary statistics. Summary statistics mode is always applied for the +numeric questions, tabulation mode is always applied for categorical +(single-select or multi-select questions).

For questions of numeric type

The report presents the following descriptive statistics in the columns: +count, average, sum, minimum, maximum, and percentiles: 5th, 50th and +95th. The rows of the report correspond to teams or individual +interviewers (selectable). The values may be restricted by specifying +the minimum and maximum. Specifying a minimum of zero is commonly used +to exclude the special values in numeric questions, often denoted with +-999, -997, or similar values.

For questions of categorical type

The report presents a frequency tabulation of the selected question by +its categories in the columns and teams or individual interviewers +(selectable) in the rows. A second categorical question may be specified +as a condition question. Then the report may be filtered by categories +of this question. For example, the tabulation of occupation may be +reported separately for male and for female workers. If a two-way +tabulation is of interest, it can be produced by checking the “pivot +table” checkbox. In this case the second question selected for +conditioning will be used as a second dimension of the two-way +tabulation. The selection of teams or interviewers is ignored in this +case. Totals by rows and columns are included.

The report can be downloaded in XLSX, CSV, or TAB delimited format.

NB: While technically the following questions are of categorical type, they +are not going to be available for selection in the survey statistics +report (since this can potentially result in huge tables):

  • linked categorical questions;
  • filtered combobox questions;
  • cascading categorical questions.
\ No newline at end of file diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773980.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773980.png new file mode 100644 index 00000000..6075b254 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773980.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773980_hu11871772032130287800.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773980_hu11871772032130287800.png new file mode 100644 index 00000000..5438412c Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773980_hu11871772032130287800.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773982.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773982.png new file mode 100644 index 00000000..4c06d0da Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773982.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773982_hu10575144407782513768.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773982_hu10575144407782513768.png new file mode 100644 index 00000000..48fe3bde Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773982_hu10575144407782513768.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773983.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773983.png new file mode 100644 index 00000000..8d534e4d Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773983.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773983_hu12722373469715533134.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773983_hu12722373469715533134.png new file mode 100644 index 00000000..debb867f Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773983_hu12722373469715533134.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773986.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773986.png new file mode 100644 index 00000000..fac81a1f Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773986.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773986_hu15313032479863068171.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773986_hu15313032479863068171.png new file mode 100644 index 00000000..e57ebd64 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773986_hu15313032479863068171.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773987.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773987.png new file mode 100644 index 00000000..39919410 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773987.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773987_hu12530876034563315629.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773987_hu12530876034563315629.png new file mode 100644 index 00000000..f1fd3eca Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773987_hu12530876034563315629.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773988.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773988.png new file mode 100644 index 00000000..4fb25bd4 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773988.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773988_hu14644507392192301793.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773988_hu14644507392192301793.png new file mode 100644 index 00000000..65a7a30f Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773988_hu14644507392192301793.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773990.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773990.png new file mode 100644 index 00000000..31d5f6df Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773990.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773990_hu8509899469421542731.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773990_hu8509899469421542731.png new file mode 100644 index 00000000..37792554 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773990_hu8509899469421542731.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773993.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773993.png new file mode 100644 index 00000000..056338de Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773993.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773993_hu7118159759922580748.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773993_hu7118159759922580748.png new file mode 100644 index 00000000..577b67dc Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773993_hu7118159759922580748.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773994.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773994.png new file mode 100644 index 00000000..a4499f22 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773994.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773994_hu9137629432316850413.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773994_hu9137629432316850413.png new file mode 100644 index 00000000..ec54eb41 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773994_hu9137629432316850413.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773995.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773995.png new file mode 100644 index 00000000..1c621722 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773995.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773995_hu10048125198348902453.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773995_hu10048125198348902453.png new file mode 100644 index 00000000..5c64cd38 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773995_hu10048125198348902453.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773997.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773997.png new file mode 100644 index 00000000..19205f23 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773997.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773997_hu16800968384692000515.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773997_hu16800968384692000515.png new file mode 100644 index 00000000..2bbb7ef4 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/773997_hu16800968384692000515.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774000.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774000.png new file mode 100644 index 00000000..1a59d2df Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774000.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774000_hu2318977954682704169.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774000_hu2318977954682704169.png new file mode 100644 index 00000000..73be8def Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774000_hu2318977954682704169.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774006.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774006.png new file mode 100644 index 00000000..0a408c97 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774006.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774006_hu12863970079257840157.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774006_hu12863970079257840157.png new file mode 100644 index 00000000..5cbd83f2 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774006_hu12863970079257840157.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774007.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774007.png new file mode 100644 index 00000000..e1da3c9d Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774007.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774007_hu7466596767706857763.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774007_hu7466596767706857763.png new file mode 100644 index 00000000..2b735734 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774007_hu7466596767706857763.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774008.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774008.png new file mode 100644 index 00000000..9c8daa9b Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774008.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774008_hu5980645477649645206.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774008_hu5980645477649645206.png new file mode 100644 index 00000000..485b1ec8 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774008_hu5980645477649645206.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774009.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774009.png new file mode 100644 index 00000000..f4fe35ea Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774009.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774009_hu11646247227257665800.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774009_hu11646247227257665800.png new file mode 100644 index 00000000..80eb7af2 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774009_hu11646247227257665800.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774010.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774010.png new file mode 100644 index 00000000..aa86520d Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774010.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774010_hu1116763257945414303.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774010_hu1116763257945414303.png new file mode 100644 index 00000000..a6cf462a Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774010_hu1116763257945414303.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774012.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774012.png new file mode 100644 index 00000000..315ff604 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774012.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774012_hu10727065156327649211.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774012_hu10727065156327649211.png new file mode 100644 index 00000000..5d3afa56 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/774012_hu10727065156327649211.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/813576.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/813576.png new file mode 100644 index 00000000..47585efb Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/813576.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/813576_hu353153330444512693.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/813576_hu353153330444512693.png new file mode 100644 index 00000000..c48789f7 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/813576_hu353153330444512693.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/818587.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/818587.png new file mode 100644 index 00000000..3c9dd494 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/818587.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/818587_hu4289025201623838100.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/818587_hu4289025201623838100.png new file mode 100644 index 00000000..5b5bcba6 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/818587_hu4289025201623838100.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/818592.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/818592.png new file mode 100644 index 00000000..915baa78 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/818592.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/818592_hu2134117320841024179.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/818592_hu2134117320841024179.png new file mode 100644 index 00000000..4921a4c0 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/818592_hu2134117320841024179.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/881381.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/881381.png new file mode 100644 index 00000000..872c3ceb Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/881381.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/881381_hu10962550478860362573.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/881381_hu10962550478860362573.png new file mode 100644 index 00000000..3f6784ac Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/881381_hu10962550478860362573.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/886333.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/886333.png new file mode 100644 index 00000000..eb066e21 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/886333.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/886333_hu1152418518241652487.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/886333_hu1152418518241652487.png new file mode 100644 index 00000000..3f903c0a Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/886333_hu1152418518241652487.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/886343.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/886343.png new file mode 100644 index 00000000..71c6c11e Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/886343.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/886343_hu6773982075327720872.png b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/886343_hu6773982075327720872.png new file mode 100644 index 00000000..72a1af45 Binary files /dev/null and b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/images/886343_hu6773982075327720872.png differ diff --git a/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/index.html b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/index.html new file mode 100644 index 00000000..1bbdc77d --- /dev/null +++ b/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/index.html @@ -0,0 +1,119 @@ +Reports Tab: Track the Overall Progress of the Survey +

Reports Tab: Track the Overall Progress of the Survey

June 29, 2016

Reports provide headquarters with a summary of the status of +fieldwork—of progress by questionnaire, by +team, by status duration, by +devices/interviewersby geography, by +quantityby speed, or on detailed survey +statistics

All the reports under this tab can be exported in XLSX, TAB, and CSV +formats. To export, navigate to the bottom right of the report, and +click on the desired download format.

By questionnaire template

The Surveys and Statuses report summarizes the progress of each survey +that headquarters is overseeing (i.e., data collection with a given +template). The anatomy of the report is as follows. The column labeled +“Survey Name” contains the name of each survey. The subsequent columns +correspond to each possible status of a survey case in the Survey +Solutions survey workflow. (For a detailed explanation of the workflow +and the statuses, see the Survey +Workflow article.) Each cell in the +report captures the number of cases that are in a given state for a +given survey (e.g., number of “Complete” assignments for “Household +Roster”).

By default, this report summarizes the status of survey cases over all +supervisors—it reports the total sum of survey cases in each status, +summing over all supervisors. This report can be filtered to provide a +summary or focus on one supervisor at a time.

To do this, click on the drop-down menu below Supervisors filter and +select a name.

Doing so will yield a summary of progress for only the selected +supervisor. In other words, filtering allows headquarters to focus on +the progress of an individual supervisor.

 

By team

The Team and Statuses report provides a status report for each +supervisor. The first column of the report lists all supervisors under +headquarters’ supervision. The subsequent columns correspond to each +possible status of a survey case in the Survey Solutions workflow. Each +cell captures the number of cases in a particular status for a specific +supervisor.
By default, the Teams and Statuses report provides a global summary of +progress at the supervisor level. Headquarters can filter the report in +order to obtain a more granular view of progress by questionnaire +template. To do this, click on the drop-down menu located below +Questionnaire. Then, select a particular questionnaire to see each +team’s progress for that questionnaire alone.

Doing so will generate a summary of progress for the chosen template.

By status duration

The Status Duration report carefully flags lack of progress. While other +reports count interview cases, this report includes both assignments and +interview cases. By seeing how many days interviews stay in the same +status, survey managers can see whether survey operations are moving +forward, and identify any bottlenecks (e.g., slow approval by +supervisors, slower reactions by HQ, etc.). By clicking on any cell in +the report, managers can drill down to the details of which +assignments/interviewers and/or field staff are behind interviews +stagnating in the same status. 

Headquarters can filter the report in order to obtain a more granular +view of progress by questionnaire. To do this, click on the drop-down +menu located below Questionnaire. Then, select a particular +questionnaire to see the report for that template alone.

By devices/interviewers

The Devices/Interviewers report compiles potential problems that can +occur during data collect, such as never been able to synchronize with +the server (Never Connected), using an old version of Interviewer +(Old Version), etc.* *This information can make troubleshooting +easier for survey managers. 

By clicking on any cell in the report, Headquarters can find the +associated interviewer names/accounts. 

+By geography

The Map Report shows the geographic location of all completed +questionnaires on Google Maps.

To use this report:

  1. Select Maps Report from the Reports menu. This will open the +interface for creating this type of report
  2. Select the questionnaire you want to map from the Questionnaire +drop-down menu.
  3. Select the geo-location variable from the questionnaire that you +wish to plot on the map. This will plot completed questionnaires on +a map, showing their geographical dispersion and providing some +sense of where survey teams have and have not reached.

By quantity

The Quantity report tab provides the following reports for each +questionnaire template:

  • Number of completed interviews: Provides the number of completed +interviews for each data collection team. Interviews that have been +rejected and then completed are counted as an additional completed +interview.

  • Number of interview transactions by HQ: Provides the number of +headquarters approvals and rejections for each data collection +team.

  • Number of interviews approved by HQ: Provides the number of +headquarters approved interviews for each data collection team.

  • Number of interview transactions by supervisor: Provides the +number of supervisor approvals and rejections on interviews +collected by each data collection team.


     

 

Creating a quantity report

+To use these report, first select Quantity from +the Reports menu. Then, select the Type of report and the +questionnaire template.
Select a start date for the report (From).  Next, define the time +interval– day, week, or month (Period), and the number of time +intervals that you would like to display in the report (Period count). +The maximum period count that can be defined is 9.

By default, the Quantity report delivers reports at the supervisor +level. However, you can obtain a more granular view across one data +collection team by selecting a supervisor from the Team column.

 

 

By speed

The Speed report tab provides the following reports for each +questionnaire template:

  • Average interview duration: Provides the average time difference +between the first recorded answer on a tablet and when the complete +button is selected.

     

  • Average supervisor processing time: Provides the average time +difference between the moment the complete button is pressed and the +supervisor’s approval or rejection of that questionnaire.

  • Average HQ processing time: Provides the average time difference +between a supervisor approval of a questionnaire and a HQ approval +or rejection of that questionnaire.

  • Average case assignment duration: Provides the average time +difference between survey case assignment to an interviewer and the +moment an interviewer sets the survey case as complete on a +tablet.

  • Average overall case processing time: Provides the average time +difference between survey case assignment and survey case approval +by HQ.

 

Creating a speed report


To use these reports, first select Speed from the Reports menu. Then, +select the Type of report and the questionnaire template. Select a +start date for the report (From). Next, define the time interval– +day, week, or month (Period), and the number of time intervals that +you would like to display in the report (Period count). The maximum +period count that can be defined is 9.

Similar to the Quantity reports, Speed reports by default provide the +report at the supervisor level. However, you can obtain a more granular +view across one data collection team by selecting a supervisor from the +Team column.

 

Survey Statistics 

The Survey Statistics report allows the creation of tabulation reports +(frequency tabulation of categorical variables) with conditioning on +values of other variables. Use the filters on the left-hand side to +define the questionnaire, question, view option (by team members or +team), and the condition question (if applicable). 

For example, you can tabulate the interview result code by team members +to check whether a particular interviewer has an abnormally large number +of households not found.

\ No newline at end of file diff --git a/headquarters/reports-tab-track-the-overall-progress-of-the-survey/index.html b/headquarters/reports-tab-track-the-overall-progress-of-the-survey/index.html new file mode 100644 index 00000000..1817aa3f --- /dev/null +++ b/headquarters/reports-tab-track-the-overall-progress-of-the-survey/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/reporting/reports-tab-track-the-overall-progress-of-the-survey/ + \ No newline at end of file diff --git a/headquarters/rosters-export-file-anatomy/index.html b/headquarters/rosters-export-file-anatomy/index.html new file mode 100644 index 00000000..6234fd5a --- /dev/null +++ b/headquarters/rosters-export-file-anatomy/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/rosters-export-file-anatomy/ + \ No newline at end of file diff --git a/headquarters/standalone-installation/index.html b/headquarters/standalone-installation/index.html new file mode 100644 index 00000000..cb7b51a1 --- /dev/null +++ b/headquarters/standalone-installation/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/config/server-installation/ + \ No newline at end of file diff --git a/headquarters/stata-export-file-format/index.html b/headquarters/stata-export-file-format/index.html new file mode 100644 index 00000000..f6aac8ef --- /dev/null +++ b/headquarters/stata-export-file-format/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/export/stata-export-file-format/ + \ No newline at end of file diff --git a/headquarters/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/index.html b/headquarters/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/index.html new file mode 100644 index 00000000..f8931b9e --- /dev/null +++ b/headquarters/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/preloading/survey-setup-tab-import-copy-and-delete-questionnaire-templates-and-create-assignments/ + \ No newline at end of file diff --git a/headquarters/survey-solutions-api/index.html b/headquarters/survey-solutions-api/index.html new file mode 100644 index 00000000..bf2f54b0 --- /dev/null +++ b/headquarters/survey-solutions-api/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/api/survey-solutions-api/ + \ No newline at end of file diff --git a/headquarters/survey-solutions-server-administrator/index.html b/headquarters/survey-solutions-server-administrator/index.html new file mode 100644 index 00000000..4e5fb324 --- /dev/null +++ b/headquarters/survey-solutions-server-administrator/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/survey-solutions-server-administrator/ + \ No newline at end of file diff --git a/headquarters/survey-workflow/index.html b/headquarters/survey-workflow/index.html new file mode 100644 index 00000000..d72e9009 --- /dev/null +++ b/headquarters/survey-workflow/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/interviews/survey-workflow/ + \ No newline at end of file diff --git a/headquarters/svymanage/audio-audit/index.html b/headquarters/svymanage/audio-audit/index.html new file mode 100644 index 00000000..9a9824f8 --- /dev/null +++ b/headquarters/svymanage/audio-audit/index.html @@ -0,0 +1,39 @@ +Audio audit +

Audio audit

March 19, 2023

Description

Audio auditing enables audio recording of the interviewing process for quality control. +Audio auditing automatically records the full interview for selected assignments, stores +the recording in encrypted audio files, and synchronizes these audio files along with the +linked interview files. It is not possible to record only parts of an interview, but it +is possible to select which assignments will be recorded.

How to enable/disable audio auditing

Before creating an assignment

  • In the main menu of the Headquarters navigate to Survey Setup > Questionnaires;
  • Click on a questionnaire;
  • In the context menu that appears, select Details;
  • Click in the box next to Record audio to enable audio auditing.

After this point, all created assignments will have audio audit enabled.

To disable audio auditing, follow the same process to deselect the checkbox and switch off audio +auditing for all future assignments. Any assignments that have been created until that moment will retain their audio audit recording setting.

For assignments that are being created with a batch upload, the corresponding attribute is _record_audio:

  • set the value to: 1 to indicate that the audio audit recording should be +performed for this particular assignment, or
  • set it to 0 or leave blank (default) to indicate that no audio audit should +be performed for that assignment.

After creating an assignment

  • In the main menu of the Headquarters navigate to Survey Setup > Assignments;
  • Click on the value in the AUDIO RECORDING column
  • In the dialog that appears, check (or uncheck) the checkbox Enable audio recording +to enable (disable) audio auditing for selected assignment.

This action affects only the selected assignment (even if multiple assignments are selected in the assignments list).

How audio auditing is enforced on the tablet

Just like with GPS or picture questions, Android prompts interviewers to allow the Interviewer +App to use the microphone.

Naturally, survey managers could be concerned that intelligent interviewers would either +deny Android the needed permissions, or accept the permissions but then subsequently disable +them, thereby avoiding audio auditing of their interviews.

To prevent this behavior, interviewers will not be able to start interviews that require audio +audit without enabling required Android permissions.

Similarly, survey managers may be concerned that this request for permissions, made for the +first interview that requires audio audit, could tell interviewers that their interview will +be recorded, thereby decreasing the utility of secret audio audits.

To prevent this, survey managers could explain that these permissions are simply needed by +Interviewer application which, after all, has audio questions that do require the type of +permissions Android would be requesting.

Important considerations

Audio recordings will increase the amount of data that needs to be synchronized with the server.

For technical reasons, the audio recording for audit purposes is not performed during the following situations:

  1. answering of geography question;
  2. selecting a file from the gallery;
  3. taking a photograph with the camera;
  4. scanning a barcode/qrcode with the camera;
  5. adjusting the App’s settings, running diagnostics, etc.
  6. answering audio question (nb: recording is taken as the answer to the audio question and not added to audio audit recording).
  7. viewing map data in an external application (following the link shown in GPS questions);
  8. switching to any other App, or
  9. switching to home screen.

For technical reasons, interviews and their audio files must be sent together. The audio +files are synced first, and then the interview file. That means the interview file will +only be sent once the, potentially quite large, audio files have been sent.

Audio audit data format

See audio audit files article for details.

\ No newline at end of file diff --git a/headquarters/svymanage/audit-log/images/852912.png b/headquarters/svymanage/audit-log/images/852912.png new file mode 100644 index 00000000..abe1a54e Binary files /dev/null and b/headquarters/svymanage/audit-log/images/852912.png differ diff --git a/headquarters/svymanage/audit-log/index.html b/headquarters/svymanage/audit-log/index.html new file mode 100644 index 00000000..137b7c77 --- /dev/null +++ b/headquarters/svymanage/audit-log/index.html @@ -0,0 +1,27 @@ +Server Audit Log +

Server Audit Log

August 20, 2023

Survey Solutions server administrator +may inspect the server audit log. The audit log lists important events that were initiated by the users on the server, identifying who made that action, and when.

For actions of interviewers, see the detailed actions log.

The server actually provides two kinds of audit logs: per workspace and server-wide.

  • To view the server audit log, the admin user should proceed to MenuAdministrationAudit log.
  • To view the audit log for a particular workspace, the admin user should proceed to MenuAdministration→ click on a workspace name in the list of workspaces → Audit log.

The audit log presents its records as a table with the following attributes:

  • LOG DATE - indicates date and time when the event occurred;
  • USER - name of the user account that performed the action that was logged;
  • EVENT TYPE - classification of the type of the logged event (see codes below);
  • LOG - records details about the logged event.

The log data can be exported in a form of a downloadable file in any of the following formats:

  • XLSX (Excel or compatible),
  • TAB (TAB-delimited values),
  • CSV (comma separated values).

The following actions/events are recorded in the audit log on the server (S denotes the event appears in the server-wide audit log, W denotes the event appears in the workspace-specific audit log):

#Log TypeEvent TypeLogged whenDetailsExample
1WQuestionnaireImporteda questionnaire is imported from the DesignerMentions name and version of the questionnaire being imported to the HQ server from the Designer(ver. 2) CENSUS_INDIA_2030: imported;
2WQuestionnaireDeleteda questionnaire and associated data are deletedMentions name and version of the questionnaire being deleted.(ver. 2) CENSUS_INDIA_2030: deleted;
3WExportStareda new export job is startedMentions name and version of the exported survey questionnaire and the data export format.CENSUS_INDIA_2030 v2 : exported; STATA
4WAssignmentsUpgradeStartedan upgrade of assignments between different questionnaire versions has been startedMentions questionnaire name, source version and destination version for assignment migration.Assignments: Upgrade; From (ver. 2) to (ver. 3) CENSUS_INDIA_2030
5SUserCreateda user account is createdMentions the role and login of the new user account that has been created.Headquarter user 'Headquarters1': created;
6WAssignmentSizeChangedan assignment size has been revisedMentions assignment number and new size value.Assignment 13091: size changed; 5
7WExportEncryptionChangedencryption setting (password protection) has changed (set on or off)Mentions whether the encryption was set to enabled or disabled state. Does not mention the password.Export encryption: changed; enabled'
Export encryption: changed; disabled'
8WUserMovedToAnotherTeaminterviewer is moved from one team to anotherMentions which user was moved from which team to which teamUser Natalia: moved; From team SupJohnson' to SupJackson
9WEmailProviderWasChangedchange in configuration of the bulk email providerMentions the previous and current provider.Update: Previous provider was None, current provider is SendGrid;
10WUsersImporteduser accounts were created in batch modeMentions how many accounts were created in batch mode in total, and by role.Users: Import; User Headquarters1 created 8 users in batch mode, of which 7 are interviewers and 1 supervisors
11WAssignmentsImportednew assignments were done by uploading a preloading fileMentions questionnaire name and version for the imported questionnaire(ver. 2) CENSUS_INDIA_2030: imported;
12SInterviewerArchivedan interviewer account gets archivedMentions admin account name and interviewer account name that was archived.Interviewer: Archive; User admin has archived interviewer account Natalia
13SInterviewerUnArchivedan interviewer account is restored from the archived stateMentions admin account name and interviewer account name that was unarchived.Interviewer: Unarchive; User admin has unarchived interviewer account Natalia
14SSupervisorArchiveda supervisor account gets archivedMentions admin account name and supervisor account name that was archived.Supervisor: Archive; User admin has archived supervisor account Natalia
15SSupervisorUnArchiveda supervisor account gets restored from the archived stateMentions admin account name and supervisor account name that was unarchived.Supervisor: Unarchive; User admin has unarchived supervisor account Natalia
16SWorkspaceCreatedA new workspace is created on the server.Mentions the name and display name of the created workspace.workspace: wspace1; Workspace 1
17SWorkspaceDeletedA workspace is deleted on the server.Mentions the name of the workspace.workspace: wspace1;
18SWorkspaceDisabledA workspace is disabled on the server.Mentions the name of the disabled workspace.workspace: wspace1;
19SWorkspaceEnabledA workspace is enabled on the server.Mentions the name of the enabled workspace.workspace: wspace1;
20SWorkspaceUserAssignedA user is given access to a workspace on the server.Mentions the name of the user and one or more workspace names.SergiyInt: primary, wspace1, wspace2;
21SWorkspaceUserUnassignedA user access to a workspace on the server is revoked.Mentions the name of the user and one or more workspace names.SergiyInt: primary, wspace1, wspace2;
22SWorkspaceUpdatedDisplay name of a workspace has been changed.Mentions the name of the workspace followed by the old and the new workspace display names.wspace1: Workspace 1; Workspace 2;
23S,WUserPasswordChangedA user password has been successfully changed.Mentions the name of the user.user 'SergiyInt':password changed;
24S,WUserPasswordChangeFailedAn attempt to change the user password was not successful (for example, the new password does not satisfy the effective minimum length requirement).Mentions the name of the user.user 'SergiyInt': password change failed;
0S,WUnknownReserved: This value should not be observed in practice by the end-users of the application.

Note on the timestamp: when a user reads the audit log online, the timestamps are automatically converted to the time zone of this user. But if the user opts to download the audit log as a file, all timestamps are saved in the UTC time zone, +thus the same event may have different timestamps when the audit log is viewed +online on the server and offline from a downloaded file. + 

\ No newline at end of file diff --git a/headquarters/svymanage/components-of-the-headquarters-software/index.html b/headquarters/svymanage/components-of-the-headquarters-software/index.html new file mode 100644 index 00000000..a76cc9eb --- /dev/null +++ b/headquarters/svymanage/components-of-the-headquarters-software/index.html @@ -0,0 +1,40 @@ +Components of the Headquarters Software +

Components of the Headquarters Software

June 29, 2016

The headquarters software is a suite of connected tools for the +administrator and headquarters users:
 

  • to track the overall progress of the survey +(Reports)
  • to review completed interviews +(Interviews)
  • to manage the human resources (Teams and +Roles)
  • to specify survey instruments, create survey assignments with those +instruments(Survey +Setup)
  • to export the data collected from these assignments (Data +Export)
  • to find a check the status of particular case assignments +(Troubleshooting)

The difference between the headquarters and administrator users is that +the administrator can create headquarters/observer user accounts, +archive user accounts, and delete questionnaire templates from the +headquarters server.

The articles linked here will provide an overview of each tool— +Reports, +Interviews, +Teams and +Roles, +Survey +Setup, +and Data Export—and of how each tool +works.

\ No newline at end of file diff --git a/headquarters/svymanage/distributing-assignments-to-interviewers/images/774335.png b/headquarters/svymanage/distributing-assignments-to-interviewers/images/774335.png new file mode 100644 index 00000000..25a4af22 Binary files /dev/null and b/headquarters/svymanage/distributing-assignments-to-interviewers/images/774335.png differ diff --git a/headquarters/svymanage/distributing-assignments-to-interviewers/images/774335_hu3572206309818389723.png b/headquarters/svymanage/distributing-assignments-to-interviewers/images/774335_hu3572206309818389723.png new file mode 100644 index 00000000..1aad4dd8 Binary files /dev/null and b/headquarters/svymanage/distributing-assignments-to-interviewers/images/774335_hu3572206309818389723.png differ diff --git a/headquarters/svymanage/distributing-assignments-to-interviewers/images/795957.png b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795957.png new file mode 100644 index 00000000..56ccd42c Binary files /dev/null and b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795957.png differ diff --git a/headquarters/svymanage/distributing-assignments-to-interviewers/images/795957_hu8150634627113445176.png b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795957_hu8150634627113445176.png new file mode 100644 index 00000000..24fa76c8 Binary files /dev/null and b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795957_hu8150634627113445176.png differ diff --git a/headquarters/svymanage/distributing-assignments-to-interviewers/images/795959.png b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795959.png new file mode 100644 index 00000000..2e239a06 Binary files /dev/null and b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795959.png differ diff --git a/headquarters/svymanage/distributing-assignments-to-interviewers/images/795959_hu220020344529339710.png b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795959_hu220020344529339710.png new file mode 100644 index 00000000..5ae0d244 Binary files /dev/null and b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795959_hu220020344529339710.png differ diff --git a/headquarters/svymanage/distributing-assignments-to-interviewers/images/795961.png b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795961.png new file mode 100644 index 00000000..d34e125e Binary files /dev/null and b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795961.png differ diff --git a/headquarters/svymanage/distributing-assignments-to-interviewers/images/795961_hu8767528807388041329.png b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795961_hu8767528807388041329.png new file mode 100644 index 00000000..25e3ae4f Binary files /dev/null and b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795961_hu8767528807388041329.png differ diff --git a/headquarters/svymanage/distributing-assignments-to-interviewers/images/795979.png b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795979.png new file mode 100644 index 00000000..8f20b768 Binary files /dev/null and b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795979.png differ diff --git a/headquarters/svymanage/distributing-assignments-to-interviewers/images/795979_hu2595343431724465930.png b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795979_hu2595343431724465930.png new file mode 100644 index 00000000..1f2331ad Binary files /dev/null and b/headquarters/svymanage/distributing-assignments-to-interviewers/images/795979_hu2595343431724465930.png differ diff --git a/headquarters/svymanage/distributing-assignments-to-interviewers/index.html b/headquarters/svymanage/distributing-assignments-to-interviewers/index.html new file mode 100644 index 00000000..7bf54666 --- /dev/null +++ b/headquarters/svymanage/distributing-assignments-to-interviewers/index.html @@ -0,0 +1,31 @@ +Distributing Assignments to Interviewers +

Distributing Assignments to Interviewers

June 28, 2016

Step 1

Log in to your server using a supervisor account. If you are testing +Survey Solutions, log in at demo.mysurvey.solutions using a supervisor +account. 


 

Step 2

Once the supervisor’s dashboard has loaded, select the Assignments +tab.

The list of assignments can be filtered by questionnaire template, +person responsible, and/or archived status.

From the list of assignments, the supervisor the supervisor should +select the assignments that they would like to assign to one of their +enumerators.

From the pop-up window, the supervisor should select the enumerator that +will be given the assignment. To confirm the selection, click on +the Assign button. 

That selected enumerator will now be responsible for these assignments, +and they will appear enumerator’s Interviewer dashboard after the tablet +is next synchronized.

\ No newline at end of file diff --git a/headquarters/svymanage/exposed-variables/images/exposing_variables.png b/headquarters/svymanage/exposed-variables/images/exposing_variables.png new file mode 100644 index 00000000..df934a56 Binary files /dev/null and b/headquarters/svymanage/exposed-variables/images/exposing_variables.png differ diff --git a/headquarters/svymanage/exposed-variables/index.html b/headquarters/svymanage/exposed-variables/index.html new file mode 100644 index 00000000..a37cfe71 --- /dev/null +++ b/headquarters/svymanage/exposed-variables/index.html @@ -0,0 +1,35 @@ +Exposed Variables +

Exposed Variables

May 11, 2021

Exposed variables are special variables that are made available by Survey Solutions for speedy access that can be utilized for the filtering of observations in the interviews lists and map reports.

All questions and variables from the cover page of any questionnaire are automatically considered to be exposed and no action needs to be undertaken by the user to expose them. In addition the user may expose up to 15 questions or variables from the main level of the questionnaire (the interview level). These questions must be of the types that are acceptable for questions at the cover page.

To expose questions/variables the user needs to go to the list of the questionnaires at the server, open the questionnaire details, click on the link edit for exposed variables.

The user will be presented with a two panel dialog where she can click on the +questions in the list of available (left panel) and they will be added to the +list of exposed variables (right panel). If the question or variable were added +by mistake or no longer needed, they can be removed by clicking the X-button +next to it.

A search box at the top of the total list allows a quick filtering of the list +to entries with specified sequence of characters in the variable name or +question text.

Actualization of the exposed variables begins when the user clicks SAVE and +confirms. The process may take considerable time depending on the size of the +survey and server performance.

Exposed variables are a property of a survey. Changing the set of exposed +variables affects all the users making use of the filters based on exposed +variables. It is best to decide early, which variables will be needed for +monitoring and designate them as exposed before a significant amount of +data accumulates.

Until the actualization of the exposed variables is completed, the map report +and interview selection may show incomplete sets of interviews for a filter +making use of the variables that haven’t been processed yet.

\ No newline at end of file diff --git a/headquarters/svymanage/import-the-questionnaire/index.html b/headquarters/svymanage/import-the-questionnaire/index.html new file mode 100644 index 00000000..24887fc0 --- /dev/null +++ b/headquarters/svymanage/import-the-questionnaire/index.html @@ -0,0 +1,57 @@ +Import the Questionnaire +

Import the Questionnaire

February 6, 2024

A questionnaire document prepared in the Designer site needs to be imported +to the Survey Solutions data server before the data collection may start in +that survey. This article outlines how to import a questionnaire from the +Designer to the HQ.

  1. In the main menu select Survey setup, then Questionnaires.

  2. Click the Import questionnaire button.

  3. Enter the Designer credentials (under which you’ve designed your +questionnaire).

  4. Select the questionnaire that you want to import from the list. The list of +questionnaires shows the questionnaires owned by you and shared with you +together. You can navigate the pages, search the questionnaires and sort them +by title, date of last modification, or owner.

  5. Once the questionnaire is selected, type an import comment, which is a +memo to yourself and colleagues working in HQ regarding this survey or +version of the questionnaire. The maximum length of this comment obeys the maximum +number of characters permitted in comments to assignments.

  6. If you’ve imported the same questionnaire to the same workspace before, you +may wish to upgrade +the assignments from an earlier version. Indicate if you wish to do so at +this stage, and pick the version of an earlier questionnaire from the list. If +you need to upgrade assignments from multiple versions, you can upgrade them +one-by-one using the Upgrade assignments menu item in the Survey SetupQuestionnaires page.

  7. Press the IMPORT button.

After the questionnaire is imported it will appear in the list of the +questionnaires. If this is the first time you import this questionnaire, it +will get assigned a numeric version identifier 1. For subsequent imports of +the same questionnaire, the assigned version numbers will increment by one.

Error messages

During the process of importing a questionnaire you may encounter the following +situations:

#
Message
Description
1Questionnaire 'NAME' already exists. Please choose another name.You are importing a questionnaire with exactly the same title as another +questionnaire already imported to this workspace. To be able to distinguish +between them in the interface (in the reports, assignments, etc) the +questionnaires must be titled differently. The user needs to modify the title +of the questionnaire in the questionnaire settings before importing.
2You have already imported another questionnaire with questionnaire +variable 'NAME' from Designer. If you still want to import this +particular one, please give it a different questionnaire variable in Designer.You are importing a questionnaire with exactly the same questionnaire +variable as another questionnaire already imported to this workspace. +The questionnaire variable must be unique. The user needs to modify the +questionnaire variable of the questionnaire in the +questionnaire +settings before importing.
3The questionnaire "NAME" has compilation errors. Please +correct them in Designer.Only questionnaires without compilation errors may be imported from the +Designer to the data server. If your questionnaire contains any errors, they +must be corrected in the Designer tool first.
4The questionnaire "NAME" cannot be found. Please refresh the list of questionnaires.The questionnaire was deleted in the Designer during the import process (by you or a different user, the questionnaire owner). You may not proceed, but must restart the import process and pick a different questionnaire.
5Requested questionnaire cannot be found. Please refresh the list of questionnairesThe questionnaire was deleted in the Designer during the import process (by you or a different user, the questionnaire owner). You may not proceed, but must restart the import process and pick a different questionnaire.
6Your questionnaire "NAME" contains new functionality: ... . New feature(s) is not supported by your installation. Please update.The version of the software that is installed in your data server is too old to facilitate data collection with the questionnaire you are trying to import. The message usually includes hints on what specific functionality is not supported. An update of the data server is recommended in this case, but if an update is not possible, then the Designer tool must be used to edit the questionnaire to remove the not-supported features.
7Designer unavailable. Please make sure that Designer is not in maintenance modeThe server you are trying to import the questionnaire to experienced a problem communicating with the Designer server.

  • First, try to repeat the import procedure. If it doesn't succeed continue troubleshooting.
  • If there is a planned maintenance, a note on this may appear in the users' forum.
  • Access the Designer site directly from the server. Check that you can login from that device. If you can't access it from the browser, the Survey Solutions server will face the same issue (note, that the reverse is not necessarily true).
  • Check with the tools in the Is the Designer tool online now? article to see if this is a user-specific or wide-spread issue.
  • Check the Healthcheck page of the Survey Solutions data server, refer to "Designer connection check" item. (requires the user to be in the role administrator.)
  • You may also want to inspect the server logs, see Data Server Errors for details (this requires file access to the system that is hosting Survey Solutions server).
\ No newline at end of file diff --git a/headquarters/svymanage/index.html b/headquarters/svymanage/index.html new file mode 100644 index 00000000..b038b93e --- /dev/null +++ b/headquarters/svymanage/index.html @@ -0,0 +1,50 @@ +Survey Management +

Survey Management

Import the Questionnaire

A questionnaire document prepared in the Designer site needs to be imported +to the Survey Solutions data server before the data collection may start in +that survey. This article outlines how to import a questionnaire from the +Designer to the HQ.

  1. In the main menu select Survey setup, then Questionnaires.

    February 6, 2024

Server Audit Log

Survey Solutions server administrator +may inspect the server audit log. The audit log lists important events that were initiated by the users on the server, identifying who made that action, and when.

For actions of interviewers, see the detailed actions log.

The server actually provides two kinds of audit logs: per workspace and server-wide.

  • To view the server audit log, the admin user should proceed to MenuAdministrationAudit log.
  • To view the audit log for a particular workspace, the admin user should proceed to MenuAdministration→ click on a workspace name in the list of workspaces → Audit log.

The audit log presents its records as a table with the following attributes:

August 20, 2023

Audio audit

Description

Audio auditing enables audio recording of the interviewing process for quality control. +Audio auditing automatically records the full interview for selected assignments, stores +the recording in encrypted audio files, and synchronizes these audio files along with the +linked interview files. It is not possible to record only parts of an interview, but it +is possible to select which assignments will be recorded.

How to enable/disable audio auditing

Before creating an assignment

  • In the main menu of the Headquarters navigate to Survey Setup > Questionnaires;
  • Click on a questionnaire;
  • In the context menu that appears, select Details;
  • Click in the box next to Record audio to enable audio auditing.

After this point, all created assignments will have audio audit enabled.

March 19, 2023

Exposed Variables

Exposed variables are special variables that are made available by Survey Solutions for speedy access that can be utilized for the filtering of observations in the interviews lists and map reports.

All questions and variables from the cover page of any questionnaire are automatically considered to be exposed and no action needs to be undertaken by the user to expose them. In addition the user may expose up to 15 questions or variables from the main level of the questionnaire (the interview level). These questions must be of the types that are acceptable for questions at the cover page.

May 11, 2021

Questionnaire Details Page

Questionnaire details page reflects information about the questionnaire +that has been earlier imported to the Headquarters. You access it by clicking +a questionnaire in the list of imported questionnaires (Survey Setup/Questionnaires)

Notably, the information properties reflect the structure of the +questionnaire as designed (number of sections, rosters, questions, etc) +and the information about how the questionnaire is configured at the Headquarters +(whether the web mode is on, whether the audio recording is turned on for +new assignments, etc).

November 19, 2019

Components of the Headquarters Software

The headquarters software is a suite of connected tools for the +administrator and headquarters users:
 

  • to track the overall progress of the survey +(Reports)
  • to review completed interviews +(Interviews)
  • to manage the human resources (Teams and +Roles)
  • to specify survey instruments, create survey assignments with those +instruments(Survey +Setup)
  • to export the data collected from these assignments (Data +Export)
  • to find a check the status of particular case assignments +(Troubleshooting)

The difference between the headquarters and administrator users is that +the administrator can create headquarters/observer user accounts, +archive user accounts, and delete questionnaire templates from the +headquarters server.

June 29, 2016

Distributing Assignments to Interviewers

Step 1

Log in to your server using a supervisor account. If you are testing +Survey Solutions, log in at demo.mysurvey.solutions using a supervisor +account. 


 

Step 2

Once the supervisor’s dashboard has loaded, select the Assignments +tab.

The list of assignments can be filtered by questionnaire template, +person responsible, and/or archived status.

June 28, 2016
\ No newline at end of file diff --git a/headquarters/svymanage/page/1/index.html b/headquarters/svymanage/page/1/index.html new file mode 100644 index 00000000..f52df6e1 --- /dev/null +++ b/headquarters/svymanage/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/svymanage/ + \ No newline at end of file diff --git a/headquarters/svymanage/questionnaire-details-page/images/questionnaire_details.png b/headquarters/svymanage/questionnaire-details-page/images/questionnaire_details.png new file mode 100644 index 00000000..f66e5a93 Binary files /dev/null and b/headquarters/svymanage/questionnaire-details-page/images/questionnaire_details.png differ diff --git a/headquarters/svymanage/questionnaire-details-page/index.html b/headquarters/svymanage/questionnaire-details-page/index.html new file mode 100644 index 00000000..f2099e73 --- /dev/null +++ b/headquarters/svymanage/questionnaire-details-page/index.html @@ -0,0 +1,40 @@ +Questionnaire Details Page +

Questionnaire Details Page

November 19, 2019

Questionnaire details page reflects information about the questionnaire +that has been earlier imported to the Headquarters. You access it by clicking +a questionnaire in the list of imported questionnaires (Survey Setup/Questionnaires)

Notably, the information properties reflect the structure of the +questionnaire as designed (number of sections, rosters, questions, etc) +and the information about how the questionnaire is configured at the Headquarters +(whether the web mode is on, whether the audio recording is turned on for +new assignments, etc).

From the questionnaire information page one may review the PDF rendering +of the questionnaire. This is especially useful for the Headquarters staff +who were not part of the questionnaire development team, but need to understand +exactly e.g. the logic of the questionnaire (skips and validation conditions).

The PDF document reflects a snapshot of how the questionnaire was designed at +the time when it was imported. Later changes to the questionnaire in the Designer +will not affect this rendering.

If the questionnaire is translated to multiple languages, there will be multiple +links for PDF documents corresponding to each translation.

The comment field reflects the comment entered by the person importing the +questionnaire to the Headquarters (if any comment was provided). Use this field +to reflect the purpose of an update and/or the changes made to this version +relative to the earlier versions.

Examples of good comments:

  • “Added optional module M for households of size 4 and more”.
  • “All interviews in this version are dummy/practice interviews”.
  • “Fieldwork version used in 1st quarter of 2020”.

Examples of bad comments:

  • “New version”
  • “Updated”
  • “My version”

The same comment will be shown in the Questionnaire History page in the Designer +reflecting the event of import of the questionnaire to the Headquarters.

The link icon next to the questionnaire title is a link back to the questionnaire +document at the Designer site. Note that if you follow the link you will need to sign in +to the Designer site with your Designer credentials and to see the questionnaire +it must be shared with your Designer account (or you must be its owner).

\ No newline at end of file diff --git a/headquarters/teams-and-roles-tab-creating-user-accounts-/index.html b/headquarters/teams-and-roles-tab-creating-user-accounts-/index.html new file mode 100644 index 00000000..ed96edbb --- /dev/null +++ b/headquarters/teams-and-roles-tab-creating-user-accounts-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/accounts/teams-and-roles-tab-creating-user-accounts/ + \ No newline at end of file diff --git a/img/DR-2017-folders-icons.png b/img/DR-2017-folders-icons.png new file mode 100644 index 00000000..62f5c838 Binary files /dev/null and b/img/DR-2017-folders-icons.png differ diff --git a/img/Interviewer.png b/img/Interviewer.png new file mode 100644 index 00000000..20e41f50 Binary files /dev/null and b/img/Interviewer.png differ diff --git a/img/Search_button.png b/img/Search_button.png new file mode 100644 index 00000000..292a52d4 Binary files /dev/null and b/img/Search_button.png differ diff --git a/img/Supervisor.png b/img/Supervisor.png new file mode 100644 index 00000000..c7ce9e81 Binary files /dev/null and b/img/Supervisor.png differ diff --git a/img/arrow.png b/img/arrow.png new file mode 100644 index 00000000..3158ca81 Binary files /dev/null and b/img/arrow.png differ diff --git a/img/contact.png b/img/contact.png new file mode 100644 index 00000000..9b05339a Binary files /dev/null and b/img/contact.png differ diff --git a/img/designer.png b/img/designer.png new file mode 100644 index 00000000..7c74ce80 Binary files /dev/null and b/img/designer.png differ diff --git a/img/favicon/favicon-support-1-158-General-use-iOS-Android.png b/img/favicon/favicon-support-1-158-General-use-iOS-Android.png new file mode 100644 index 00000000..0bce96a5 Binary files /dev/null and b/img/favicon/favicon-support-1-158-General-use-iOS-Android.png differ diff --git a/img/favicon/favicon-support-1-196-Chrome-for-Android.png b/img/favicon/favicon-support-1-196-Chrome-for-Android.png new file mode 100644 index 00000000..ff10d552 Binary files /dev/null and b/img/favicon/favicon-support-1-196-Chrome-for-Android.png differ diff --git a/img/favicon/favicon-support-1-48-win-ico.png b/img/favicon/favicon-support-1-48-win-ico.png new file mode 100644 index 00000000..c0a6917b Binary files /dev/null and b/img/favicon/favicon-support-1-48-win-ico.png differ diff --git a/img/favicon/favicon-support-1-558-win10-tile.png b/img/favicon/favicon-support-1-558-win10-tile.png new file mode 100644 index 00000000..0eda51b7 Binary files /dev/null and b/img/favicon/favicon-support-1-558-win10-tile.png differ diff --git a/img/favicon/favicon-support-1.png b/img/favicon/favicon-support-1.png new file mode 100644 index 00000000..b87fd641 Binary files /dev/null and b/img/favicon/favicon-support-1.png differ diff --git a/img/header.jpg b/img/header.jpg new file mode 100644 index 00000000..ca60f458 Binary files /dev/null and b/img/header.jpg differ diff --git a/img/hq.png b/img/hq.png new file mode 100644 index 00000000..255791b7 Binary files /dev/null and b/img/hq.png differ diff --git a/img/logo.png b/img/logo.png new file mode 100644 index 00000000..4bccaa83 Binary files /dev/null and b/img/logo.png differ diff --git a/img/portal-suso-logo-small.png b/img/portal-suso-logo-small.png new file mode 100644 index 00000000..4520ad5a Binary files /dev/null and b/img/portal-suso-logo-small.png differ diff --git a/img/search-by-algolia-light-background.svg b/img/search-by-algolia-light-background.svg new file mode 100644 index 00000000..f1c841e7 --- /dev/null +++ b/img/search-by-algolia-light-background.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/search-results-icon.png b/img/search-results-icon.png new file mode 100644 index 00000000..01d13e56 Binary files /dev/null and b/img/search-results-icon.png differ diff --git a/img/small-header.jpg b/img/small-header.jpg new file mode 100644 index 00000000..95de8e76 Binary files /dev/null and b/img/small-header.jpg differ diff --git a/index.html b/index.html new file mode 100644 index 00000000..38a128b1 --- /dev/null +++ b/index.html @@ -0,0 +1,26 @@ +Survey Solutions | Documentation +
New +Version 24.06 is available now!

Version history

\ No newline at end of file diff --git a/interviewer-installation.html b/interviewer-installation.html new file mode 100644 index 00000000..e6431deb --- /dev/null +++ b/interviewer-installation.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/download-and-install-the-interviewer-application/ + \ No newline at end of file diff --git a/interviewer/answering-all-question-types/index.html b/interviewer/answering-all-question-types/index.html new file mode 100644 index 00000000..5a012f68 --- /dev/null +++ b/interviewer/answering-all-question-types/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/answering-all-question-types/ + \ No newline at end of file diff --git a/interviewer/app/answering-all-question-types/images/658328.png b/interviewer/app/answering-all-question-types/images/658328.png new file mode 100644 index 00000000..d4ed19ee Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658328.png differ diff --git a/interviewer/app/answering-all-question-types/images/658328_hu15677386106657040273.png b/interviewer/app/answering-all-question-types/images/658328_hu15677386106657040273.png new file mode 100644 index 00000000..51507610 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658328_hu15677386106657040273.png differ diff --git a/interviewer/app/answering-all-question-types/images/658329.png b/interviewer/app/answering-all-question-types/images/658329.png new file mode 100644 index 00000000..671b4f0d Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658329.png differ diff --git a/interviewer/app/answering-all-question-types/images/658329_hu16918030882671238791.png b/interviewer/app/answering-all-question-types/images/658329_hu16918030882671238791.png new file mode 100644 index 00000000..0c932bfe Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658329_hu16918030882671238791.png differ diff --git a/interviewer/app/answering-all-question-types/images/658330.png b/interviewer/app/answering-all-question-types/images/658330.png new file mode 100644 index 00000000..93199c7b Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658330.png differ diff --git a/interviewer/app/answering-all-question-types/images/658330_hu6224175110171112284.png b/interviewer/app/answering-all-question-types/images/658330_hu6224175110171112284.png new file mode 100644 index 00000000..359a455f Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658330_hu6224175110171112284.png differ diff --git a/interviewer/app/answering-all-question-types/images/658331.png b/interviewer/app/answering-all-question-types/images/658331.png new file mode 100644 index 00000000..732ffb7d Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658331.png differ diff --git a/interviewer/app/answering-all-question-types/images/658331_hu8728513672597556663.png b/interviewer/app/answering-all-question-types/images/658331_hu8728513672597556663.png new file mode 100644 index 00000000..96340b08 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658331_hu8728513672597556663.png differ diff --git a/interviewer/app/answering-all-question-types/images/658345.png b/interviewer/app/answering-all-question-types/images/658345.png new file mode 100644 index 00000000..09811156 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658345.png differ diff --git a/interviewer/app/answering-all-question-types/images/658345_hu2426927471385990770.png b/interviewer/app/answering-all-question-types/images/658345_hu2426927471385990770.png new file mode 100644 index 00000000..b46d7a1c Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658345_hu2426927471385990770.png differ diff --git a/interviewer/app/answering-all-question-types/images/658346.png b/interviewer/app/answering-all-question-types/images/658346.png new file mode 100644 index 00000000..6f3fe837 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658346.png differ diff --git a/interviewer/app/answering-all-question-types/images/658346_hu6615395292641994170.png b/interviewer/app/answering-all-question-types/images/658346_hu6615395292641994170.png new file mode 100644 index 00000000..179ea8c7 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658346_hu6615395292641994170.png differ diff --git a/interviewer/app/answering-all-question-types/images/658347.png b/interviewer/app/answering-all-question-types/images/658347.png new file mode 100644 index 00000000..21e3cf20 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658347.png differ diff --git a/interviewer/app/answering-all-question-types/images/658347_hu17735453409500623263.png b/interviewer/app/answering-all-question-types/images/658347_hu17735453409500623263.png new file mode 100644 index 00000000..80c6ef6c Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658347_hu17735453409500623263.png differ diff --git a/interviewer/app/answering-all-question-types/images/658349.png b/interviewer/app/answering-all-question-types/images/658349.png new file mode 100644 index 00000000..ba83fad8 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658349.png differ diff --git a/interviewer/app/answering-all-question-types/images/658349_hu15623598446598338234.png b/interviewer/app/answering-all-question-types/images/658349_hu15623598446598338234.png new file mode 100644 index 00000000..898a6012 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658349_hu15623598446598338234.png differ diff --git a/interviewer/app/answering-all-question-types/images/658353.png b/interviewer/app/answering-all-question-types/images/658353.png new file mode 100644 index 00000000..9a61504a Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658353.png differ diff --git a/interviewer/app/answering-all-question-types/images/658353_hu15165372527922739932.png b/interviewer/app/answering-all-question-types/images/658353_hu15165372527922739932.png new file mode 100644 index 00000000..7dda81c8 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658353_hu15165372527922739932.png differ diff --git a/interviewer/app/answering-all-question-types/images/658355.png b/interviewer/app/answering-all-question-types/images/658355.png new file mode 100644 index 00000000..0dfd8a92 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658355.png differ diff --git a/interviewer/app/answering-all-question-types/images/658355_hu3206896703513795157.png b/interviewer/app/answering-all-question-types/images/658355_hu3206896703513795157.png new file mode 100644 index 00000000..c0bbcff3 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658355_hu3206896703513795157.png differ diff --git a/interviewer/app/answering-all-question-types/images/658356.png b/interviewer/app/answering-all-question-types/images/658356.png new file mode 100644 index 00000000..ee963e3f Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658356.png differ diff --git a/interviewer/app/answering-all-question-types/images/658356_hu18393925031072227968.png b/interviewer/app/answering-all-question-types/images/658356_hu18393925031072227968.png new file mode 100644 index 00000000..b97cdd1a Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658356_hu18393925031072227968.png differ diff --git a/interviewer/app/answering-all-question-types/images/658358.png b/interviewer/app/answering-all-question-types/images/658358.png new file mode 100644 index 00000000..bdd15fea Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658358.png differ diff --git a/interviewer/app/answering-all-question-types/images/658358_hu5182671206967635531.png b/interviewer/app/answering-all-question-types/images/658358_hu5182671206967635531.png new file mode 100644 index 00000000..1936ef05 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658358_hu5182671206967635531.png differ diff --git a/interviewer/app/answering-all-question-types/images/658360.png b/interviewer/app/answering-all-question-types/images/658360.png new file mode 100644 index 00000000..a164e724 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658360.png differ diff --git a/interviewer/app/answering-all-question-types/images/658360_hu15801628353616994657.png b/interviewer/app/answering-all-question-types/images/658360_hu15801628353616994657.png new file mode 100644 index 00000000..88665192 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658360_hu15801628353616994657.png differ diff --git a/interviewer/app/answering-all-question-types/images/658361.png b/interviewer/app/answering-all-question-types/images/658361.png new file mode 100644 index 00000000..6da3b652 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658361.png differ diff --git a/interviewer/app/answering-all-question-types/images/658361_hu18095142829277839244.png b/interviewer/app/answering-all-question-types/images/658361_hu18095142829277839244.png new file mode 100644 index 00000000..56b9bc35 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658361_hu18095142829277839244.png differ diff --git a/interviewer/app/answering-all-question-types/images/658368.png b/interviewer/app/answering-all-question-types/images/658368.png new file mode 100644 index 00000000..5502192c Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658368.png differ diff --git a/interviewer/app/answering-all-question-types/images/658368_hu15921107352799482394.png b/interviewer/app/answering-all-question-types/images/658368_hu15921107352799482394.png new file mode 100644 index 00000000..9364a56f Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658368_hu15921107352799482394.png differ diff --git a/interviewer/app/answering-all-question-types/images/658369.png b/interviewer/app/answering-all-question-types/images/658369.png new file mode 100644 index 00000000..8ed8e43a Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658369.png differ diff --git a/interviewer/app/answering-all-question-types/images/658369_hu12426676509672638876.png b/interviewer/app/answering-all-question-types/images/658369_hu12426676509672638876.png new file mode 100644 index 00000000..a42cc161 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658369_hu12426676509672638876.png differ diff --git a/interviewer/app/answering-all-question-types/images/658370.png b/interviewer/app/answering-all-question-types/images/658370.png new file mode 100644 index 00000000..c651a5b0 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658370.png differ diff --git a/interviewer/app/answering-all-question-types/images/658370_hu7277710221881677320.png b/interviewer/app/answering-all-question-types/images/658370_hu7277710221881677320.png new file mode 100644 index 00000000..db3a8d92 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658370_hu7277710221881677320.png differ diff --git a/interviewer/app/answering-all-question-types/images/658372.png b/interviewer/app/answering-all-question-types/images/658372.png new file mode 100644 index 00000000..bbb37a3c Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658372.png differ diff --git a/interviewer/app/answering-all-question-types/images/658372_hu1495183306626386065.png b/interviewer/app/answering-all-question-types/images/658372_hu1495183306626386065.png new file mode 100644 index 00000000..1dbbcf07 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658372_hu1495183306626386065.png differ diff --git a/interviewer/app/answering-all-question-types/images/658373.png b/interviewer/app/answering-all-question-types/images/658373.png new file mode 100644 index 00000000..3bde2c12 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658373.png differ diff --git a/interviewer/app/answering-all-question-types/images/658373_hu10759312464514792840.png b/interviewer/app/answering-all-question-types/images/658373_hu10759312464514792840.png new file mode 100644 index 00000000..35778086 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658373_hu10759312464514792840.png differ diff --git a/interviewer/app/answering-all-question-types/images/658376.png b/interviewer/app/answering-all-question-types/images/658376.png new file mode 100644 index 00000000..9bc9521f Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658376.png differ diff --git a/interviewer/app/answering-all-question-types/images/658376_hu5024326059126280095.png b/interviewer/app/answering-all-question-types/images/658376_hu5024326059126280095.png new file mode 100644 index 00000000..58d2b584 Binary files /dev/null and b/interviewer/app/answering-all-question-types/images/658376_hu5024326059126280095.png differ diff --git a/interviewer/app/answering-all-question-types/index.html b/interviewer/app/answering-all-question-types/index.html new file mode 100644 index 00000000..76c208d0 --- /dev/null +++ b/interviewer/app/answering-all-question-types/index.html @@ -0,0 +1,71 @@ +Answering All Question Types +

Answering All Question Types

July 14, 2016

The Interviewer application allows several different types of questions: +numeric, text, single-select +categorical, multi-select categorical, +list, date, GPS, barcode, and +picture. As an interviewer, you must know how to answer each +of them. To help you with that text, each question type is briefly +explained below with visual aids.

 

Numeric

Questions that take a numeric response have a field for an open numeric +answer. When that field is tapped, the numeric keyboard appears so that +the interviewer can compose an appropriate numerical response.

 

Text

Text questions have a field for an open text response. When that field +is tapped, the text keyboard appears so that the interviewer can compose +an appropriate text response.

 

Categorical: Single-Select

Single-select categorical questions have answer options with radio +buttons. To answer this type of question, the interviewer taps the radio +button associated with the most appropriate answer.

Categorical: Multi-Select Multi-select +categorical questions have answer options with check boxes. To answer +this type of question, the interviewer taps in all appropriate check +boxes. Selected answers will show a check in the box.

 

Categorical: Multi-Select in Yes/No Mode

Multi-select categorical questions in yes/no mode have two radio buttons +for each item–one that denotes “yes” and another that denotes “no”. To +answer this type of question, the interviewer taps the radio button +associated with the most appropriate answer for each item.

Categorical: Cascading Selections
When unanswered, cascading selections look similar to text or numeric +questions. Each question has a field where an answer can be composed. +However, to answer these questions, the enumerator first taps in the +field and then selects the most appropriate categorical answer from a +drop-down menu. Selecting an answer option can be done either through +tapping an option directly or through typing to narrow down answer +options and then select the most appropriate.
 

+

 

List

Tap on the empty text box and use the keyboard to input an answer. +Additional, elements can be added to the list until the maximum +allowable number of items is reached.

To delete elements from the list, click on the X mark. However, be +careful: doing so may result in deleting data, if the elements of a list +question are linked to a roster (e.g., names of household members, each +of which has their own row in the household demographics roster).

 

Date

First, tap on the enter date textbox.

Then, use the pop-up window to input the correct date. Depending on +which is more convenient, the interviewer may either scroll elements of +the date up and down (i.e., use the left-hand component of the date +input in the image below) or pick the date from the calendar (i.e., use +the right-hand component of the date input dialog).

After clicking the Done button, the date will be recorded. The +recorded answer will be displayed below the question text, as pictured +above.

 

Date: Current Time

Tap on the Tap to record current time box.

Then, the current time on the tablet will automatically be recorded.

 

GPS

First, tap on the textbox. This will open a window informing you that +the tablet is searching for the GPS location. Closing this window will +stop the tablet from searching for GPS.

Then, the tablet automatically records the GPS coordinates. The GPS +location is displayed immediately below the question text, showing the +longitude, latitude, accuracy, and altitude.

If GPS reading is not accurate enough, you may tap on the record +GPS textbox again. Doing so will replace the old GPS reading with the +new GPS reading. You can continue in this fashion until you obtain and +adequately precise GPS reading.

 

Barcode

First, tap on the textbox.

Then, point the tablet’s camera towards the barcode, trying to align the +red bars with the barcode, as above. 

Once the tablet can clearly read the barcode, the camera will turn off +and the barcode’s value will appear just below the question text.

 

Picture

First, tap on the take a photo textbox. Then, point the tablet’s +camera to compose your picture, pressing the camera icon on screen to +take the picture.

Once the picture has been taken, press the check button to accept the +picture or the X button, as pictured above, to reject the picture and +replace it with another picture.

Then, the picture will appear below the question text. Tap on the take +a photo textbox to replace the photo by retaking the picture.

\ No newline at end of file diff --git a/interviewer/app/app-notifications/index.html b/interviewer/app/app-notifications/index.html new file mode 100644 index 00000000..34e21cca --- /dev/null +++ b/interviewer/app/app-notifications/index.html @@ -0,0 +1,38 @@ +Interviewer App Notifications +

Interviewer App Notifications

June 3, 2019

The Interviewer App reminds the interviewers about recommended actions when +certain conditions are met by issuing user notifications. It is expected +that if the interviewers follow the notifications issued by the software +their work will be more efficient, and will let other team members +(e.g. supervisors) to act sooner on the collected data.

Some notifications are shown inside the Interviewer app (at the dashboard) +and some are shown in the Android system notifications tray. The following +table outlines where the notifications are shown and the situations when +they are issued.

Situation/MessageNotification typeRecommendation
Synchronization was not performed lately. Please synchronize.System traySynchronize as soon as possible. New assignments or rejected interviews may be awaiting at the server for pickup.
There was no retry after failed synchronization. Please try again.System traySynchronize as soon as possible since the last synchronization session was +terminated with errors and hence is incomplete.
You have X completed interview(s) that should be synchronized.System traySynchronize as soon as possible so that the completed interviews may be reviewed by the supervisors.
You have X rejected interview(s) that were not handled.System trayInterviewer should direct attention to the rejected interviews before starting new interviews.
There are a lot of completed interviews. Please synchronize.AppSynchronize as soon as possible to send completed interviews to the server and reduce a chance of data loss in case the tabled gets damaged or stolen.
Some assignments were not updated last 3 daysAppThe interviewer is expected to fulfill the assingments sent to him and should not abandon the assignments that are received by him.
You've started too many interviews. Please complete them.AppThe interviewer may start an interview without completing the previous one, but starting too many at the same time is a bad practice and started interviews are best to complete before moving forward to start other new interviews.

Setting up

Notifications are controlled centrally by the server administrator in the server settings +and are turned on by default for all servers.

Administrators finding this feature not +helpful may turn it off (or back on) for all interviewers from the server settings page. +The new setting will take effect after the next synchronization of the interviewer with +the server.

Survey coordinators must realize that Android OS provides a possibility for the user +(in this case the interviewer) to disable the notifications from a particular application +(in this case the Interviewer App) even if the notifications were turned on at the server. +Hence the management should not solely rely on the in-app generated notifications, but +continue to supervise and manage the interviewers to ensure the steady circulation of the +interviews in the system.

\ No newline at end of file diff --git a/interviewer/app/comments/images/658423.png b/interviewer/app/comments/images/658423.png new file mode 100644 index 00000000..be508672 Binary files /dev/null and b/interviewer/app/comments/images/658423.png differ diff --git a/interviewer/app/comments/images/658423_hu17669843539275071687.png b/interviewer/app/comments/images/658423_hu17669843539275071687.png new file mode 100644 index 00000000..d933b1de Binary files /dev/null and b/interviewer/app/comments/images/658423_hu17669843539275071687.png differ diff --git a/interviewer/app/comments/images/711021.png b/interviewer/app/comments/images/711021.png new file mode 100644 index 00000000..a439c5e6 Binary files /dev/null and b/interviewer/app/comments/images/711021.png differ diff --git a/interviewer/app/comments/images/711021_hu13978208571155914319.png b/interviewer/app/comments/images/711021_hu13978208571155914319.png new file mode 100644 index 00000000..68b6ef3a Binary files /dev/null and b/interviewer/app/comments/images/711021_hu13978208571155914319.png differ diff --git a/interviewer/app/comments/index.html b/interviewer/app/comments/index.html new file mode 100644 index 00000000..469ab67d --- /dev/null +++ b/interviewer/app/comments/index.html @@ -0,0 +1,31 @@ +Comments +

Comments

July 14, 2016

Comments can be left for any question. This may useful to explain +answers that you have confirmed but that may appear strange or wrong to +your supervisor.

To leave a comment, press for a moment on the question of interest. +After a few seconds, a comment field will appear, into which you can +type any arbitrary long comment.

Comments can also be left for you by your supervisor. These will likely +be questions about the answers you have recorded.

While a summary may be included in the comments on the whole +questionnaire, the actual comments for each question will appear next to +commented questions. To find the comments, simply tap on the red +question link on the survey case cover page to be directed to the +question and comment.

\ No newline at end of file diff --git a/interviewer/app/dashboard-card/images/interview_card_annotated.png b/interviewer/app/dashboard-card/images/interview_card_annotated.png new file mode 100644 index 00000000..d7c5f152 Binary files /dev/null and b/interviewer/app/dashboard-card/images/interview_card_annotated.png differ diff --git a/interviewer/app/dashboard-card/index.html b/interviewer/app/dashboard-card/index.html new file mode 100644 index 00000000..2cc9d554 --- /dev/null +++ b/interviewer/app/dashboard-card/index.html @@ -0,0 +1,34 @@ +Dashboard Card +

Dashboard Card

January 3, 2024

In the Interviewer and Supervisor Apps each interview/assignment is presented in +a form of a card in the dashboard (or +map dashboard).

  1. The card tab color corresponds to the interview status. Specifically, the +interviewer will see the cards with colored tabs:

    • blue: for interviews in status Started;
    • red: for interviews in status Rejected;
    • green: for interviews in status Completed;
    • purple: for assignments.
  2. Interview number (not present for cards corresponding to assignments).

  3. Assignment number.

  4. Questionnaire title and version.

  5. Action menu.

  6. Status change message (status, date/time, message).

  7. Calendar event (date/time comment).

  8. Identifying fields (up to 3), may be absent.

  9. Action button (may also be OPEN, REOPEN, CREATE NEW INTERVIEW).

  10. Button to show location in an external application. (only if there is an +answered identifying geolocation-type question for this interview or assignment, +which is always the case for all the cards shown in the map dashboard carousel).

The action menu (5) contains actions that are available, but deemed to be not +main. For example, for a started interview the action menu may contain actions +to discard the interview, or add a calendar event, but the main action button +at the bottom of the card is OPEN since this is the most logical next action +for the interviewer.

Tapping on the card unfolds it (if it was folded). Unfolding the card reveals +some elements that may be hidden in the folded presentation: calendar event +message, identifying fields (if more than 3 were defined), etc. Tapping on an +unfolded card folds it again.

\ No newline at end of file diff --git a/interviewer/app/index.html b/interviewer/app/index.html new file mode 100644 index 00000000..8a3575a5 --- /dev/null +++ b/interviewer/app/index.html @@ -0,0 +1,77 @@ +Overview of the App +

Overview of the App

Map Dashboard

Overview of the map dashboard

Survey Solutions map dashboard is an alternative representation of the regular +dashboard where markers on the map indicate location of respondents. An +interviewer switches to this view by pressing the map icon located in the +toolbar next to the synchronization icon on the main dashboard.

Several maps are offered for the Interviewer application (three online +maps) and (1 offline map), and more offline maps can be uploaded by the +headquarters users using the same procedure as the maps are assigned to be used +in the geography-type question. Offline maps usually occupy considerable space +in the tablet’s data storage, so only the necessary maps should be assigned to +interviewers.

January 3, 2024

Dashboard Card

In the Interviewer and Supervisor Apps each interview/assignment is presented in +a form of a card in the dashboard (or +map dashboard).

  1. The card tab color corresponds to the interview status. Specifically, the +interviewer will see the cards with colored tabs:

    • blue: for interviews in status Started;
    • red: for interviews in status Rejected;
    • green: for interviews in status Completed;
    • purple: for assignments.
  2. Interview number (not present for cards corresponding to assignments).

    January 3, 2024

Interviewer Password Reset

This article describes the actions in case an interviewer forgets the password +that was assigned to him/her. If you are a PDS administrator and forgot your +password, refer to another article: +PDS password reset.

Important:

  • Survey Solutions doesn’t store the passwords of interviewers in the clear +text. So if it is forgotten, no user may look it up inside Survey Solutions, +neither the Supervisors, nor the Headquarters, nor the Administrator users.

    August 24, 2021

Interview Progress Indicator

Survey Solutions works with surveys that may contain thousands of questions, with whole sections being turned on and off dynamically, number of repetitions responding to answers in the interview and other complexities, which present a challenge for estimation of the progress. Yet at any moment of time a certain number of questions are answered (NA), and certain number of questions are not answered (NU). (These numbers were always reported at the interview completions screen.)

May 11, 2020

Interviewer App Notifications

The Interviewer App reminds the interviewers about recommended actions when +certain conditions are met by issuing user notifications. It is expected +that if the interviewers follow the notifications issued by the software +their work will be more efficient, and will let other team members +(e.g. supervisors) to act sooner on the collected data.

Some notifications are shown inside the Interviewer app (at the dashboard) +and some are shown in the Android system notifications tray. The following +table outlines where the notifications are shown and the situations when +they are issued.

June 3, 2019

Password Best Practices

All users:

  • Do not write your password on a sticker attached to your device or in another obvious +place.
  • Do not let any other person know your password.
  • Do not rely on another person to communicate the password to you unless this is an +established procedure (in other words it is normal that the headquarters users set a +password for the interviewers, but it must be communicated directly to the interviewer, +not through another interviewer).
  • Logout (sign out) after you finish your work.
  • If you believe your password became known to another person, take immediate action - +let the supervisors know that the password is compromised, request for a new password +to be assigned to you.
  • If you’ve forgotten your password, contact your supervisor (or headquarters user) and +request for a new password to be assigned to you. Your old password can not be recovered +even by these users.

Supervisors and headquarters users, when resetting a password of an interviewer, make sure:

April 5, 2019

Interviewer Dashboard: Managing the Workload

Overview of the Interviewer Dashboard

The Interviewer dashboard offers an overview of the interviewer’s +assignments and the state of completion they are in. The tabs displayed +at the top of the dashboard sorts interviews by their status.

To navigate between the different tabs, the interviewer can either tap +on the tab at the top bar or swipe left or right. To help interviewers +differentiate between the different tabs, the color of the dashboard +will change based on which tab the interviewer is currently in. The +interface will be grey for the Create New tab, blue for +the **Started **tab, green for the Completed tab, and red for +the Rejected tab.

July 5, 2017

Synchronization

Sending completed interviews and receiving new ones

The synchronization button is how the interviewer initiates an +information exchange between their tablet and their supervisor’s laptop. +Synchronization performs two tasks. First, it automatically pushes any +completed assignment to the supervisor for review. Second, it +automatically pulls all new assignments and data collection instruments +onto the interviewer’s tablet. After synchronization is complete, the +number of new assignments received, number of completed interviews sent, +and so on are clearly displayed.
 

July 15, 2016

Quality Control & Marking Interviews as Complete

Checking whether all questions have been answered

Quality control starts with the interviewer. The interviewer should thus +do everything within their power to ensure that all questions are +answered.

The interviewer application offers three ways to do this. The first is +the classic method that one might use with a paper questionnaire. The +interviewer simply flips the questionnaire looking for unanswered +questions or answers that have triggered red error messages.

July 14, 2016

Moving Around the Questionnaire

Overall

Interviewers should strictly follow the survey protocol for +administering a questionnaire (e.g. asking earlier questions before +later questions, completing earlier modules before later modules), but +may occasionally need to move around the questionnaire for good reasons +(e.g. review their work, move between rows of the roster if the +respondent corrects an earlier answer, administer an independent module +when the key respondent for that module is present).

The interviewer can move around questionnaires in several ways.

July 14, 2016
\ No newline at end of file diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/658219.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/658219.png new file mode 100644 index 00000000..1d641d53 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/658219.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/658219_hu17589408384402889192.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/658219_hu17589408384402889192.png new file mode 100644 index 00000000..af79e6a0 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/658219_hu17589408384402889192.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/658231.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/658231.png new file mode 100644 index 00000000..6ecd1711 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/658231.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/658231_hu16149108746061895755.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/658231_hu16149108746061895755.png new file mode 100644 index 00000000..b7cd4410 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/658231_hu16149108746061895755.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/794990.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/794990.png new file mode 100644 index 00000000..a6aa8b0f Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/794990.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/794990_hu8913661888206181907.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/794990_hu8913661888206181907.png new file mode 100644 index 00000000..45e1c959 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/794990_hu8913661888206181907.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/794991.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/794991.png new file mode 100644 index 00000000..4745fd75 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/794991.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/794991_hu15962923526668318251.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/794991_hu15962923526668318251.png new file mode 100644 index 00000000..1b82e76c Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/794991_hu15962923526668318251.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829633.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829633.png new file mode 100644 index 00000000..6899872e Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829633.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829633_hu7465556115383107635.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829633_hu7465556115383107635.png new file mode 100644 index 00000000..57d48168 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829633_hu7465556115383107635.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829637.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829637.png new file mode 100644 index 00000000..35856bf1 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829637.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829637_hu7521889080801736439.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829637_hu7521889080801736439.png new file mode 100644 index 00000000..4b97b867 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829637_hu7521889080801736439.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829847.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829847.png new file mode 100644 index 00000000..ad33f6e5 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829847.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829847_hu6643161539804364562.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829847_hu6643161539804364562.png new file mode 100644 index 00000000..eef5898e Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829847_hu6643161539804364562.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829853.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829853.png new file mode 100644 index 00000000..82dfa911 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829853.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829853_hu5738952202336373568.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829853_hu5738952202336373568.png new file mode 100644 index 00000000..b2529282 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829853_hu5738952202336373568.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829855.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829855.png new file mode 100644 index 00000000..89634f68 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829855.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829855_hu2311987777453045776.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829855_hu2311987777453045776.png new file mode 100644 index 00000000..b8ef4322 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829855_hu2311987777453045776.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829857.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829857.png new file mode 100644 index 00000000..a2359852 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829857.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829857_hu10200682957936758032.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829857_hu10200682957936758032.png new file mode 100644 index 00000000..3adf7cf8 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829857_hu10200682957936758032.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829861.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829861.png new file mode 100644 index 00000000..8d8a7618 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829861.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/images/829861_hu13120661225765574659.png b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829861_hu13120661225765574659.png new file mode 100644 index 00000000..875b1c19 Binary files /dev/null and b/interviewer/app/interviewer-dashboard-managing-the-workload/images/829861_hu13120661225765574659.png differ diff --git a/interviewer/app/interviewer-dashboard-managing-the-workload/index.html b/interviewer/app/interviewer-dashboard-managing-the-workload/index.html new file mode 100644 index 00000000..536f4eff --- /dev/null +++ b/interviewer/app/interviewer-dashboard-managing-the-workload/index.html @@ -0,0 +1,90 @@ +Interviewer Dashboard: Managing the Workload +

Interviewer Dashboard: Managing the Workload

July 5, 2017

Overview of the Interviewer Dashboard

The Interviewer dashboard offers an overview of the interviewer’s +assignments and the state of completion they are in. The tabs displayed +at the top of the dashboard sorts interviews by their status.

To navigate between the different tabs, the interviewer can either tap +on the tab at the top bar or swipe left or right. To help interviewers +differentiate between the different tabs, the color of the dashboard +will change based on which tab the interviewer is currently in. The +interface will be grey for the Create New tab, blue for +the **Started **tab, green for the Completed tab, and red for +the Rejected tab.

Information for Assignments

The card for each assignment will have a number at the top. This number +will correspond to the assignment number that Headquarters and +Supervisors user will also use to identify the assignment. Next to the +assignment number will be the number of interviews that remains to be +completed by the interviewer. This number will decrease as the +interviewer completes more interviews.

Additionally, each card will be have the identifying information for +each assignment or interview. The first three identifying variables will +be shown on the card for each assignment or interview. If there are more +than three identifying variables for the assignment, the rest will be +hidden. To reveal the other identifying information, tap once on the +assignment’s card. 


 

Interview statuses

There are four possible statuses on the Dashboard:
 

  • Create New: This tab will list all the assignments that an +interviewer has. Interviewers can create new interviews for their +assignments. To start a new interview, interviewers will tap on the +blue Start button on the assignment. If all the required +interviews for an assignment have already been created, then the +Start will be grayed out. The dashboard will be grey while in +this tab.
  • Started: This tab lists the interviews that have been started +but not yet completed. To open an incomplete interview, simply tap +once on the card for interview of interest to expand the card and +then tap the ***Open ***​button. The dashboard will be blue while in +this tab.
  • Completed: This tab contains the interviews that the interviewer +has marked as completed. Interviews in the Completed tab will be +sent to the server when the interviewer synchronizes. To open a +completed interview,simply tap once on the card for interview of +interest to expand the card and then tap the ***Open ***​button. The +dashboard will be green while in this tab.
  • Rejected: This tab contains the rejected interviews that the +supervisor has reviewed, found problems, and returned it to the +interviewer for correction. To open a completed interview, simply +tap once on the card for interview of interest to expand the card +and then tap the ***Open ***button. The dashboard will be red while +in this tab.

 

How to create a new interview

Step 1
Under the Create New tab, find the card for the assignment of +interest. Use the identifying information to find the appropriate +assignment. Tap on the card to see all the identifying information. This +will also reveal the Start. Tap on the blue Start button for +the assignment to create a new interview.

If the questionnaire is large, a load screen may appear before the +questionnaire cover page appears.

Step 2
The interviewer will see all the identifying information for that new +interview. If Headquarters has filled out the identifying variable, then +the interviewer will see the information prefilled and there will be a +lock next to that information. Interviewers will not be able to change +any identifying information that Headquarters has already filled out. +If any identifying variable was not provided by Headquarters, the +interviewer should fill out that information before starting the +interview. After filling out any necessary identifying information, +click on the blue Start at the bottom of the screen.

Step 3
You will then see a summary of all the identyfing information and links +to question level comments left by the supervisor and headquarters user. +Review the information and make sure everything is correct, and then +click on the blue Start button at the bottom of the screen to +start the interview. To view the comments, click on a red question +link. 


 

How to exit an interview

Tap on the menu button on the top right and select *Dashboard. *


 
You will be directed back to the dashboard. The incomplete interview can +now be found under the Started tab, and you can select any other +assignment.

 

How to resume an interview

Navigate to the Started tab on the Dashboard. Find the interview +that you would like to resume and tap on its card to reveal all the +identifying information. Then, tap on the blue Open button to +resume the interview. The Interviewer application will open to the first +section in the questionnaire. However, all your previous work will be +present.
 

How to discard an interview

If for some reason, you need to discard an incomplete interview, you can +tap on the 3 vertical dots on the upper right corner, and then on +the Discard button on the interview’s card after finding the +interview in the Started tab. You will be asked to confirm that you +want to delete the interview. Tap on “Yes” to confirm and interview will +be discarded. BE CAREFUL WHEN DISCARDING AN INTERVIEW, THE INFORMATION +FOR THAT INTERVIEW CANNOT BE RECOVERED ONCE DISCARDED.

\ No newline at end of file diff --git a/interviewer/app/map-dashboard/images/map_dashboard_explained.png b/interviewer/app/map-dashboard/images/map_dashboard_explained.png new file mode 100644 index 00000000..baa49ab2 Binary files /dev/null and b/interviewer/app/map-dashboard/images/map_dashboard_explained.png differ diff --git a/interviewer/app/map-dashboard/index.html b/interviewer/app/map-dashboard/index.html new file mode 100644 index 00000000..082f9e19 --- /dev/null +++ b/interviewer/app/map-dashboard/index.html @@ -0,0 +1,41 @@ +Map Dashboard +

Map Dashboard

January 3, 2024

Overview of the map dashboard

Survey Solutions map dashboard is an alternative representation of the regular +dashboard where markers on the map indicate location of respondents. An +interviewer switches to this view by pressing the map icon located in the +toolbar next to the synchronization icon on the main dashboard.

Several maps are offered for the Interviewer application (three online +maps) and (1 offline map), and more offline maps can be uploaded by the +headquarters users using the same procedure as the maps are assigned to be used +in the geography-type question. Offline maps usually occupy considerable space +in the tablet’s data storage, so only the necessary maps should be assigned to +interviewers.

The interviewer may select the map that is appropriate for the enumeration zone +that she is working from a list of loaded maps.

ESRI mapping components are utilized to visualize the map. The online maps are +provided by various copyright holders, depending on the territory and may vary +in recency and level of detail.

The map dashboard indicates location based on the value of a single GPS-location +question in the cover page (only one GPS-location question may be designated as) +identifying. This means also, that this question may be called differently in +different survey questionnaires, and Survey Solutions would still find it and +plot on the map.

Warning!

There may be assignments/interviews on the interviewer’s dashboard without +geographical position for any of the following reasons:

  • there is no GPS question in the questionnaire, or
  • location information hasn’t been preloaded into assignments, or
  • location information hasn’t been recorded yet, or
  • location of the interview is off the current visible map.

Interviewers should double-check with the regular dashboard to conclusively +establish the presence and status of a certain interview or assignment.

Map dashboard explained

  1. Menu to apply filter by questionnaire and select what to plot: assignments, +interviews, or both. When a questionnaire is selected all versions of this +questionnaire are treated as if they are the same version.

  2. Active map selector. Interviewers may select any one of the:

    • online: imagery;
    • online: imagery with labels;
    • online: open street map;
    • map of the world;
    • user-uploaded offline maps.
  3. Controls to:

    • align (rotate) the map to point in the North direction at the top of the +screen;
    • zoom in;
    • zoom out.
  4. Controls to:

    • zoom to extent of the data;
    • zoom to extent of the map;
    • show current location marker (may take time to determine position).
  5. Assignment marker - purple diamond: .

  6. Current location marker - blue circle with an arrow.

  7. Completed interview marker - green circle: .

  8. Rejected interview marker - red circle: .

  9. Started interview marker - blue circle: .

\ No newline at end of file diff --git a/interviewer/app/moving-around-the-questionnaire-/images/658448.png b/interviewer/app/moving-around-the-questionnaire-/images/658448.png new file mode 100644 index 00000000..70090052 Binary files /dev/null and b/interviewer/app/moving-around-the-questionnaire-/images/658448.png differ diff --git a/interviewer/app/moving-around-the-questionnaire-/images/658448_hu2013971891197785374.png b/interviewer/app/moving-around-the-questionnaire-/images/658448_hu2013971891197785374.png new file mode 100644 index 00000000..f5e5d365 Binary files /dev/null and b/interviewer/app/moving-around-the-questionnaire-/images/658448_hu2013971891197785374.png differ diff --git a/interviewer/app/moving-around-the-questionnaire-/images/658453.png b/interviewer/app/moving-around-the-questionnaire-/images/658453.png new file mode 100644 index 00000000..e0158d4a Binary files /dev/null and b/interviewer/app/moving-around-the-questionnaire-/images/658453.png differ diff --git a/interviewer/app/moving-around-the-questionnaire-/images/658453_hu2892110947161517179.png b/interviewer/app/moving-around-the-questionnaire-/images/658453_hu2892110947161517179.png new file mode 100644 index 00000000..8f202b2d Binary files /dev/null and b/interviewer/app/moving-around-the-questionnaire-/images/658453_hu2892110947161517179.png differ diff --git a/interviewer/app/moving-around-the-questionnaire-/images/658454.png b/interviewer/app/moving-around-the-questionnaire-/images/658454.png new file mode 100644 index 00000000..59346be8 Binary files /dev/null and b/interviewer/app/moving-around-the-questionnaire-/images/658454.png differ diff --git a/interviewer/app/moving-around-the-questionnaire-/images/658454_hu14258072865633104652.png b/interviewer/app/moving-around-the-questionnaire-/images/658454_hu14258072865633104652.png new file mode 100644 index 00000000..583ad62a Binary files /dev/null and b/interviewer/app/moving-around-the-questionnaire-/images/658454_hu14258072865633104652.png differ diff --git a/interviewer/app/moving-around-the-questionnaire-/index.html b/interviewer/app/moving-around-the-questionnaire-/index.html new file mode 100644 index 00000000..c3bd60d0 --- /dev/null +++ b/interviewer/app/moving-around-the-questionnaire-/index.html @@ -0,0 +1,49 @@ +Moving Around the Questionnaire

Moving Around the Questionnaire

July 14, 2016

Overall

Interviewers should strictly follow the survey protocol for +administering a questionnaire (e.g. asking earlier questions before +later questions, completing earlier modules before later modules), but +may occasionally need to move around the questionnaire for good reasons +(e.g. review their work, move between rows of the roster if the +respondent corrects an earlier answer, administer an independent module +when the key respondent for that module is present).

The interviewer can move around questionnaires in several ways.

 

Within a section

Swiping up and down moves within a single group of questions (e.g., a +module).
  + +  +

 

Between sections at different hierarchical levels

Within any given module, the interviewer may use breadcrumbs, +represented as links at the top of the screen, to move between different +groups of questions and sub-sections of the module. Like the breadcrumbs +in the fable of Hansel and Gretel, these pieces of the interface are +meant to help the interviewer find their path back to where they were in +the interview (e.g., moving out of a sub-section and into the main +module).

To see this, consider the image below. The interviewer is currently in a +group of questions about the Plot 2 (the title shown at the top of the +section). That group of questions falls within Parcel Roster-By the +river (the next breadcrumb), which itself falls inside the Parcel, +Plot, and Crop Details module. If the interviewer wanted to move from +the Plot 2 section to the Parcel Roster-By the river section, they +could simply click on the Parcel Roster-By the river breadcrumb. If +the interviewer wanted to move to the main part of the Parcel, Plot, +and Crop Details module from either the Parcel Roster-By the river or +the Plot 2 sections, they would only have to tap on the Parcel, Plot, +and Crop Details breadcrumb.

 

 

Between sections

The interviewer may move from one section to the next by using the +always-available navigation pane, represented by three horizontal lines +that, when pressed, expands into an interactive table of contents of the +questionnaire.

\ No newline at end of file diff --git a/interviewer/app/page/1/index.html b/interviewer/app/page/1/index.html new file mode 100644 index 00000000..50a202af --- /dev/null +++ b/interviewer/app/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/ + \ No newline at end of file diff --git a/interviewer/app/page/2/index.html b/interviewer/app/page/2/index.html new file mode 100644 index 00000000..f2d7effb --- /dev/null +++ b/interviewer/app/page/2/index.html @@ -0,0 +1,38 @@ +Overview of the App +

Overview of the App

Comments

Comments can be left for any question. This may useful to explain +answers that you have confirmed but that may appear strange or wrong to +your supervisor.

To leave a comment, press for a moment on the question of interest. +After a few seconds, a comment field will appear, into which you can +type any arbitrary long comment.

Comments can also be left for you by your supervisor. These will likely +be questions about the answers you have recorded.

July 14, 2016

Answering All Question Types

The Interviewer application allows several different types of questions: +numeric, text, single-select +categorical, multi-select categorical, +list, date, GPS, barcode, and +picture. As an interviewer, you must know how to answer each +of them. To help you with that text, each question type is briefly +explained below with visual aids.

 

Numeric

Questions that take a numeric response have a field for an open numeric +answer. When that field is tapped, the numeric keyboard appears so that +the interviewer can compose an appropriate numerical response.

July 14, 2016

Questionnaire Interface & Answering Questions

Overview of Questionnaire Interface

Answering questions

How to know when you have answered a question

There are a few ways that interviewers can know that they have +successfully answered a question. First, the question shows some answer. +Second, the tablet vibrates and the questions are surrounded by a red +outline, if the recorded answer is not valid. Vibration can be disabled +by navigating to Interviewer’s settings +and removing the checkbox next to Vibrate when invalid answer is given.

July 14, 2016
\ No newline at end of file diff --git a/interviewer/app/password-best-practices/index.html b/interviewer/app/password-best-practices/index.html new file mode 100644 index 00000000..8cd8aa74 --- /dev/null +++ b/interviewer/app/password-best-practices/index.html @@ -0,0 +1,36 @@ +Password Best Practices +

Password Best Practices

April 5, 2019

All users:

  • Do not write your password on a sticker attached to your device or in another obvious +place.
  • Do not let any other person know your password.
  • Do not rely on another person to communicate the password to you unless this is an +established procedure (in other words it is normal that the headquarters users set a +password for the interviewers, but it must be communicated directly to the interviewer, +not through another interviewer).
  • Logout (sign out) after you finish your work.
  • If you believe your password became known to another person, take immediate action - +let the supervisors know that the password is compromised, request for a new password +to be assigned to you.
  • If you’ve forgotten your password, contact your supervisor (or headquarters user) and +request for a new password to be assigned to you. Your old password can not be recovered +even by these users.

Supervisors and headquarters users, when resetting a password of an interviewer, make sure:

  • it is not easily guessed (for example, if all interviewers are issued passwords P1, P2, +P3, P4,… they will eventually figure out the sequence);
  • similarly, never assign all (or some) interviewers the same password as other interviewers +already have;
  • When passwords are communicated in writing, take measures to avoid confusion between +similarly spelled letters or digits, for example 1 (one) and l (small letter L), or l +(small letter L) and I (capital letter i), or O and 0 (capital letter o and digit zero);
  • Survey Solutions doesn’t require any of its passwords to be changed with certain +periodicity (e.g. quarterly or annually), but it is still considered to be a good practice +to periodically refresh the passwords. Warn your interviewers before you do this!
  • use different passwords for different purposes (e.g. different passwords for interviewer +accounts and for the WiFi network they connect to in the office).
\ No newline at end of file diff --git a/interviewer/app/password-reset/images/ChangePassword.png b/interviewer/app/password-reset/images/ChangePassword.png new file mode 100644 index 00000000..70d48e0e Binary files /dev/null and b/interviewer/app/password-reset/images/ChangePassword.png differ diff --git a/interviewer/app/password-reset/images/SignInOnline.png b/interviewer/app/password-reset/images/SignInOnline.png new file mode 100644 index 00000000..b7d0c46c Binary files /dev/null and b/interviewer/app/password-reset/images/SignInOnline.png differ diff --git a/interviewer/app/password-reset/index.html b/interviewer/app/password-reset/index.html new file mode 100644 index 00000000..7037bade --- /dev/null +++ b/interviewer/app/password-reset/index.html @@ -0,0 +1,66 @@ +Interviewer Password Reset +

Interviewer Password Reset

August 24, 2021

This article describes the actions in case an interviewer forgets the password +that was assigned to him/her. If you are a PDS administrator and forgot your +password, refer to another article: +PDS password reset.

Important:

  • Survey Solutions doesn’t store the passwords of interviewers in the clear +text. So if it is forgotten, no user may look it up inside Survey Solutions, +neither the Supervisors, nor the Headquarters, nor the Administrator users.

  • The interviewer may not recover his forgotten password himself (even if an +optional phone number or email were specified for his account). This requires +cooperation of the administrator user.

The practical sequence of actions is the following:

  1. Interviewer realizes he has forgotten the password and can’t login to the application.
  2. Interviewer contacts the supervisor and asks to assign a new password. This is only if the interviewer doesn’t have a direct contact to the server administrator, which is typically the case. For operations where the interviewers do have a direct contact of the server administrator, they should contact the administrator directly (steps #2,3).
  3. Supervisor passes the request of the interviewer for a change of the password to the administrator user.
  4. The administrator makes sure that he has confirmed the identity of the person requesting the password change as a legitimate interviewer (using organization’s ID/passport/or other similar identification documents), then assigns a new password, and communicates it back to the interviewer. This is a temporary password, which must be changed, before the interviewer may continue working.
  5. Interviewer enters any text to the password box at the login screen 5 times. After that +the system will suggest to login online with the message +“YOU COULD TRY TO SIGN IN ONLINE IF YOU FORGOT YOUR PASSWORD OR IT WAS RESET”.
  1. Interviewer enters the newly communicated password and presses the “Try to sign in +online” button. This step requires connection to the server, so the tablet must be online.
  2. If the password was entered incorrectly, the interviewer will receive the message +“AUTHENTICATION PROBLEM ON THE REMOTE SERVER. PLEASE CONTACT YOUR SUPERVISOR”.
  3. If the password was entered correctly, the interviewer will be asked to +change the temporary password issued by the administrator in step #4 above +to a new password, that is known only to him/her. The new password should +be utilized from this moment on by this interviewer for all logins (online +to the server and offline to the tablet’s Interviewer app).

If repetitive correct entries (in step #6) of the temporary password +(communicated in step #4) are denied, then it may be the case that:

  • there is a problem with the internet connectivity, which prevents reaching +the server from the tablet for verification of the temporary password, or
  • the account is being abused by someone who became aware of the temporary +password, has already used it to log in and has changed it to something else. +These cases are rare, but could take place if, for example, a supervisor, +becomes aware of the password when it was communicated by the administrator +to the interviewer in step #4 (if the communication was not direct, but +involving the supervisor) or by the mailbox administrator, who has access to +the mail of the members of the organization.

Warning!

All interviewers accounts are made either by headquarters or administrator +users. Any account created by them will initially be created with a temporary +password that must be changed before the interviewer can continue working. The +same applies if the account’s password was subsequently reset by the +administrator. See also: own-passwords enforcement.

If a new password was issued to an interviewer and the first login with that +password is not followed by a prompt for it to be changed then it is evidence +that that password has been compromised. Even if the interviewer can log in +and work with that password he/she should not and should insist on a new +password reset.

Note: If for any reason an interviewer’s password is changed while he is +logged in, he will not be able to synchronize: once he tries to synchronize +a message will pop up requesting him to enter the new password (password is +validated for every synchronization session even if the interviewer has +already logged in to the Interviewer app).

Note

If the interviewer is working both with an online account on the server and +with the tablet’s Interviewer App, the interviewer account password is the +same for both tools. Correspondingly, if it has been reset, the temporary +password assigned by the server administrator will be anticipated in both +tools for authentication.

If the first login after the password change was to the Interviewer App on +the tablet, then for subsequent logins online the interviewer should enter +the password he/she has selected.

If the first login after the password change was to the server online, then +the App on the tablet is still not aware of the change that took place +online, and hence the interviewer must provoke the online sign-on as +described in step #5 above.

See also:

\ No newline at end of file diff --git a/interviewer/app/progress-indicator/images/ProgressIndicator.png b/interviewer/app/progress-indicator/images/ProgressIndicator.png new file mode 100644 index 00000000..b344086c Binary files /dev/null and b/interviewer/app/progress-indicator/images/ProgressIndicator.png differ diff --git a/interviewer/app/progress-indicator/index.html b/interviewer/app/progress-indicator/index.html new file mode 100644 index 00000000..c22bf7e5 --- /dev/null +++ b/interviewer/app/progress-indicator/index.html @@ -0,0 +1,20 @@ +Interview Progress Indicator +

Interview Progress Indicator

May 11, 2020

Survey Solutions works with surveys that may contain thousands of questions, with whole sections being turned on and off dynamically, number of repetitions responding to answers in the interview and other complexities, which present a challenge for estimation of the progress. Yet at any moment of time a certain number of questions are answered (NA), and certain number of questions are not answered (NU). (These numbers were always reported at the interview completions screen.)

With the total number of questions calculated as N=NA+NU one could report a simple estimate of the progress of interview P=NA/N * 100%. This would be a rather accurate indicator in case of no conditions or repetitions in the questionnaire, but gets less accurate in the presence of these elements.

The progress indicator is reported in the interview table of contents and is recalculated after any change in the interview:

One should expect the progress to move both up or down with more answers given. The progress will increase (e.g. from 21% to 22%) if the given answer didn’t increase the total number of questions, and it will decrease if the total number of questions did increase as a result of the answer (for example, if answering the employment question opens up a whole section of questions regarding employment).

\ No newline at end of file diff --git a/interviewer/app/quality-control-marking-interviews-as-complete-/images/658863.png b/interviewer/app/quality-control-marking-interviews-as-complete-/images/658863.png new file mode 100644 index 00000000..5f75b667 Binary files /dev/null and b/interviewer/app/quality-control-marking-interviews-as-complete-/images/658863.png differ diff --git a/interviewer/app/quality-control-marking-interviews-as-complete-/images/658863_hu10412875289860363706.png b/interviewer/app/quality-control-marking-interviews-as-complete-/images/658863_hu10412875289860363706.png new file mode 100644 index 00000000..8a85e6be Binary files /dev/null and b/interviewer/app/quality-control-marking-interviews-as-complete-/images/658863_hu10412875289860363706.png differ diff --git a/interviewer/app/quality-control-marking-interviews-as-complete-/images/658864.png b/interviewer/app/quality-control-marking-interviews-as-complete-/images/658864.png new file mode 100644 index 00000000..6ea284fd Binary files /dev/null and b/interviewer/app/quality-control-marking-interviews-as-complete-/images/658864.png differ diff --git a/interviewer/app/quality-control-marking-interviews-as-complete-/images/658864_hu1725335888282740339.png b/interviewer/app/quality-control-marking-interviews-as-complete-/images/658864_hu1725335888282740339.png new file mode 100644 index 00000000..5b845e8f Binary files /dev/null and b/interviewer/app/quality-control-marking-interviews-as-complete-/images/658864_hu1725335888282740339.png differ diff --git a/interviewer/app/quality-control-marking-interviews-as-complete-/images/658865.png b/interviewer/app/quality-control-marking-interviews-as-complete-/images/658865.png new file mode 100644 index 00000000..aaa8a5e0 Binary files /dev/null and b/interviewer/app/quality-control-marking-interviews-as-complete-/images/658865.png differ diff --git a/interviewer/app/quality-control-marking-interviews-as-complete-/images/658866.png b/interviewer/app/quality-control-marking-interviews-as-complete-/images/658866.png new file mode 100644 index 00000000..90f13dee Binary files /dev/null and b/interviewer/app/quality-control-marking-interviews-as-complete-/images/658866.png differ diff --git a/interviewer/app/quality-control-marking-interviews-as-complete-/index.html b/interviewer/app/quality-control-marking-interviews-as-complete-/index.html new file mode 100644 index 00000000..490ff352 --- /dev/null +++ b/interviewer/app/quality-control-marking-interviews-as-complete-/index.html @@ -0,0 +1,53 @@ +Quality Control & Marking Interviews as Complete

Quality Control & Marking Interviews as Complete

July 14, 2016

Checking whether all questions have been answered

Quality control starts with the interviewer. The interviewer should thus +do everything within their power to ensure that all questions are +answered.

The interviewer application offers three ways to do this. The first is +the classic method that one might use with a paper questionnaire. The +interviewer simply flips the questionnaire looking for unanswered +questions or answers that have triggered red error messages.

The second, which concerns completeness, is to use the navigation panel +as a gauge of whether any questions still need to be answered. Each +element in the navigation panel is color-coded.  Green indicates that a +section is complete—that is, that all questions have been answered and +none have invalid answers. Blue denotes incomplete—that is, that some +question are unanswered. Red indicates that one or more questions in the +answer have an invalid answer—that is, an answer that violates the +validation condition.

The third method is to navigate to the module on the navigation pane +named Complete. Once on that screen, the number of unanswered and +invalid questions are displayed. The interviewer can identify the +unanswered questions by opening the navigation pane (as described +above), and navigate to errors flagged by pressing on each one on the +Complete screen.

 

Checking that all answers are valid

In addition to confirming that a questionnaire is completely answered, +the interviewer must also make sure that all answers make sense. There +are two complementary ways of doing this.

While completing the questionnaire, the interviewer will see error +messages whenever the answers provided are invalid. An invalid answer +may be one that is outside of some expected range (e.g., age should be +between 0 and 100) or one that conflicts with an answer provided +elsewhere (e.g., age conflicts with date of birth). The interviewer +should, to the extent possible, correct any errors as soon as they +arise.

After completing the questionnaire, the interviewer should check that no +errors have escaped his/her attention. To do this, the interviewer can +follow the same protocol as in the third method above for confirming +that all questions have been answered.

 

Marking an interview as complete

An interview is not automatically complete once all of the answers have +been answered. To mark a questionnaire as complete, the interviewer must +use the navigation pane to navigate to the module named Complete. Once +on that screen, the interviewer then needs to click on the Complete +button. This will mark the questionnaire as complete and be reflected in +the status of that assignment on the interviewer’s Dashboard.

\ No newline at end of file diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/658240.png b/interviewer/app/questionnaire-interface-answering-questions/images/658240.png new file mode 100644 index 00000000..9dbc6a99 Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/658240.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/658240_hu2273748763706641141.png b/interviewer/app/questionnaire-interface-answering-questions/images/658240_hu2273748763706641141.png new file mode 100644 index 00000000..58bf114e Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/658240_hu2273748763706641141.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/658261.png b/interviewer/app/questionnaire-interface-answering-questions/images/658261.png new file mode 100644 index 00000000..cdf67740 Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/658261.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/658262.png b/interviewer/app/questionnaire-interface-answering-questions/images/658262.png new file mode 100644 index 00000000..6beaf1e8 Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/658262.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/658265.png b/interviewer/app/questionnaire-interface-answering-questions/images/658265.png new file mode 100644 index 00000000..eb12bc3c Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/658265.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/658265_hu6896176132081414693.png b/interviewer/app/questionnaire-interface-answering-questions/images/658265_hu6896176132081414693.png new file mode 100644 index 00000000..ece118bb Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/658265_hu6896176132081414693.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/658267.png b/interviewer/app/questionnaire-interface-answering-questions/images/658267.png new file mode 100644 index 00000000..79dfffa8 Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/658267.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/658267_hu5868753035623574529.png b/interviewer/app/questionnaire-interface-answering-questions/images/658267_hu5868753035623574529.png new file mode 100644 index 00000000..d096cc19 Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/658267_hu5868753035623574529.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/658268.png b/interviewer/app/questionnaire-interface-answering-questions/images/658268.png new file mode 100644 index 00000000..b03a459b Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/658268.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/658268_hu18358119231796202233.png b/interviewer/app/questionnaire-interface-answering-questions/images/658268_hu18358119231796202233.png new file mode 100644 index 00000000..366e4231 Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/658268_hu18358119231796202233.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/711064.png b/interviewer/app/questionnaire-interface-answering-questions/images/711064.png new file mode 100644 index 00000000..f57819dd Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/711064.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/711064_hu4017893296959399062.png b/interviewer/app/questionnaire-interface-answering-questions/images/711064_hu4017893296959399062.png new file mode 100644 index 00000000..d640d895 Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/711064_hu4017893296959399062.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/711065.png b/interviewer/app/questionnaire-interface-answering-questions/images/711065.png new file mode 100644 index 00000000..3e36ec69 Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/711065.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/711065_hu11632476777735067511.png b/interviewer/app/questionnaire-interface-answering-questions/images/711065_hu11632476777735067511.png new file mode 100644 index 00000000..10f58815 Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/711065_hu11632476777735067511.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/711071.png b/interviewer/app/questionnaire-interface-answering-questions/images/711071.png new file mode 100644 index 00000000..efc682d8 Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/711071.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/images/711071_hu3057103556316487523.png b/interviewer/app/questionnaire-interface-answering-questions/images/711071_hu3057103556316487523.png new file mode 100644 index 00000000..4e6291ac Binary files /dev/null and b/interviewer/app/questionnaire-interface-answering-questions/images/711071_hu3057103556316487523.png differ diff --git a/interviewer/app/questionnaire-interface-answering-questions/index.html b/interviewer/app/questionnaire-interface-answering-questions/index.html new file mode 100644 index 00000000..5d256550 --- /dev/null +++ b/interviewer/app/questionnaire-interface-answering-questions/index.html @@ -0,0 +1,48 @@ +Questionnaire Interface & Answering Questions +

Questionnaire Interface & Answering Questions

July 14, 2016

Overview of Questionnaire Interface

Answering questions

How to know when you have answered a question

There are a few ways that interviewers can know that they have +successfully answered a question. First, the question shows some answer. +Second, the tablet vibrates and the questions are surrounded by a red +outline, if the recorded answer is not valid. Vibration can be disabled +by navigating to Interviewer’s settings +and removing the checkbox next to Vibrate when invalid answer is given.

However, even after a question is answered, an interviewer may want to +wait before moving to the next question. When the interviewer needs to +pause, the Interviewer application will display the following message:

An interviewer can recall an answer in any question by clicking on the X +next to their response.

How to know if you have made a mistake

After an answer is recorded, the Interviewer application automatically +assesses whether the answer is consistent with other answers in the +questionnaire or plausible based on what is known about the survey +population. If an answer is inconsistent or implausible, that answer is +considered invalid.

Questions with invalid answers are outlined in red (The tablet will also +vibrate if the feature is enabled), and accompanied by an error message +will appear describing the problem (as shown above).

Understanding groups and rosters

Groups and rosters are special grouping of questions. On the tablet, +both first appear as a button.

+

When the button is tapped, the interviewers see the questions or roster +row associated with that button.

+ +                          +

To exit the roster row, the interviewer must select the button +containing the name of the roster group or section at the bottom of the +screen.

To complete a group or roster, the interviewer simply answers all +relevant questions. For a group, this is simple. For a roster, the +process merits some explanation.

An interviewer must complete a roster row by row. By tapping on the +button associated with any given row, the interviewer will see all +questions for that item in the roster. To move back to the roster view, +click on the button at the bottom of the screen (e.g., Extension +Services).

\ No newline at end of file diff --git a/interviewer/app/synchronization/images/658870.png b/interviewer/app/synchronization/images/658870.png new file mode 100644 index 00000000..4da029a8 Binary files /dev/null and b/interviewer/app/synchronization/images/658870.png differ diff --git a/interviewer/app/synchronization/images/658872.png b/interviewer/app/synchronization/images/658872.png new file mode 100644 index 00000000..9b2d64aa Binary files /dev/null and b/interviewer/app/synchronization/images/658872.png differ diff --git a/interviewer/app/synchronization/images/658881.png b/interviewer/app/synchronization/images/658881.png new file mode 100644 index 00000000..59b11222 Binary files /dev/null and b/interviewer/app/synchronization/images/658881.png differ diff --git a/interviewer/app/synchronization/images/658881_hu10213471908545030020.png b/interviewer/app/synchronization/images/658881_hu10213471908545030020.png new file mode 100644 index 00000000..919bef60 Binary files /dev/null and b/interviewer/app/synchronization/images/658881_hu10213471908545030020.png differ diff --git a/interviewer/app/synchronization/images/658884.png b/interviewer/app/synchronization/images/658884.png new file mode 100644 index 00000000..f093292f Binary files /dev/null and b/interviewer/app/synchronization/images/658884.png differ diff --git a/interviewer/app/synchronization/images/658884_hu9897720748982773689.png b/interviewer/app/synchronization/images/658884_hu9897720748982773689.png new file mode 100644 index 00000000..cfd3bc3d Binary files /dev/null and b/interviewer/app/synchronization/images/658884_hu9897720748982773689.png differ diff --git a/interviewer/app/synchronization/images/658885.png b/interviewer/app/synchronization/images/658885.png new file mode 100644 index 00000000..c4cebf80 Binary files /dev/null and b/interviewer/app/synchronization/images/658885.png differ diff --git a/interviewer/app/synchronization/images/658885_hu4859311258478953595.png b/interviewer/app/synchronization/images/658885_hu4859311258478953595.png new file mode 100644 index 00000000..9f2f02ad Binary files /dev/null and b/interviewer/app/synchronization/images/658885_hu4859311258478953595.png differ diff --git a/interviewer/app/synchronization/index.html b/interviewer/app/synchronization/index.html new file mode 100644 index 00000000..959e42f5 --- /dev/null +++ b/interviewer/app/synchronization/index.html @@ -0,0 +1,37 @@ +Synchronization +

Synchronization

July 15, 2016

Sending completed interviews and receiving new ones

The synchronization button is how the interviewer initiates an +information exchange between their tablet and their supervisor’s laptop. +Synchronization performs two tasks. First, it automatically pushes any +completed assignment to the supervisor for review. Second, it +automatically pulls all new assignments and data collection instruments +onto the interviewer’s tablet. After synchronization is complete, the +number of new assignments received, number of completed interviews sent, +and so on are clearly displayed.
 

 

Why is my data not syncing?

  1. Error: No network. Check your network settings.

To resolve:

  • Check your Wifi connection through network connections section of +the settings menu on your device.

  • Make sure Wifi is enabled. Make sure you are connected to a network.

  1. Error: No connection to the Survey Solutions Supervisor. Please +make sure that the website is available.

To resolve:

  • Check the URL of the server. Tap on the application menu button on +the right hand corner. Click on Settings and check the server URL +under the Supervisor URL heading. If you find an error, tap on the +field to make changes.
  • If the server URL is correct, please inform your +Supervisor/Headquarters about the error.
  1. Error: Timeout when connecting to the Survey Solutions Supervisor +website. Check your internet connection.

To resolve:

  • Check the Server Response timeout settings. Tap on the application +menu button on the right hand corner. Click on Settings and tap on +the Server Response timeout field. In the pop up window, you can +increase the number of seconds allowed.
\ No newline at end of file diff --git a/interviewer/comments/index.html b/interviewer/comments/index.html new file mode 100644 index 00000000..5aea4a45 --- /dev/null +++ b/interviewer/comments/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/comments/ + \ No newline at end of file diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/646945.png b/interviewer/config/download-and-install-the-interviewer-application/images/646945.png new file mode 100644 index 00000000..4906bac7 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/646945.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/646945_hu9186001793155358694.png b/interviewer/config/download-and-install-the-interviewer-application/images/646945_hu9186001793155358694.png new file mode 100644 index 00000000..98ffe130 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/646945_hu9186001793155358694.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/646946.png b/interviewer/config/download-and-install-the-interviewer-application/images/646946.png new file mode 100644 index 00000000..b814c2e0 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/646946.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/646946_hu14383104804340869499.png b/interviewer/config/download-and-install-the-interviewer-application/images/646946_hu14383104804340869499.png new file mode 100644 index 00000000..4f09062f Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/646946_hu14383104804340869499.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/646949.png b/interviewer/config/download-and-install-the-interviewer-application/images/646949.png new file mode 100644 index 00000000..e9143b14 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/646949.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/646949_hu8476569430693826326.png b/interviewer/config/download-and-install-the-interviewer-application/images/646949_hu8476569430693826326.png new file mode 100644 index 00000000..bbac98be Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/646949_hu8476569430693826326.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/646950.png b/interviewer/config/download-and-install-the-interviewer-application/images/646950.png new file mode 100644 index 00000000..a25335e9 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/646950.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/646950_hu13036997102177922923.png b/interviewer/config/download-and-install-the-interviewer-application/images/646950_hu13036997102177922923.png new file mode 100644 index 00000000..2922bcb5 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/646950_hu13036997102177922923.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/646954.png b/interviewer/config/download-and-install-the-interviewer-application/images/646954.png new file mode 100644 index 00000000..79d4f45a Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/646954.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/646954_hu14290942700153497575.png b/interviewer/config/download-and-install-the-interviewer-application/images/646954_hu14290942700153497575.png new file mode 100644 index 00000000..8b768c13 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/646954_hu14290942700153497575.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731725.png b/interviewer/config/download-and-install-the-interviewer-application/images/731725.png new file mode 100644 index 00000000..24afc577 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731725.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731725_hu12926164970689897434.png b/interviewer/config/download-and-install-the-interviewer-application/images/731725_hu12926164970689897434.png new file mode 100644 index 00000000..d37cfb49 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731725_hu12926164970689897434.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731760.png b/interviewer/config/download-and-install-the-interviewer-application/images/731760.png new file mode 100644 index 00000000..cc506685 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731760.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731760_hu414376102584589845.png b/interviewer/config/download-and-install-the-interviewer-application/images/731760_hu414376102584589845.png new file mode 100644 index 00000000..e0462cd5 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731760_hu414376102584589845.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731762.png b/interviewer/config/download-and-install-the-interviewer-application/images/731762.png new file mode 100644 index 00000000..613d8d83 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731762.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731762_hu6045208038833056554.png b/interviewer/config/download-and-install-the-interviewer-application/images/731762_hu6045208038833056554.png new file mode 100644 index 00000000..bf433c6a Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731762_hu6045208038833056554.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731771.png b/interviewer/config/download-and-install-the-interviewer-application/images/731771.png new file mode 100644 index 00000000..3a8178aa Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731771.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731771_hu10211038916398977406.png b/interviewer/config/download-and-install-the-interviewer-application/images/731771_hu10211038916398977406.png new file mode 100644 index 00000000..6ccb298b Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731771_hu10211038916398977406.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731784.png b/interviewer/config/download-and-install-the-interviewer-application/images/731784.png new file mode 100644 index 00000000..53c92929 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731784.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731784_hu2095730825130050789.png b/interviewer/config/download-and-install-the-interviewer-application/images/731784_hu2095730825130050789.png new file mode 100644 index 00000000..1996d564 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731784_hu2095730825130050789.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731797.png b/interviewer/config/download-and-install-the-interviewer-application/images/731797.png new file mode 100644 index 00000000..0f117713 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731797.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731797_hu3872259153045519633.png b/interviewer/config/download-and-install-the-interviewer-application/images/731797_hu3872259153045519633.png new file mode 100644 index 00000000..a3a53830 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731797_hu3872259153045519633.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731802.png b/interviewer/config/download-and-install-the-interviewer-application/images/731802.png new file mode 100644 index 00000000..9f5e3e0c Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731802.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/731802_hu17986006404791157011.png b/interviewer/config/download-and-install-the-interviewer-application/images/731802_hu17986006404791157011.png new file mode 100644 index 00000000..047b23df Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/731802_hu17986006404791157011.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/774514.png b/interviewer/config/download-and-install-the-interviewer-application/images/774514.png new file mode 100644 index 00000000..54e439f1 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/774514.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/images/774514_hu3858001876343106740.png b/interviewer/config/download-and-install-the-interviewer-application/images/774514_hu3858001876343106740.png new file mode 100644 index 00000000..63400487 Binary files /dev/null and b/interviewer/config/download-and-install-the-interviewer-application/images/774514_hu3858001876343106740.png differ diff --git a/interviewer/config/download-and-install-the-interviewer-application/index.html b/interviewer/config/download-and-install-the-interviewer-application/index.html new file mode 100644 index 00000000..c35990b3 --- /dev/null +++ b/interviewer/config/download-and-install-the-interviewer-application/index.html @@ -0,0 +1,48 @@ +Download and Install the Interviewer Application +

Download and Install the Interviewer Application

June 23, 2016

Step 1: On the home screen of the tablet, click on the +Applications button. The button is usually located in the middle +of the bottom toolbar and the icon is a circle with six dots. In the +applications menu, Select Settings. Select Security and make +sure that Unknown Sources - Allow installing application from sources +other than the Play Store is selected/ticked.

+ +

Step 2: Open the Chrome browser and navigate to the address of +your server. If you are using the demo +server for testing purposes go to +https://demo.mysurvey.solutions.

Step 3: Click on the Get Interviewer App button and wait until +the download is completed. If an area question is included in the +questionnaire, make sure you also uncheck the Exclude ESRI Map +support check box.

+ +

Step 4: Go back to the home screen and select +Applications—>Downloads. Click on the last version +downloaded and choose Install.

 

+ +

Step 5: After the installation is completed, go back to the tablet’s +home screen and open the Interviewer Application.

  + +

 
Step 6: Enter the server address https://demo.mysurvey.solutions +in the Synchronization point, and the enumerator’s user name and +password. You can reveal the password typed using the eye symbol on the +corner of the text field. 

When typing the server address, pay attention to whether you should +start the address with “http” or “https”. To connect to the demo server, +users should start the address with “https”. For other servers, this may +or may not be “http”.
 

Step 7: Tap on the synchronization button

\ No newline at end of file diff --git a/interviewer/config/index.html b/interviewer/config/index.html new file mode 100644 index 00000000..3e605d1a --- /dev/null +++ b/interviewer/config/index.html @@ -0,0 +1,67 @@ +Setup and Configuration +

Setup and Configuration

Set up an interviewer tablet by scanning a QR-code

When an interviewer launches the Interviewer App for the first time she needs +to provide the following three parameters:

  • URL of the server (synchronization point),
  • login of the interviewer (account name on that server),
  • and the password of the interviewer.

Typing in the server address may be time consuming and prone to errors, so to +simplify the process Survey Solutions permits entering this information by +scanning a barcode. This is especially useful for the ITs setting up a large +number of tablets in the office for many interviewers at the start of the +survey.

August 26, 2022

Multiple interviewers using the same tablet

Survey Solutions uses device tracking mechanism where for each +interviewer account there is an indication of the currently linked +device. In short this means that at any moment any interviewer may be +utilizing only one device for data collection. Re-linking of the devices +is possible, but it has some important consequences (explained +here). 

At the same time it is still possible for multiple interviewers to use +the same tablet for data collection, but every interviewer must have a +different user account in the Android +operating system to permit this. If this is not done, once the +first interviewer initializes the connection, his name will be fixed in +Survey Solutions, and other interviewers will not be able to log in. +Refer to the Android OS documentation for supporting multiple +users on the +same tablet.

May 7, 2018

Updating the Interviewer application

Why update

There are several reasons why:

  • New features. With most releases of Survey Solutions, new +features are introduced–new question types, new user interface, new +actions, etc. To take advantage of new features, the Interviewer +application must be updated.
  • Bug fixes and performance improvements. Each releases of Survey +Solutions contains numerous bugs and performance improvements. To +avoid bugs and ensure the best performance, the Interviewer +application should be updated regularly.
  • Break with backwards compatibility. In general, older versions +of the Interviewer application will continue to work with an updated +Headquarters server. In some cases relatively rare cases, however, +new features break this backwards compatibility. When this happens, +the Interviewer application needs to be updated so that the tablet +can continue communicating with the server.

When to update

At a minimum, the Interviewer application should be updated every month. +Every two months, typically a new version of Survey Solutions is +released. In the intervening time, smaller updates and bug fixes are +released.

February 22, 2018

Interviewer App interface language/localization

The Interviewer application responds to the device language setting of the +mobile device. Localization affects the interface of the application, such as +menus, dialogs and application error messages. The languages currently +available are listed in the localization overview article.

The exact steps to change may differ slightly for different device models and +operating system versions, but described generically in this +Android HelpCenter article.

July 13, 2016

Synchronization & Completing the Interview

1. Logging in

You can log in using the user name and password that you received from +your supervisor. Tap on the eye icon to see your password to make sure +you have entered it in correctly.
  
If you cannot log in, although you are sure that the username and +password are correct, synchronise the tablet (see next step)

 

June 24, 2016

Download and Install the Interviewer Application

Step 1: On the home screen of the tablet, click on the +Applications button. The button is usually located in the middle +of the bottom toolbar and the icon is a circle with six dots. In the +applications menu, Select Settings. Select Security and make +sure that Unknown Sources - Allow installing application from sources +other than the Play Store is selected/ticked.

+ +

June 23, 2016
\ No newline at end of file diff --git a/interviewer/config/interface-localization/images/657931.png b/interviewer/config/interface-localization/images/657931.png new file mode 100644 index 00000000..6962fe42 Binary files /dev/null and b/interviewer/config/interface-localization/images/657931.png differ diff --git a/interviewer/config/interface-localization/images/657931_hu10578266664836302840.png b/interviewer/config/interface-localization/images/657931_hu10578266664836302840.png new file mode 100644 index 00000000..6446c081 Binary files /dev/null and b/interviewer/config/interface-localization/images/657931_hu10578266664836302840.png differ diff --git a/interviewer/config/interface-localization/index.html b/interviewer/config/interface-localization/index.html new file mode 100644 index 00000000..de05f314 --- /dev/null +++ b/interviewer/config/interface-localization/index.html @@ -0,0 +1,31 @@ +Interviewer App interface language/localization +

Interviewer App interface language/localization

July 13, 2016

The Interviewer application responds to the device language setting of the +mobile device. Localization affects the interface of the application, such as +menus, dialogs and application error messages. The languages currently +available are listed in the localization overview article.

The exact steps to change may differ slightly for different device models and +operating system versions, but described generically in this +Android HelpCenter article.

Note that you can still design the questionnaire itself +in any language, including the texts of +the questions, their options, instructions, and validation messages. Survey +Solutions also allows +multilingual questionnaires, +which allow switching the language even during the interview.

\ No newline at end of file diff --git a/interviewer/config/multiple-interviewers-using-the-same-tablet/index.html b/interviewer/config/multiple-interviewers-using-the-same-tablet/index.html new file mode 100644 index 00000000..1eff3698 --- /dev/null +++ b/interviewer/config/multiple-interviewers-using-the-same-tablet/index.html @@ -0,0 +1,42 @@ +Multiple interviewers using the same tablet +

Multiple interviewers using the same tablet

May 7, 2018

Survey Solutions uses device tracking mechanism where for each +interviewer account there is an indication of the currently linked +device. In short this means that at any moment any interviewer may be +utilizing only one device for data collection. Re-linking of the devices +is possible, but it has some important consequences (explained +here). 

At the same time it is still possible for multiple interviewers to use +the same tablet for data collection, but every interviewer must have a +different user account in the Android +operating system to permit this. If this is not done, once the +first interviewer initializes the connection, his name will be fixed in +Survey Solutions, and other interviewers will not be able to log in. +Refer to the Android OS documentation for supporting multiple +users on the +same tablet.

When logging in under a different account on the same tablet, the second +interviewer will have an opportunity to enter his login/password and +connect to the server without a conflict with the first interviewer.

WARNING: if an interviewer starts working under one account and later +creates a different account on the tablet and still tries to login with +the same credentials, this would be equivalent to switching to a new +device (re-linking) and will provoke the re-linking warning with the +same consequences (described +here). +Hence it is important that the interviewer continues to use the same +(Android OS) user account for logging in to Survey Solutions.

\ No newline at end of file diff --git a/interviewer/config/page/1/index.html b/interviewer/config/page/1/index.html new file mode 100644 index 00000000..22dab5d1 --- /dev/null +++ b/interviewer/config/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/ + \ No newline at end of file diff --git a/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_full.png b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_full.png new file mode 100644 index 00000000..41f5727a Binary files /dev/null and b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_full.png differ diff --git a/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_name_scanned.png b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_name_scanned.png new file mode 100644 index 00000000..a60771e1 Binary files /dev/null and b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_name_scanned.png differ diff --git a/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_name_scanned_hu2372836907616003222.png b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_name_scanned_hu2372836907616003222.png new file mode 100644 index 00000000..bbcc2e32 Binary files /dev/null and b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_name_scanned_hu2372836907616003222.png differ diff --git a/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_url_scanned.png b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_url_scanned.png new file mode 100644 index 00000000..7434a722 Binary files /dev/null and b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_url_scanned.png differ diff --git a/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_url_scanned_hu3664650539368346672.png b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_url_scanned_hu3664650539368346672.png new file mode 100644 index 00000000..33a99a9a Binary files /dev/null and b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/barcode_url_scanned_hu3664650539368346672.png differ diff --git a/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/demo_server_page.png b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/demo_server_page.png new file mode 100644 index 00000000..66e16f38 Binary files /dev/null and b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/demo_server_page.png differ diff --git a/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/demo_server_page_hu8434662214116603591.png b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/demo_server_page_hu8434662214116603591.png new file mode 100644 index 00000000..292052ef Binary files /dev/null and b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/demo_server_page_hu8434662214116603591.png differ diff --git a/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/interviewer_profile_page.png b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/interviewer_profile_page.png new file mode 100644 index 00000000..489a66d6 Binary files /dev/null and b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/interviewer_profile_page.png differ diff --git a/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/interviewer_profile_page_hu16609789526619911516.png b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/interviewer_profile_page_hu16609789526619911516.png new file mode 100644 index 00000000..d6a083b9 Binary files /dev/null and b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/images/interviewer_profile_page_hu16609789526619911516.png differ diff --git a/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/index.html b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/index.html new file mode 100644 index 00000000..89e040b8 --- /dev/null +++ b/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/index.html @@ -0,0 +1,36 @@ +Set up an interviewer tablet by scanning a QR-code +

Set up an interviewer tablet by scanning a QR-code

August 26, 2022

When an interviewer launches the Interviewer App for the first time she needs +to provide the following three parameters:

  • URL of the server (synchronization point),
  • login of the interviewer (account name on that server),
  • and the password of the interviewer.

Typing in the server address may be time consuming and prone to errors, so to +simplify the process Survey Solutions permits entering this information by +scanning a barcode. This is especially useful for the ITs setting up a large +number of tablets in the office for many interviewers at the start of the +survey.

Survey Solutions displays two kinds of QR-codes:

  1. Server QR-codes;
  2. Account QR-codes.

1. Server QR-codes

The URL encoded in this QR-code is actually the URL of the Interviewer App on +the server, but when setting up the application, it knows how to cut it down to +just the server address, so the same QR-code can serve two purposes:

  • to download the Interviewer App;
  • to enter the synchronization point to it.

These QR-codes are displayed on the Interviewer App download page. If the +Interviewer App has not been installed yet on the tablet, we can quickly +navigate to the server page by scanning such a QR-code with any +qrcode scanner +that might be already installed on the tablet, and then download the +Interviewer App.

Once the Interviewer App is installed and running, we can scan this QR-code by clicking on the QR-code icon at the login screen and scan the same code to enter the synchronization point:

2. Account QR-codes

The second kind of QR-codes shown by Survey Solutions contains the address of +the server and the interviewer account name and is displayed at the interviewer +profile page:

When this QR-code is scanned both server address and the interviewer account name are read in:

Warning:

Survey Solutions never places the account password into the QR-code for +security reasons.
\ No newline at end of file diff --git a/interviewer/config/synchronization-completing-the-interview/images/648320.png b/interviewer/config/synchronization-completing-the-interview/images/648320.png new file mode 100644 index 00000000..1298f166 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648320.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/648320_hu16394120354752350853.png b/interviewer/config/synchronization-completing-the-interview/images/648320_hu16394120354752350853.png new file mode 100644 index 00000000..4887f916 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648320_hu16394120354752350853.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/648321.png b/interviewer/config/synchronization-completing-the-interview/images/648321.png new file mode 100644 index 00000000..4883d373 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648321.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/648321_hu14939636621508727450.png b/interviewer/config/synchronization-completing-the-interview/images/648321_hu14939636621508727450.png new file mode 100644 index 00000000..d2352fbc Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648321_hu14939636621508727450.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/648323.png b/interviewer/config/synchronization-completing-the-interview/images/648323.png new file mode 100644 index 00000000..1b6a8308 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648323.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/648323_hu9466947725723382894.png b/interviewer/config/synchronization-completing-the-interview/images/648323_hu9466947725723382894.png new file mode 100644 index 00000000..b52856a1 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648323_hu9466947725723382894.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/648327.png b/interviewer/config/synchronization-completing-the-interview/images/648327.png new file mode 100644 index 00000000..a6b3196e Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648327.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/648327_hu16429963311575203850.png b/interviewer/config/synchronization-completing-the-interview/images/648327_hu16429963311575203850.png new file mode 100644 index 00000000..4c8a802f Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648327_hu16429963311575203850.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/648333.png b/interviewer/config/synchronization-completing-the-interview/images/648333.png new file mode 100644 index 00000000..6aff9c71 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648333.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/648333_hu6070091503122049416.png b/interviewer/config/synchronization-completing-the-interview/images/648333_hu6070091503122049416.png new file mode 100644 index 00000000..e01f4e2f Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648333_hu6070091503122049416.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/648341.png b/interviewer/config/synchronization-completing-the-interview/images/648341.png new file mode 100644 index 00000000..672735b6 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648341.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/648341_hu2159312643986689794.png b/interviewer/config/synchronization-completing-the-interview/images/648341_hu2159312643986689794.png new file mode 100644 index 00000000..ba4f3764 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648341_hu2159312643986689794.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/648342.png b/interviewer/config/synchronization-completing-the-interview/images/648342.png new file mode 100644 index 00000000..64b224df Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648342.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/648342_hu15144774918729278699.png b/interviewer/config/synchronization-completing-the-interview/images/648342_hu15144774918729278699.png new file mode 100644 index 00000000..a7190cc3 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/648342_hu15144774918729278699.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/794969.png b/interviewer/config/synchronization-completing-the-interview/images/794969.png new file mode 100644 index 00000000..9b8e2f2f Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/794969.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/794969_hu15291367171980748445.png b/interviewer/config/synchronization-completing-the-interview/images/794969_hu15291367171980748445.png new file mode 100644 index 00000000..acf236a8 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/794969_hu15291367171980748445.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/795440.png b/interviewer/config/synchronization-completing-the-interview/images/795440.png new file mode 100644 index 00000000..120db9d4 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/795440.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/795440_hu4430760159887165323.png b/interviewer/config/synchronization-completing-the-interview/images/795440_hu4430760159887165323.png new file mode 100644 index 00000000..a5bfd8b5 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/795440_hu4430760159887165323.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/795444.png b/interviewer/config/synchronization-completing-the-interview/images/795444.png new file mode 100644 index 00000000..52a33a30 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/795444.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/images/795444_hu2630354035960390003.png b/interviewer/config/synchronization-completing-the-interview/images/795444_hu2630354035960390003.png new file mode 100644 index 00000000..76dc4008 Binary files /dev/null and b/interviewer/config/synchronization-completing-the-interview/images/795444_hu2630354035960390003.png differ diff --git a/interviewer/config/synchronization-completing-the-interview/index.html b/interviewer/config/synchronization-completing-the-interview/index.html new file mode 100644 index 00000000..4cf39f98 --- /dev/null +++ b/interviewer/config/synchronization-completing-the-interview/index.html @@ -0,0 +1,57 @@ +Synchronization & Completing the Interview +

Synchronization & Completing the Interview

June 24, 2016

1. Logging in

You can log in using the user name and password that you received from +your supervisor. Tap on the eye icon to see your password to make sure +you have entered it in correctly.
  
If you cannot log in, although you are sure that the username and +password are correct, synchronise the tablet (see next step)

 

2. Synchronize

You should synchronize your tablet as often as your supervisor has +instructed you to.
 
Synchronization requires internet access. To synchronize, press the +“Synchronize” button at the top right corner of the toolbar. The results +of the synchronization will be displayed: how many new assignments were +received, how many were received as rejected and so on. 

3.The dashboard

The dashboard contains the list of sampling units that you need to +visit. When you approach one of the listed sampling units, select the +corresponding entry to start the interview. For more information about +the Interviewer dashboard, refer to this +article.

 

4. Navigating through the interview

Use the button on the upper left side of the screen to get access to the +list of all the sections of the questionnaire.

 
Click on the name of the section to quickly move there.

 

5. Validation

 
After you have answered the question, the frame around it can turn red. +If the color does not change, then the answer to the question probably +doesn’t contain any errors. If it is red, the answer is not the expected +one. An accompanying error message may give you more information about +what went wrong.

 

6. Your progress

 
Survey Solutions uses a simple scheme for communicating to interviewers +the status of each section. Green indicates that a section is +complete—that is, that all questions have been answered and none have +invalid answers. Blue denotes incomplete—that is, that some question are +unanswered. Red indicates that one or more questions in the answer have +an invalid answer—that is, an answer that violates the validation +condition. 

 

7. Adding comments

Tap and hold your finger on the text of the question to enable the +comment field.

 

Comments can be used to provide further explanation to respondent’s +answers that can be shared with your supervisor.
 

8. Completing the interview

To complete the interview, click on the button on the top left of the +screen and click on the Complete button at the bottom of the menu. You +will see a summary screen. The number next to the Unanswered  button +indicates how many questions have been left unanswered. Similarly, the +Errors button provides the number of questions with invalid answers. +You can write in the Note for supervisor field any comments or +observations that you would like to share with your supervisor. When you +are sure that the interview is completed, press Complete to finish it +and return to the Dashboard, where you will be able to select another +household and start a new interview.

Data will not be available for your supervisors until you synchronize +your tablet. As soon as an internet connection is available, you are +advised to synchronize your tablet.
 

+

\ No newline at end of file diff --git a/interviewer/config/updating-the-interviewer-application/images/858257.png b/interviewer/config/updating-the-interviewer-application/images/858257.png new file mode 100644 index 00000000..515fd139 Binary files /dev/null and b/interviewer/config/updating-the-interviewer-application/images/858257.png differ diff --git a/interviewer/config/updating-the-interviewer-application/images/858257_hu2025537392828664606.png b/interviewer/config/updating-the-interviewer-application/images/858257_hu2025537392828664606.png new file mode 100644 index 00000000..be3446a1 Binary files /dev/null and b/interviewer/config/updating-the-interviewer-application/images/858257_hu2025537392828664606.png differ diff --git a/interviewer/config/updating-the-interviewer-application/images/858258.png b/interviewer/config/updating-the-interviewer-application/images/858258.png new file mode 100644 index 00000000..981795c3 Binary files /dev/null and b/interviewer/config/updating-the-interviewer-application/images/858258.png differ diff --git a/interviewer/config/updating-the-interviewer-application/images/858258_hu14103191292292497043.png b/interviewer/config/updating-the-interviewer-application/images/858258_hu14103191292292497043.png new file mode 100644 index 00000000..9c2ad8a4 Binary files /dev/null and b/interviewer/config/updating-the-interviewer-application/images/858258_hu14103191292292497043.png differ diff --git a/interviewer/config/updating-the-interviewer-application/images/858259.png b/interviewer/config/updating-the-interviewer-application/images/858259.png new file mode 100644 index 00000000..2b333c0e Binary files /dev/null and b/interviewer/config/updating-the-interviewer-application/images/858259.png differ diff --git a/interviewer/config/updating-the-interviewer-application/images/858259_hu16781651757599314244.png b/interviewer/config/updating-the-interviewer-application/images/858259_hu16781651757599314244.png new file mode 100644 index 00000000..6dee2f0a Binary files /dev/null and b/interviewer/config/updating-the-interviewer-application/images/858259_hu16781651757599314244.png differ diff --git a/interviewer/config/updating-the-interviewer-application/images/858260.png b/interviewer/config/updating-the-interviewer-application/images/858260.png new file mode 100644 index 00000000..73701667 Binary files /dev/null and b/interviewer/config/updating-the-interviewer-application/images/858260.png differ diff --git a/interviewer/config/updating-the-interviewer-application/images/858260_hu1452615215922062861.png b/interviewer/config/updating-the-interviewer-application/images/858260_hu1452615215922062861.png new file mode 100644 index 00000000..1f93a0b6 Binary files /dev/null and b/interviewer/config/updating-the-interviewer-application/images/858260_hu1452615215922062861.png differ diff --git a/interviewer/config/updating-the-interviewer-application/images/858262.png b/interviewer/config/updating-the-interviewer-application/images/858262.png new file mode 100644 index 00000000..31ee9362 Binary files /dev/null and b/interviewer/config/updating-the-interviewer-application/images/858262.png differ diff --git a/interviewer/config/updating-the-interviewer-application/images/858262_hu8656280478091279203.png b/interviewer/config/updating-the-interviewer-application/images/858262_hu8656280478091279203.png new file mode 100644 index 00000000..09d2e0f3 Binary files /dev/null and b/interviewer/config/updating-the-interviewer-application/images/858262_hu8656280478091279203.png differ diff --git a/interviewer/config/updating-the-interviewer-application/index.html b/interviewer/config/updating-the-interviewer-application/index.html new file mode 100644 index 00000000..b8833e3a --- /dev/null +++ b/interviewer/config/updating-the-interviewer-application/index.html @@ -0,0 +1,51 @@ +Updating the Interviewer application +

Updating the Interviewer application

February 22, 2018

Why update

There are several reasons why:

  • New features. With most releases of Survey Solutions, new +features are introduced–new question types, new user interface, new +actions, etc. To take advantage of new features, the Interviewer +application must be updated.
  • Bug fixes and performance improvements. Each releases of Survey +Solutions contains numerous bugs and performance improvements. To +avoid bugs and ensure the best performance, the Interviewer +application should be updated regularly.
  • Break with backwards compatibility. In general, older versions +of the Interviewer application will continue to work with an updated +Headquarters server. In some cases relatively rare cases, however, +new features break this backwards compatibility. When this happens, +the Interviewer application needs to be updated so that the tablet +can continue communicating with the server.

When to update

At a minimum, the Interviewer application should be updated every month. +Every two months, typically a new version of Survey Solutions is +released. In the intervening time, smaller updates and bug fixes are +released.

How to know when update are available

For Headquarters and Supervisor users, the Teams and Roles > +Interviewers tab provides a report of which version of Interviewer each +interviewer is using. If application used is old, the cell in the APP +VERSION column will appear in red.

To navigate there, follow these steps. For Headquarters, click on Teams +and Roles, and then select Interviewers. For Supervisor, simply click on +Teams and Roles.

For Interviewers, the Diagnostics dialog of the Interviewer App +provides an easy tool for checking whether a new version of Interviewer +is available. The steps for doing so are discussed immediately below.

How to update

First, select Diagnostics from the Interview application’s overflow +menu


Then, tap on Check for a new version to check whether a newer version of +Interviewer exists than the one currently installed on the tablet.

If the Interviewer application is up to date, the Check for new version +prompt will say so.

If a newer version of the Interviewer application is available, tap on +the UPDATE button to download and install it.

Note: to minimize the amount of data used for this operation, the +Interviewer application will fetch the updates only, not the large file +that is used for a fresh download of Interviewers.

If the process outlined above does not work, or if users need a +different mechanism, the Interviewer application can always be +downloaded from the Headquarters website and installed. To learn how, +refer to this article.

\ No newline at end of file diff --git a/interviewer/consequences-of-relinking-a-tablet-device/index.html b/interviewer/consequences-of-relinking-a-tablet-device/index.html new file mode 100644 index 00000000..dfc1a957 --- /dev/null +++ b/interviewer/consequences-of-relinking-a-tablet-device/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/ + \ No newline at end of file diff --git a/interviewer/index.html b/interviewer/index.html new file mode 100644 index 00000000..3b5fe93d --- /dev/null +++ b/interviewer/index.html @@ -0,0 +1,169 @@ +Interviewer +

Interviewer

Web Interviewer Retraining Instructions

Collecting data with Survey Solutions over the phone

Online approach utilizing any computer with a web-browser

This approach is most suitable for the interviewers working at a location with stable/responsive internet connectivity. +The functionality and interface of the web-interviewer is also described in the pages linked from here. +It is recommended that these generic instructions are reviewed and customized by survey administrators for each particular survey. +The article is oriented on the agencies already having experience in using Survey Solutions for face-to-face (CAPI) surveys and in need to re-orient their operations for the telephone surveys.

March 10, 2021

Web Interviewer CATI

Use in call-centres / CATI

One specific scenario where the use of web interviewer is particularly handy is +in conducting telephone surveys. In this case a call-centre is usually set up, +with interviewers working from this office by reaching out the respondents by +phone. The identifying fields of assignments are supposed to be pre-filled with +the proper phone numbers that the interviewers will dial to get a response.

November 4, 2020

Web Interviewer Overview

Web interviewer is a facility of Survey Solutions allowing the interviewers to work from the server, similar to supervisors and headquarter users.

Similarly to the Interviewer App on the tablet, the web interviewer allows interviewers to view their dashboard and conduct interviews. There are, however, some differences between the web interviewer and the Interviewer App:

Interviewer AppWeb Interviewer
DevicesAndroid-based tabletsAny devices with a web-browser
Access to internetRequired for synchronization onlyRequired all the time
Interviews appear on the serverAfter synchronization of tablet completed interviews will appear in status *Completed*, incomplete interviews don't appear.Immediately as interviews started in status *InterviewerAssigned*, after completion in status *Completed*.
Question types and design structuresLimitations:
  • matrix presentation of categorical questions (will appear as series of individual questions);
  • table presentation of rosters (will appear as roster with item buttons).
Limitations:
  • Geography question not supported;
  • Barcode question (will appear as text);
  • Picture question (upload image only).

Further articles explain particular aspects of working with the the web interviewer:

March 30, 2020

Web Interviewer Login

Headquarters and administrator users may create new interviewer accounts. There is no separate web interviewer account. Every interviewer can login to the data server (synchronization point) with their assigned interviewer credentials.

Logging in to the server is usually not required in face-to-face CAPI surveys conducted with tablets. +After successfully logging in, the interviewer can review his/her interviewer profile:

The link to edit personal information (full name, contact phone, and email) is available if permitted by the corresponding setting specified by the server administrator.

March 30, 2020

Web Interviewer Important Notes

To prevent collisions of multiple versions of the same interview, the interviewer +is expected to utilize only one tool for each interview - either a tablet +interviewer app or a web interviewer.

An interview may be started with the web interviewer, and then continued on the +tablet after the interviewer initializes and synchronizes it. In this case all the +started interviews are marked as received by the tablet, and are still visible on +the server (in web interviewer, as well as for the supervisor and HQ users). But +the interviewer should not and may not make any changes to the interview since it +was already received on the tablet. If he/she tries to do such a change, an error +message will be indicated and the software will refuse the change:

March 30, 2020

Web Interviewer Dashboard

Web interviewers have access to a dashboard equivalent in functionality to the dashboart of the tablet Interviewer App:

Dashboard tabs (pages)

The dashboard contains the following tabs (pages):

TabShows
start newassignments, on which new interviews are possible to start.
startedinterviews, which have been started by this interviewer, +but not completed yet.
rejectedinterviews, which have been completed earlier, but then rejected by the supervisor/HQ users to this interviewer.
completedinterviews completed by this interviewer, but not yet approved or rejected by the supervisor.

Search

Interviewers may utilize the search box located above the table to find +an interview with known interview key or value of an identifying question:

March 30, 2020

Web Interviewer Interviewing

Web interviewers can conduct interviews as per their effective assignments. +To start a new interview, the interviewer switches to the ‘Create new’ +tab and decides which interview to start by inspecting the identifying questions +visible in the assignments table, as well as any comments by the supervisor/HQ, +which may be left by them (last column). Once the interviewer is ready to start +the interview he/she clicks on it and confirms by selecting the corresponding +item in the menu that appears:

March 30, 2020

Consequences of relinking a tablet device

When an interviewer account is +created +at the HQ, an interviewer may connect from any tablet. Once the +interviewer has signed in, that device ID is remembered and the +interviewer must continue using the same tablet.

No other interviewer will be permitted to use the same device: they will +not be able to enter their username unless the interviewer app is +uninstalled (with immediate loss of all unsynchronized data).

July 16, 2020

Troubleshooting

Interviewers in all surveys are to contact their respective survey +managers/supervisors first, who will take reasonable efforts to +determine the cause of the issue and possible solution including +describing the issue and searching for similar issues in the +users' forum and this +support site.

If the issue is determined to be caused by the Survey Solutions +code, it should be elevated to the developers including a detailed +description, steps to reproduce the issue, etc. See more in the +FAQ for email support.

There are special pages dedicated to common problems, such as +synchronization problems for tablets. Make sure you read and +follow the standard troubleshooting advice before elevating it to the +developers. Include the description of the conclusion of the relevant +standard advice, this will help in determining the proper recommendation.

The support team may advise you to utilize certain diagnostics +tools embedded in the interviewer application or change certain +settings. You can read more about this in the corresponding articles:

January 8, 2020

Interviewer App Settings Dialog

Interviewers normally should not change any of the settings on this page, +but may be required to do so based on the instructions of their supervisors +or technical support.

Some combinations or values of these settings may cause errors in +operation/synchronization. Change these settings only if you know what you +are doing.

If you do make any changes compared to the default values, and you are +requesting support from the development team, you must mention in your +question, issue description, or the support request, which settings you've +changed and which values you've specified.

GPS receive timeoutDesired accuracy of GPS questionsShow location on mapVibrate when invalid answer is givenAllow synchronization with HeadquartersSupervisor URLServer response timeoutCommunication package sizeEvent chunk sizeDevice IDApplication version

Below is a brief description of these settings.

January 8, 2020

Interviewer App Diagnostics Dialog

The Diagnostics dialog provides tools for troubleshooting. Most of these tools require the tablet to be online (connected to the Internet). The Survey Solutions support may instruct you to use one or the other tool from the below toolset.

Check for new versionTest bandwidth to the serverSend trace logsCollect and sent to HQ all tablet informationGenerate support packageShare all technical information

Below is the explanation of these tools with some example illustrations (NB clickable items below).

January 8, 2020

Synchronization problems

Synchronization of the data between the tablet and server is a highly +complex process of communication during which a number of actions are +undertaken on both ends based on the flow of incoming data. Survey +Solutions hides the complexity of it behind a simple Synchronize button +available to the interviewer at any time. Normally, when synchronization +is completed successfully, the interviewer receives a confirmation +message and some summary statistics describing the actions taken (such +as number of received assignments or transferred interviews).

May 16, 2018

Overlap Detection

Overlap detection is feature in Survey Solutions’ geography +question. +It is applicable only to the geography questions +placed in a roster. When activated by the questionnaire +designer, it will assist the interviewers in marking the +areas in such a way that there is no overlap between +multiple marked plots/parcels. This is important to avoid +double-counting of any area in calculation of the total +area.

If an overlap is detected, the program signals about it at +the bottom of the map, mentioning the other roster items +with which an overlap was detected. Overlap detection works +instantaneously, even if the answer to the question has not +been saved yet.

December 15, 2022

CATI Interviewer Retraining Instructions

Collecting data with Survey Solutions over the phone

Offline approach utilizing tablets

This approach is most suitable for the interviewers working at a location with poor/slow/not-reliable internet connectivity. It is recommended that these generic instructions are reviewed and customized by survey administrators for each particular survey. +The article is oriented on the agencies already having experience in using Survey Solutions for face-to-face (CAPI) surveys and in need to re-orient their operations for the telephone surveys.

March 30, 2020

Setting photo size and quality

Survey Solutions v5.22 automatically +restricts the size of the images captured by the Interviewer App (see +limits).
The information below is applicable only if you wish to produce files +even smaller than those automatically produced.

Survey Solutions image (picture) question does not specify any +particular size or quality of the photo to be captured with the tablet’s +camera. Instead Survey Solutions captures the image supplied by a +standard picture provider (typically the Camera application) installed +in the OS Android. This allows Survey Solutions to benefit from controls +and effects present in such a provider.

March 16, 2017

Set up an interviewer tablet by scanning a QR-code

When an interviewer launches the Interviewer App for the first time she needs +to provide the following three parameters:

  • URL of the server (synchronization point),
  • login of the interviewer (account name on that server),
  • and the password of the interviewer.

Typing in the server address may be time consuming and prone to errors, so to +simplify the process Survey Solutions permits entering this information by +scanning a barcode. This is especially useful for the ITs setting up a large +number of tablets in the office for many interviewers at the start of the +survey.

August 26, 2022

Multiple interviewers using the same tablet

Survey Solutions uses device tracking mechanism where for each +interviewer account there is an indication of the currently linked +device. In short this means that at any moment any interviewer may be +utilizing only one device for data collection. Re-linking of the devices +is possible, but it has some important consequences (explained +here). 

At the same time it is still possible for multiple interviewers to use +the same tablet for data collection, but every interviewer must have a +different user account in the Android +operating system to permit this. If this is not done, once the +first interviewer initializes the connection, his name will be fixed in +Survey Solutions, and other interviewers will not be able to log in. +Refer to the Android OS documentation for supporting multiple +users on the +same tablet.

May 7, 2018

Updating the Interviewer application

Why update

There are several reasons why:

  • New features. With most releases of Survey Solutions, new +features are introduced–new question types, new user interface, new +actions, etc. To take advantage of new features, the Interviewer +application must be updated.
  • Bug fixes and performance improvements. Each releases of Survey +Solutions contains numerous bugs and performance improvements. To +avoid bugs and ensure the best performance, the Interviewer +application should be updated regularly.
  • Break with backwards compatibility. In general, older versions +of the Interviewer application will continue to work with an updated +Headquarters server. In some cases relatively rare cases, however, +new features break this backwards compatibility. When this happens, +the Interviewer application needs to be updated so that the tablet +can continue communicating with the server.

When to update

At a minimum, the Interviewer application should be updated every month. +Every two months, typically a new version of Survey Solutions is +released. In the intervening time, smaller updates and bug fixes are +released.

February 22, 2018

Interviewer App interface language/localization

The Interviewer application responds to the device language setting of the +mobile device. Localization affects the interface of the application, such as +menus, dialogs and application error messages. The languages currently +available are listed in the localization overview article.

The exact steps to change may differ slightly for different device models and +operating system versions, but described generically in this +Android HelpCenter article.

July 13, 2016

Synchronization & Completing the Interview

1. Logging in

You can log in using the user name and password that you received from +your supervisor. Tap on the eye icon to see your password to make sure +you have entered it in correctly.
  
If you cannot log in, although you are sure that the username and +password are correct, synchronise the tablet (see next step)

 

June 24, 2016

Download and Install the Interviewer Application

Step 1: On the home screen of the tablet, click on the +Applications button. The button is usually located in the middle +of the bottom toolbar and the icon is a circle with six dots. In the +applications menu, Select Settings. Select Security and make +sure that Unknown Sources - Allow installing application from sources +other than the Play Store is selected/ticked.

+ +

June 23, 2016

Comments

Comments can be left for any question. This may useful to explain +answers that you have confirmed but that may appear strange or wrong to +your supervisor.

To leave a comment, press for a moment on the question of interest. +After a few seconds, a comment field will appear, into which you can +type any arbitrary long comment.

Comments can also be left for you by your supervisor. These will likely +be questions about the answers you have recorded.

July 14, 2016

Answering All Question Types

The Interviewer application allows several different types of questions: +numeric, text, single-select +categorical, multi-select categorical, +list, date, GPS, barcode, and +picture. As an interviewer, you must know how to answer each +of them. To help you with that text, each question type is briefly +explained below with visual aids.

 

Numeric

Questions that take a numeric response have a field for an open numeric +answer. When that field is tapped, the numeric keyboard appears so that +the interviewer can compose an appropriate numerical response.

July 14, 2016

Questionnaire Interface & Answering Questions

Overview of Questionnaire Interface

Answering questions

How to know when you have answered a question

There are a few ways that interviewers can know that they have +successfully answered a question. First, the question shows some answer. +Second, the tablet vibrates and the questions are surrounded by a red +outline, if the recorded answer is not valid. Vibration can be disabled +by navigating to Interviewer’s settings +and removing the checkbox next to Vibrate when invalid answer is given.

July 14, 2016
\ No newline at end of file diff --git a/interviewer/interface-localization/index.html b/interviewer/interface-localization/index.html new file mode 100644 index 00000000..760cfd02 --- /dev/null +++ b/interviewer/interface-localization/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/interface-localization/ + \ No newline at end of file diff --git a/interviewer/interviewer-dashboard-managing-the-workload/index.html b/interviewer/interviewer-dashboard-managing-the-workload/index.html new file mode 100644 index 00000000..9636b069 --- /dev/null +++ b/interviewer/interviewer-dashboard-managing-the-workload/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/interviewer-dashboard-managing-the-workload/ + \ No newline at end of file diff --git a/interviewer/moving-around-the-questionnaire-/index.html b/interviewer/moving-around-the-questionnaire-/index.html new file mode 100644 index 00000000..85bdfdf5 --- /dev/null +++ b/interviewer/moving-around-the-questionnaire-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/moving-around-the-questionnaire-/ + \ No newline at end of file diff --git a/interviewer/multiple-interviewers-using-the-same-tablet/index.html b/interviewer/multiple-interviewers-using-the-same-tablet/index.html new file mode 100644 index 00000000..129f6827 --- /dev/null +++ b/interviewer/multiple-interviewers-using-the-same-tablet/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/multiple-interviewers-using-the-same-tablet/ + \ No newline at end of file diff --git a/interviewer/quality-control-marking-interviews-as-complete-/index.html b/interviewer/quality-control-marking-interviews-as-complete-/index.html new file mode 100644 index 00000000..84fd51e3 --- /dev/null +++ b/interviewer/quality-control-marking-interviews-as-complete-/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/quality-control-marking-interviews-as-complete-/ + \ No newline at end of file diff --git a/interviewer/questionnaire-interface-answering-questions/index.html b/interviewer/questionnaire-interface-answering-questions/index.html new file mode 100644 index 00000000..6de6b8bf --- /dev/null +++ b/interviewer/questionnaire-interface-answering-questions/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/questionnaire-interface-answering-questions/ + \ No newline at end of file diff --git a/interviewer/set-up-an-interviewer-tablet-by-scanning-a-barcode/index.html b/interviewer/set-up-an-interviewer-tablet-by-scanning-a-barcode/index.html new file mode 100644 index 00000000..9ea2dd48 --- /dev/null +++ b/interviewer/set-up-an-interviewer-tablet-by-scanning-a-barcode/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/set-up-an-interviewer-tablet-by-scanning-a-barcode/ + \ No newline at end of file diff --git a/interviewer/setting-photo-size-and-quality/index.html b/interviewer/setting-photo-size-and-quality/index.html new file mode 100644 index 00000000..4ca679c5 --- /dev/null +++ b/interviewer/setting-photo-size-and-quality/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/special/setting-photo-size-and-quality/ + \ No newline at end of file diff --git a/interviewer/shape-file-overlay/index.html b/interviewer/shape-file-overlay/index.html new file mode 100644 index 00000000..fbfecd35 --- /dev/null +++ b/interviewer/shape-file-overlay/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/mapsmanage/shapefile-maps/ + \ No newline at end of file diff --git a/interviewer/special/cati/images/interviewer_icon.png b/interviewer/special/cati/images/interviewer_icon.png new file mode 100644 index 00000000..1f29a8d2 Binary files /dev/null and b/interviewer/special/cati/images/interviewer_icon.png differ diff --git a/interviewer/special/cati/index.html b/interviewer/special/cati/index.html new file mode 100644 index 00000000..85081140 --- /dev/null +++ b/interviewer/special/cati/index.html @@ -0,0 +1,30 @@ +CATI Interviewer Retraining Instructions +

CATI Interviewer Retraining Instructions

March 30, 2020

Collecting data with Survey Solutions over the phone

Offline approach utilizing tablets

This approach is most suitable for the interviewers working at a location with poor/slow/not-reliable internet connectivity. It is recommended that these generic instructions are reviewed and customized by survey administrators for each particular survey. +The article is oriented on the agencies already having experience in using Survey Solutions for face-to-face (CAPI) surveys and in need to re-orient their operations for the telephone surveys.

Requirements

  1. A phone (any phone will be suitable as long as it is compatible with the cellular provider in your area).
  2. The tablet that was issued to you by the statistical office.
  3. Possibility to connect to the internet for synchronization
  4. Address of the server, interviewer login name and password (these will be communicated to you from the stats office).
  5. Access to an electric outlet/power to recharge the tablet and the charger/cable suitable for your tablet model.

Before you start

Before you start collecting the interviews, find in your tablet the Survey Solutions Interviewer application. Its icon looks like this:

Click on it and enter exactly the three parameters you’ve got from the statistical office: the server address (synchronization point), the login, and the password. Connect to the internet and click SIGN IN. You will see the SYNCHRONIZE button if you’ve entered all three parameters exactly. If there was any error, or you are not online, the software will not let you in.

If you can’t find the Interviewer App it may not have been installed for you in the office. In this case either get back to the office or contact it by phone to follow the instructions of the local IT-support person who will guide you through the installation process.

Daily algorithm

On any day when you work, follow this algorithm:

  1. At the beginning of your shift, connect to the internet, login to the Interviewer App, and synchronize by pressing the SYNCHRONIZE button in the dashboard. It is important that you complete synchronization. If for any reason (typically connectivity/signal strength) your synchronization doesn’t succeed, you will see an error message and need to repeat the synchronization by pressing the same button again.
  2. After synchronization completes you will receive one or more assignments and possibly rejected interviews. Each is appearing as a card on your dashboard.
  3. Each card contains a field named PHONE with a phone number.
  4. Cards may also contain a person’s name and other identifying information, and possibly a comment on when the number should be dialed. If there is no comment on when to dial, that phone may be called at any time.
  5. Review the cards and determine which one you can contact next. If you have any interviews rejected by your supervisor, give them the priority, then the started interviews that you haven’t finalized, then all the remaining interviews.
  6. Open the interview by clicking the OPEN button on the interview (or START NEW for new interviews).
  7. Take the phone and dial the phone number you are seeing on the interview cover page.
  8. Listen carefully. You may end up in one of the situations below. You will need to mark this situation in the contact outcome in the interview. (Only frequent situations are listed here, your particular questionnaire may provide additional options). +A) The phone is not answered after at least 1 minute of waiting (or the longest allowed by your operator); +B) You get a busy signal; +C) The phone is answered and immediately hang up; +D) The phone is answered by an answering machine; +E) The phone is answered by a FAX or a modem device. +F) The phone is answered by a person. +G) The operator tells you that the phone is not valid or not in service. +H) The operator tells you that connection is not possible at this time. +Z) All other outcomes.
  9. Make sure you record the result of the contact attempt in the interview. Depending on the result of the contact attempt you will:
  • If the phone is answered by a person (f), proceed with the interview.
  • For (a), (b), ( c), (d), and (h) try to reach the same number at a later time.
  • For (e), (g), and (z) you reach the end of this interview. Make sure you mark it as completed.
  1. If you’ve marked the interview as completed, synchronize from the dashboard. Then proceed to the next appropriate card.
  2. As you are doing the interview, read the texts from the screen that are marked with READ: prompt. Also read the questions and give the respondent time to think about the answer. When the answer is given, record the answer into the field provided under the question or select the appropriate option of categorical questions. Sometimes you may need to read the options, such as with Y/N-multiselect questions.
  3. As a result of you entering the answers some new questions/sections may appear in the interview or others disappear. Only ask questions that you are seeing suggested by the Interviewer App, even if you remember that you’ve asked different questions of a different respondent.
  4. Just like in CAPI interviews, you may encounter error messages. For example: “Value X is too large”. Before turning it to the respondent, double-check that the value you’ve entered is indeed the value that the respondent just told you. It may be a simple typing/entry error. Other situations you need to clarify with the respondent. For example: “You have told me earlier that there are 3 members in your household. Yet now you are telling me that 4 members are having fever today. Perhaps, you didn’t count someone as a household member earlier?”
  5. During the interview the respondent may decide to interrupt the interview. If you may not complete the interview at this time, make a note in the final section that the interview is not completed, ask the respondent when is the nearest convenient time to call back, and record this time in the final section of the interview. If the respondent refuses categorically to finish the interview, make sure that you record the corresponding outcome and any reason/explanation provided (interview is too long, questions are too sensitive, respondent doesn’t see the purpose, etc).
  6. If at step 14 the interview was completed, or the respondent refused to finish categorically, or designated the call back time after the end of your shift, mark the interview as completed and synchronize at the dashboard. Completed synchronized interviews will be removed from your dashboard. Remember that you are using a phone to make the calls. Marking the interview as completed will not hang up the phone!
  7. If you agreed with the respondent to make another call during the current shift, you don’t have to mark the interview as completed and synchronize. In this case it is important that you make the contact attempt at the designated time during the current shift and record the corresponding status, and possibly the next contact appointment.
  8. At the end of your shift do a final synchronization (and make sure it is successful). Do not start new interviews after this synchronization.
  9. Next time you work, proceed to step #1. You may find that you have received some of the new assignments and some interviews rejected by the supervisors. Not all the interviews that were marked to be continued today may be returned to you – your supervisor may decide that they can be better finished by other interviewers.

Notes:

  1. Not all tablets provide a possibility to connect to 3G/4G networks for sending the data (may or may not be having a SIM-card slot and corresponding modem). If your tablet is capable of connecting to WiFi networks only, you will need to set up such a network. If the phone used for calls is a smartphone, it may have a capability to raise an access point and forward the WiFi connection to the internet through 3G/4G. If the phone is not capable of providing such a connectivity, a combination of a battery-operated router and 3G/4G dongle, or a MiFi-type device can provide the needed functionality.
  2. Any synchronization requires an internet connection. If synchronization doesn’t succeed - make sure you are connected to the internet, then try again. The synchronization may fail even while connected if the signal is too weak. Again, just retry the synchronization process.
  3. If at any time you find that you’ve exhausted the allowance for wireless connection (either on the phone you make your phone calls with, or on the tablet itself) contact your supervisor and explain.
  4. It is possible that the respondent will request the interview may be continued on the next day “at any time”. Prepare before the start of the interview with a couple of slots that you know are possible for the next day. This will help arrange a schedule with no conflicting appointments.
  5. Use only the tablet provided to you by the office, not any other device. If you attempt to login to any other device, this will invalidate your tablet (relinking) with a loss of all data.
  6. Your supervisor may tell you that she will not be reviewing your unfinished interviews nightly. Then you don’t have to complete and synchronize unfinished interviews (step #15). But make sure you’ve discussed this with your supervisor and reached this agreement. In any case you should synchronize at the beginning and end of every shift. (and make sure the synchronization succeeds).
\ No newline at end of file diff --git a/interviewer/special/index.html b/interviewer/special/index.html new file mode 100644 index 00000000..be6160f5 --- /dev/null +++ b/interviewer/special/index.html @@ -0,0 +1,41 @@ +Special Topics +

Special Topics

Overlap Detection

Overlap detection is feature in Survey Solutions’ geography +question. +It is applicable only to the geography questions +placed in a roster. When activated by the questionnaire +designer, it will assist the interviewers in marking the +areas in such a way that there is no overlap between +multiple marked plots/parcels. This is important to avoid +double-counting of any area in calculation of the total +area.

If an overlap is detected, the program signals about it at +the bottom of the map, mentioning the other roster items +with which an overlap was detected. Overlap detection works +instantaneously, even if the answer to the question has not +been saved yet.

December 15, 2022

CATI Interviewer Retraining Instructions

Collecting data with Survey Solutions over the phone

Offline approach utilizing tablets

This approach is most suitable for the interviewers working at a location with poor/slow/not-reliable internet connectivity. It is recommended that these generic instructions are reviewed and customized by survey administrators for each particular survey. +The article is oriented on the agencies already having experience in using Survey Solutions for face-to-face (CAPI) surveys and in need to re-orient their operations for the telephone surveys.

March 30, 2020

Setting photo size and quality

Survey Solutions v5.22 automatically +restricts the size of the images captured by the Interviewer App (see +limits).
The information below is applicable only if you wish to produce files +even smaller than those automatically produced.

Survey Solutions image (picture) question does not specify any +particular size or quality of the photo to be captured with the tablet’s +camera. Instead Survey Solutions captures the image supplied by a +standard picture provider (typically the Camera application) installed +in the OS Android. This allows Survey Solutions to benefit from controls +and effects present in such a provider.

March 16, 2017
\ No newline at end of file diff --git a/interviewer/special/overlap-detection/images/overlap_interviewer.png b/interviewer/special/overlap-detection/images/overlap_interviewer.png new file mode 100644 index 00000000..6f61b5b6 Binary files /dev/null and b/interviewer/special/overlap-detection/images/overlap_interviewer.png differ diff --git a/interviewer/special/overlap-detection/images/overlap_interviewer3.png b/interviewer/special/overlap-detection/images/overlap_interviewer3.png new file mode 100644 index 00000000..32343213 Binary files /dev/null and b/interviewer/special/overlap-detection/images/overlap_interviewer3.png differ diff --git a/interviewer/special/overlap-detection/images/overlap_server.jpg b/interviewer/special/overlap-detection/images/overlap_server.jpg new file mode 100644 index 00000000..18657947 Binary files /dev/null and b/interviewer/special/overlap-detection/images/overlap_server.jpg differ diff --git a/interviewer/special/overlap-detection/index.html b/interviewer/special/overlap-detection/index.html new file mode 100644 index 00000000..733a6f38 --- /dev/null +++ b/interviewer/special/overlap-detection/index.html @@ -0,0 +1,70 @@ +Overlap Detection +

Overlap Detection

December 15, 2022

Overlap detection is feature in Survey Solutions’ geography +question. +It is applicable only to the geography questions +placed in a roster. When activated by the questionnaire +designer, it will assist the interviewers in marking the +areas in such a way that there is no overlap between +multiple marked plots/parcels. This is important to avoid +double-counting of any area in calculation of the total +area.

If an overlap is detected, the program signals about it at +the bottom of the map, mentioning the other roster items +with which an overlap was detected. Overlap detection works +instantaneously, even if the answer to the question has not +been saved yet.

Note that the overlap applies to all variants of the +geography question: polygon, polyline, multipoint and +single point, though most common use is with marking +the areas (polygons). An overlap is signaled when there +is at least one common point of the current answer with +the answer to the same geography question in any other +items of the roster. Thus:

  • for polygons: when they overlap with at least one +common point;
  • for polylines: when they intersect in at least one +point;
  • for multipoints: when there is at least one point +common to the current answer and the answer to the +same question in a different roster item.
  • for single points: when the two points are exactly +the same.

In practice, due to noise in measurement no two points +in the single and multiple point geography questions +will be exactly the same when measured with a sensor +(even if the tablet is not moving at all). And if they +happened to be the same, it is likely they are sourced +not from a location sensor then.

The overlap detection serves a warning purpose only. +It doesn’t prevent such data from being recorded and +submitted by the interviewer.

The overlap detection applies to all modes of +measurement: manual, automatic, and semi-automatic.

When overlap detection is switched on, the answers to the +same question for other roster items are displayed on the same +map, albeit in a different color:

Legend for colors:

  • RED - answer to the current +geography question (e.g. current parcel);
  • BLUE - answers to the same +geography question for other roster items (e.g. other parcels), +which do not overlap with the current one;
  • ORANGE - answers to the +same geography question for other roster items (e.g. other +parcels) which do overlap with the current one.

The overlap detection does not affect the export +of the data, and whether the answer overlaps with +another or not is not accessible from the syntax +in writing expressions.

To activate overlap detection, tick the corresponding +checkbox for those geography questions, where this is +desirable.

The supervisors and headquarters users reviewing incoming +interviews also have a view of the neighboring parcels and +an overlap warning:

In this example the overlap of the THIRD PARCEL (red circle) with the +SECOND PARCEL (orange shape to its left) is detected, but this overlap is +marginal and probably due to the noise in the location acquisition. Yet the +overlap between the THIRD PARCEL and the FIFTH PARCEL is significant +and is clearly double-counting the same area, and thus is likely a mistake.

\ No newline at end of file diff --git a/interviewer/special/page/1/index.html b/interviewer/special/page/1/index.html new file mode 100644 index 00000000..aed18325 --- /dev/null +++ b/interviewer/special/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/special/ + \ No newline at end of file diff --git a/interviewer/special/setting-photo-size-and-quality/images/756522.png b/interviewer/special/setting-photo-size-and-quality/images/756522.png new file mode 100644 index 00000000..316f11f3 Binary files /dev/null and b/interviewer/special/setting-photo-size-and-quality/images/756522.png differ diff --git a/interviewer/special/setting-photo-size-and-quality/images/756522_hu15585638355242232168.png b/interviewer/special/setting-photo-size-and-quality/images/756522_hu15585638355242232168.png new file mode 100644 index 00000000..af08fd78 Binary files /dev/null and b/interviewer/special/setting-photo-size-and-quality/images/756522_hu15585638355242232168.png differ diff --git a/interviewer/special/setting-photo-size-and-quality/images/756523.png b/interviewer/special/setting-photo-size-and-quality/images/756523.png new file mode 100644 index 00000000..cb6e3ca6 Binary files /dev/null and b/interviewer/special/setting-photo-size-and-quality/images/756523.png differ diff --git a/interviewer/special/setting-photo-size-and-quality/images/756523_hu10359697708937139853.png b/interviewer/special/setting-photo-size-and-quality/images/756523_hu10359697708937139853.png new file mode 100644 index 00000000..6e45cc19 Binary files /dev/null and b/interviewer/special/setting-photo-size-and-quality/images/756523_hu10359697708937139853.png differ diff --git a/interviewer/special/setting-photo-size-and-quality/images/756524.png b/interviewer/special/setting-photo-size-and-quality/images/756524.png new file mode 100644 index 00000000..9a9067fc Binary files /dev/null and b/interviewer/special/setting-photo-size-and-quality/images/756524.png differ diff --git a/interviewer/special/setting-photo-size-and-quality/images/756524_hu5673704702086098631.png b/interviewer/special/setting-photo-size-and-quality/images/756524_hu5673704702086098631.png new file mode 100644 index 00000000..01638630 Binary files /dev/null and b/interviewer/special/setting-photo-size-and-quality/images/756524_hu5673704702086098631.png differ diff --git a/interviewer/special/setting-photo-size-and-quality/images/756525.png b/interviewer/special/setting-photo-size-and-quality/images/756525.png new file mode 100644 index 00000000..f868abbf Binary files /dev/null and b/interviewer/special/setting-photo-size-and-quality/images/756525.png differ diff --git a/interviewer/special/setting-photo-size-and-quality/images/756525_hu13222839872098957082.png b/interviewer/special/setting-photo-size-and-quality/images/756525_hu13222839872098957082.png new file mode 100644 index 00000000..421b12f0 Binary files /dev/null and b/interviewer/special/setting-photo-size-and-quality/images/756525_hu13222839872098957082.png differ diff --git a/interviewer/special/setting-photo-size-and-quality/index.html b/interviewer/special/setting-photo-size-and-quality/index.html new file mode 100644 index 00000000..9f90d65b --- /dev/null +++ b/interviewer/special/setting-photo-size-and-quality/index.html @@ -0,0 +1,73 @@ +Setting photo size and quality +

Setting photo size and quality

March 16, 2017

Survey Solutions v5.22 automatically +restricts the size of the images captured by the Interviewer App (see +limits).
The information below is applicable only if you wish to produce files +even smaller than those automatically produced.

Survey Solutions image (picture) question does not specify any +particular size or quality of the photo to be captured with the tablet’s +camera. Instead Survey Solutions captures the image supplied by a +standard picture provider (typically the Camera application) installed +in the OS Android. This allows Survey Solutions to benefit from controls +and effects present in such a provider.

Depending on the purpose of the image capture, the settings may need to +be adjusted. The higher is the resolution and quality of the image, the +more details it contains, but at the expense of larger picture size (in +bytes). Larger images may take longer to upload from the tablet to the +server, and download during export. Transferring larger images over +cellular networks will generally cost more, or consume your volume quota +faster. Smaller images are circulated more quickly in the system, but +they may lack the image quality that is necessary for some purposes.

Different image provider applications have different settings, and when +several such apps are installed, the interviewer is generally asked, +which one she would like to utilize:

The two crucial settings most such applications provide are the +resolution and compression level (also sometimes simply referred +to as “quality”):

+

Tentative recommendations

Every survey is different, and may require different recommendations.

  • Select a smaller resolution (such as 640x480 or 0.3MP) when taking +images of e.g. houses, vehicles and other large items, where small +details are of no significance.
  • Select higher resolution (such as 2.3MP) when taking images of +persons, families, crop fields.
  • Select even higher resolution (3 and more MP) when capturing +documents (IDs, pages of text, etc) or plant leaves (plant disease +detection).

Other settings

In addition, other controls may be available, such as:

  • scene (document, portrait, architecture, landscape, etc.),
  • exposure control,
  • flash control,
  • image stabilization and other.

The exact scope and number of such settings depend on the tablet +manufacturer, OS version and application type. Some applications provide +additional image processing or special effects capabilities, such as +increasing sharpness, changing colors to black and white or picking +existing images from the device photo gallery.

Ensuring the data quality

A questionnaire designer may provide multiple image type questions to +capture “backup” photos, such as Photo of the house (1st attempt), Photo +of the house (2nd attempt), Photo of the house (3rd attempt). +Subsequently a supervisor’s question may be introduced for the +supervisor to select which image is better corresponding to the +guidelines of the survey. After the data is exported, an automatic +script may be written to leave only one image selected by the +supervisor, and removing the rest.

Training implications

Specific training on image taking is recommended for the enumerators if +the photo collection constitutes an essential part of the survey. The +interviewers must explore their devices, understand their capabilities +and limitations. Such a training must cover:

  • composition: understanding which essential details must be included +into the photo (for example, take picture of the house from the side +with front door, do not leave out antennae on the roof, do not cover +the number on the ID with a finger, do not have more than one person +in the frame, etc.)
  • light conditions: taking images under bright/sunny or dusk/dark +conditions, or with artificial lighting or a flash;
  • focus: taking sharp photos of small and large objects, documents +closeups;
  • movement: taking photos when the object is moving, not standing (for +example, livestock);
  • stabilization: importance of holding the tablet steadily to capture +sharp images.

Implications for tablet requirements

In addition to the training of the enumerators, the survey administrator +must be cautious in selecting appropriate tablets for such a survey, and +pay attention to:

  • camera resolution/quality;
  • presence of autofocus;
  • presence of a flash, its effective range, and power consumption.

Depending on the particular circumstances a consent from the respondent +must be acquired prior to capturing images, especially photos of persons +and documents.

\ No newline at end of file diff --git a/interviewer/special/shape-file-overlay/index.html b/interviewer/special/shape-file-overlay/index.html new file mode 100644 index 00000000..fbfecd35 --- /dev/null +++ b/interviewer/special/shape-file-overlay/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/headquarters/mapsmanage/shapefile-maps/ + \ No newline at end of file diff --git a/interviewer/synchronization-problems/index.html b/interviewer/synchronization-problems/index.html new file mode 100644 index 00000000..640d89d5 --- /dev/null +++ b/interviewer/synchronization-problems/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/synchronization-problems/ + \ No newline at end of file diff --git a/interviewer/synchronization/index.html b/interviewer/synchronization/index.html new file mode 100644 index 00000000..51efaee3 --- /dev/null +++ b/interviewer/synchronization/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/app/synchronization/ + \ No newline at end of file diff --git a/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/images/691270.png b/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/images/691270.png new file mode 100644 index 00000000..eb7e28e0 Binary files /dev/null and b/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/images/691270.png differ diff --git a/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/images/691270_hu324362230286182155.png b/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/images/691270_hu324362230286182155.png new file mode 100644 index 00000000..9d1e36a3 Binary files /dev/null and b/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/images/691270_hu324362230286182155.png differ diff --git a/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/index.html b/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/index.html new file mode 100644 index 00000000..6387f9a2 --- /dev/null +++ b/interviewer/troubleshooting/consequences-of-relinking-a-tablet-device/index.html @@ -0,0 +1,44 @@ +Consequences of relinking a tablet device +

Consequences of relinking a tablet device

July 16, 2020

When an interviewer account is +created +at the HQ, an interviewer may connect from any tablet. Once the +interviewer has signed in, that device ID is remembered and the +interviewer must continue using the same tablet.

No other interviewer will be permitted to use the same device: they will +not be able to enter their username unless the interviewer app is +uninstalled (with immediate loss of all unsynchronized data).

It is not possible for one user to work on several devices. When the +user attempts to use the second device a warning is issued that the data +that belongs to this user on the previous device will discarded: “You +are already assigned to another device. If you relink to this device all +data on the old one will be lost.”

Warning!

Proceed with caution. Use +relinking in situations when the original tablet was lost, stolen, or +damaged. If the original tablet is still available, check if there is +any unsynchronized data that belongs to this user, and synchronize if +necessary. Interviewers are solely responsible for any data loss that +resulted from interviewers relinking their device.

Important!

The original device will +appear functioning until the very moment of synchronization when it will +contact the server for synchronization and first find out that the +device has been banned from the system and no information from it will be +accepted by the server. As a consequence, all the data +collected since the last synchronization will be discarded.

Advice:

  • Do not let the interviewers or anyone else know the credentials of any +user in the system as this may cause disruptions.
  • Every user must work utilizing his/her assigned credentials, and interviewers must stay with +the same device.
  • Minimize the chances of devices being accidentally swapped between the interviewers (such as when storing together identical tablets with no identification marking during field trips, etc).
  • During an interviewer training discuss the importance +of using and protecting credentials and using a single device.
\ No newline at end of file diff --git a/interviewer/troubleshooting/index.html b/interviewer/troubleshooting/index.html new file mode 100644 index 00000000..309324f6 --- /dev/null +++ b/interviewer/troubleshooting/index.html @@ -0,0 +1,54 @@ +Troubleshooting +

Troubleshooting

Consequences of relinking a tablet device

When an interviewer account is +created +at the HQ, an interviewer may connect from any tablet. Once the +interviewer has signed in, that device ID is remembered and the +interviewer must continue using the same tablet.

No other interviewer will be permitted to use the same device: they will +not be able to enter their username unless the interviewer app is +uninstalled (with immediate loss of all unsynchronized data).

July 16, 2020

Troubleshooting

Interviewers in all surveys are to contact their respective survey +managers/supervisors first, who will take reasonable efforts to +determine the cause of the issue and possible solution including +describing the issue and searching for similar issues in the +users' forum and this +support site.

If the issue is determined to be caused by the Survey Solutions +code, it should be elevated to the developers including a detailed +description, steps to reproduce the issue, etc. See more in the +FAQ for email support.

There are special pages dedicated to common problems, such as +synchronization problems for tablets. Make sure you read and +follow the standard troubleshooting advice before elevating it to the +developers. Include the description of the conclusion of the relevant +standard advice, this will help in determining the proper recommendation.

The support team may advise you to utilize certain diagnostics +tools embedded in the interviewer application or change certain +settings. You can read more about this in the corresponding articles:

January 8, 2020

Interviewer App Settings Dialog

Interviewers normally should not change any of the settings on this page, +but may be required to do so based on the instructions of their supervisors +or technical support.

Some combinations or values of these settings may cause errors in +operation/synchronization. Change these settings only if you know what you +are doing.

If you do make any changes compared to the default values, and you are +requesting support from the development team, you must mention in your +question, issue description, or the support request, which settings you've +changed and which values you've specified.

GPS receive timeoutDesired accuracy of GPS questionsShow location on mapVibrate when invalid answer is givenAllow synchronization with HeadquartersSupervisor URLServer response timeoutCommunication package sizeEvent chunk sizeDevice IDApplication version

Below is a brief description of these settings.

January 8, 2020

Interviewer App Diagnostics Dialog

The Diagnostics dialog provides tools for troubleshooting. Most of these tools require the tablet to be online (connected to the Internet). The Survey Solutions support may instruct you to use one or the other tool from the below toolset.

Check for new versionTest bandwidth to the serverSend trace logsCollect and sent to HQ all tablet informationGenerate support packageShare all technical information

Below is the explanation of these tools with some example illustrations (NB clickable items below).

January 8, 2020

Synchronization problems

Synchronization of the data between the tablet and server is a highly +complex process of communication during which a number of actions are +undertaken on both ends based on the flow of incoming data. Survey +Solutions hides the complexity of it behind a simple Synchronize button +available to the interviewer at any time. Normally, when synchronization +is completed successfully, the interviewer receives a confirmation +message and some summary statistics describing the actions taken (such +as number of received assignments or transferred interviews).

May 16, 2018
\ No newline at end of file diff --git a/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_access_required.png b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_access_required.png new file mode 100644 index 00000000..acb3143f Binary files /dev/null and b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_access_required.png differ diff --git a/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_app_diagnostics.png b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_app_diagnostics.png new file mode 100644 index 00000000..f52994d9 Binary files /dev/null and b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_app_diagnostics.png differ diff --git a/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_app_diagnostics50.png b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_app_diagnostics50.png new file mode 100644 index 00000000..997faa4a Binary files /dev/null and b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_app_diagnostics50.png differ diff --git a/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_backup_saved.png b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_backup_saved.png new file mode 100644 index 00000000..de9f3290 Binary files /dev/null and b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_backup_saved.png differ diff --git a/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_package_confirm.png b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_package_confirm.png new file mode 100644 index 00000000..c697e388 Binary files /dev/null and b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_package_confirm.png differ diff --git a/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_send_description.png b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_send_description.png new file mode 100644 index 00000000..b1b75d14 Binary files /dev/null and b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_send_description.png differ diff --git a/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_send_logs.png b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_send_logs.png new file mode 100644 index 00000000..26fb1b50 Binary files /dev/null and b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_send_logs.png differ diff --git a/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_test_bandwidth.png b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_test_bandwidth.png new file mode 100644 index 00000000..a4eac70c Binary files /dev/null and b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_test_bandwidth.png differ diff --git a/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_update_available.png b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_update_available.png new file mode 100644 index 00000000..6b9c6668 Binary files /dev/null and b/interviewer/troubleshooting/interviewer-app-diagnostics/img/interviewer_update_available.png differ diff --git a/interviewer/troubleshooting/interviewer-app-diagnostics/index.html b/interviewer/troubleshooting/interviewer-app-diagnostics/index.html new file mode 100644 index 00000000..3ae0961e --- /dev/null +++ b/interviewer/troubleshooting/interviewer-app-diagnostics/index.html @@ -0,0 +1,46 @@ +Interviewer App Diagnostics Dialog +

Interviewer App Diagnostics Dialog

January 8, 2020

The Diagnostics dialog provides tools for troubleshooting. Most of these tools require the tablet to be online (connected to the Internet). The Survey Solutions support may instruct you to use one or the other tool from the below toolset.

Check for new versionTest bandwidth to the serverSend trace logsCollect and sent to HQ all tablet informationGenerate support packageShare all technical information

Below is the explanation of these tools with some example illustrations (NB clickable items below).

1. Version NNN. Check for a new version

The Interviewer App will try to connect to the synchronization point +(server) and check for the availability of a new version of the App.

Normally the updates are received and installed during the +synchronization. Use this item when the synchronization doesn't succeed +for any reason. The tablet must be online for this feature to succeed.

2. Test bandwidth to server

The Interviewer App will try to connect to the +synchronization point (server) and measure the response timing.

Use this to diagnose the connectivity to the server issues, and quality +of connection. The tablet must be online for this feature to succeed.

3. Send trace logs

This will collect on the tablet device and send +to the synchronization point (server) the detailed logs of the +interviewer's work.

The device logs (introduced in v19.11) are available +for review at the server by the ADMIN user +only. The tablet must be online for this feature to succeed.

4. Collect and send to HQ all tablet information

This will collect, pack, and send to the +synchronization point (server) all the content stored on the tablet.

This may take a significant time to prepare and to send. User's +confirmation is required to access the storage files:

User's confirmation is also required after the package is prepared +before it will be sent to the server (confirm size of the package +if you are concerned about the traffic use).

Make sure you confirm sending and wait for the sending to succeed, +otherwise the your data will not reach the synchronization point.

The tablet must be online for this feature to succeed.

5. Generate support package

This will save all the information stored on the tablet to a file +that can be transferred to the support team when requested.

This facility is intended for troubleshooting only, specifically, +this is NOT a backup feature and not a data transfer feature, and should +not be used or attempted to be used as such. You will not be able to +restore the interviews data from this file. The tablet doesn't need +to be online for this feature to succeed, the resulting file may +be shared using any means (saved to SD card, USB-stick, etc).

6. Share all technical information

This will collect the descriptive information about the device and the +Interviewer App installation and generate a textual description that can +be shared with the support team or a colleague/consultant providing +technical support. Here is an example of such a description

The tablet must doesn't need to be online for this feature to succeed. +The resulting textual description may be shared using any means (saved to +a file, sent by email, etc).

\ No newline at end of file diff --git a/interviewer/troubleshooting/interviewer-app-settings/img/interviewer_app_settings.png b/interviewer/troubleshooting/interviewer-app-settings/img/interviewer_app_settings.png new file mode 100644 index 00000000..ee566686 Binary files /dev/null and b/interviewer/troubleshooting/interviewer-app-settings/img/interviewer_app_settings.png differ diff --git a/interviewer/troubleshooting/interviewer-app-settings/img/interviewer_app_settings50.png b/interviewer/troubleshooting/interviewer-app-settings/img/interviewer_app_settings50.png new file mode 100644 index 00000000..b1ee9d26 Binary files /dev/null and b/interviewer/troubleshooting/interviewer-app-settings/img/interviewer_app_settings50.png differ diff --git a/interviewer/troubleshooting/interviewer-app-settings/index.html b/interviewer/troubleshooting/interviewer-app-settings/index.html new file mode 100644 index 00000000..a43e8912 --- /dev/null +++ b/interviewer/troubleshooting/interviewer-app-settings/index.html @@ -0,0 +1,58 @@ +Interviewer App Settings Dialog +

Interviewer App Settings Dialog

January 8, 2020

Interviewers normally should not change any of the settings on this page, +but may be required to do so based on the instructions of their supervisors +or technical support.

Some combinations or values of these settings may cause errors in +operation/synchronization. Change these settings only if you know what you +are doing.

If you do make any changes compared to the default values, and you are +requesting support from the development team, you must mention in your +question, issue description, or the support request, which settings you've +changed and which values you've specified.

GPS receive timeoutDesired accuracy of GPS questionsShow location on mapVibrate when invalid answer is givenAllow synchronization with HeadquartersSupervisor URLServer response timeoutCommunication package sizeEvent chunk sizeDevice IDApplication version

Below is a brief description of these settings.

  1. The default value is reasonable for most circumstances. If the +interviewer is constantly receiving errors when trying to capture the +location, this value may be increased to give the GPS-location sensor more +time to determine the position of the device.

  2. The default value is reasonable for most circumstances. Increasing the +value may result in faster, but less accurate measurements of the location. +Decreasing the value will cause the device to attempt to determine the +position more accurately at the expense of longer wait time and higher +chance of an error. Each GPS sensor has its own physical limit of accuracy. +Specifying too low of a number here will cause constant or frequent errors +in determining the position.

  3. The default behavior is to show the captured location on the map if the +tablet is online at that time. To save the traffic, this may be switched +off and the map will not be rendered in the GPS location question, even +when the tablet is online. This does not affect the capturing of the +coordinates.

  4. The default behavior is to indicate a new error during an interview with +vibration (if supported by the device). This can be switched off and +vibration will not be used even if supported. Note that most phones do +support vibration, most tablets don’t.

  5. Changing this setting should be done only in coordination with the +supervisor and will cause the Interviewer App to send the data NOT to the +server, but to the Supervisor’s tablet.

  6. This reflects the address of the synchronization point entered during the +first login. This should only be changed if the actual URL of the same +synchronization point has changed, otherwise the interviewer will lose the +possibility to synchronize.

  7. This value may be slightly increased when working over slow connection +lines or with overloaded servers. Specifying too small of a value will cause +constant or frequent synchronization errors.

  8. This value should be modified only if instructed by the Survey Solutions +developers during troubleshooting.

  9. This value should be modified only if instructed by the Survey Solutions +developers during troubleshooting.

  10. This is a display of the device identifier as reported by the Android OS. +The supervisors, HQ and admin users will see this value in the interviewer’s +profile. Device identifier doesn’t generally allow to understand what model +is this device (such as Samsung Galaxy Tab 4) and may differ from the serial +number of the device (the one you see on the box when you purchase it), but +allows to distinguish one device from the other.

  11. This is a display of the version number of the Interviewer App +(currently running).

\ No newline at end of file diff --git a/interviewer/troubleshooting/page/1/index.html b/interviewer/troubleshooting/page/1/index.html new file mode 100644 index 00000000..3a5bf390 --- /dev/null +++ b/interviewer/troubleshooting/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/troubleshooting/ + \ No newline at end of file diff --git a/interviewer/troubleshooting/synchronization-problems/index.html b/interviewer/troubleshooting/synchronization-problems/index.html new file mode 100644 index 00000000..5cd0a708 --- /dev/null +++ b/interviewer/troubleshooting/synchronization-problems/index.html @@ -0,0 +1,55 @@ +Synchronization problems +

Synchronization problems

May 16, 2018

Synchronization of the data between the tablet and server is a highly +complex process of communication during which a number of actions are +undertaken on both ends based on the flow of incoming data. Survey +Solutions hides the complexity of it behind a simple Synchronize button +available to the interviewer at any time. Normally, when synchronization +is completed successfully, the interviewer receives a confirmation +message and some summary statistics describing the actions taken (such +as number of received assignments or transferred interviews).

In some cases synchronization stops with errors. Interviewers should +remember that

  1. it is always safe to press the synchronization button again to +retry. When the errors are caused by interference or noise in +communication channel the synchronization is likely to succeed when +repeated.
  2. if your supervisor has instructed you to synchronize (and this is +important in some scenarios) and your synchronization has resulted +in errors, then you haven’t synchronized. Only when you received a +confirmation message that the synchronization has completed +successfully, then the synchronization is performed.

In countries with less reliable networks the probability of a failed +synchronization is higher. It is also higher for longer synchronization +sessions, such as ones where a large number of interviews are being +synchronized or when the interviews have a large amount of data. +Synchronizing frequently helps the whole system running.

Synchronization is a process of communication between the tablet and a +server, in which the connection is initiated by the tablet, which +searches and sends a query to the server. Hence the server must be +active and visible at all times when the interviewers might be +synchronizing (during all data collection period).

The tablet is searching the server by name, known as the +synchronization point, which is an URL of the server in the network. +This setting is entered once when the Survey Solutions App is installed +and logged in for the first time. Normally it doesn’t change throughout +the data collection, though a possibility to change it exists in the +Interviewer app settings.

If you are experiencing a repetitive synchronization error after several +retries, the simplest action you can do is to navigate to the +synchronization point in your browser (typically Chrome on Android devices), +for example, https://demo.mysurvey.solutions. +The page that opens will usually contain some readable information about the +conßnectivity problems. This will help you track down the exact reason +for the problem and use the troubleshooting guide below to find a remedy +for it.

Message
Possible situation
Recommendations
Synchronization successfully completed. All assignments were updated.Situation normal. No error.Continue working as usual.
Synchronization was interrupted, please try again. No network. Check your network settings.Not connected to WiFi network or lost the network connection during synchronization.Check the connection to network is established. Try to open any site known to be operational at the moment, e.g. www.google.com
Out of coverage area.Move to the area with 3G/4G wireless coverage.
Mobile data switched off.Switch the mobile data on in the tablet settings.
SIM card or data transfer disabled by the wireless provider.Check if any site can be opened in browser. If not contact the SIM card (wireless) provider.
SIM card hardware malfunctionCheck the SIM card is working in a different device. If not, replace the SIM card.
SIM card data plan traffic is exhausted.Purchase additional traffic allowance from the SIM card vendor, or use an alternative network.
Tablet hardware issueCheck the wireless card and antenna according to the tablet manufacturer's checklist.
Synchronization was interrupted, please try again. No connection to the Survey Solutions Supervisor. Please make sure that the website is available.Connected to a network, which requires further authentication or acceptance of special conditions, or payment.Authenticate in the network (common for networks in hotels, cafes, etc)
Connected to a network, which limits access to certain sites or resources.Make sure the HQ address of the server is whitelisted in the network.
Connected to a network, which limits access to Internet during certain hours.Reconnect and retry during the hours when the network permits connections outside.

Or use an alternative network/connection.
Survey Solutions synchronization point is entered incorrectly (or subsequently changed).Verify in the interviewer app settings (Supervisor URL) that the entered URL or IP is accurate for the Survey Solutions server.
Survey Solutions web server is down. Wait for 30 minutes (or until the end of the planned outage/maintenance period) and retry.

If the issue persists, open the synchronization point address in the web browser from the tablet and from a different device.

Contact the server administrator with the error message displayed in the browser (attach a screenshot).
Survey Solutions server is misconfiguredIf the message is issued on initialization of the Interviewer App on the tablet, and the site responds normally, when accessed from the same tablet, then check with the server administrator if the server is blocking any queries based on the WAF rules and introduce exceptions for the Survey Solutions.
Synchronization was interrupted, please try again. Timeout when connecting to the Survey Solutions Supervisor website. Check your internet connection.Extremely slow network with packages delivered after a significant delay or lost.Check the Server Response timeout setting in the [Settings of the Interviewer App](/interviewer/troubleshooting/interviewer-app-settings/) app is reasonably large, increase if necessary.

Use alternative network if available.

Retry in different time when the network is not so busy.
Connected to a network where the firewall is setup to prevent access to outside resources with timeout rather than special denial code.Contact the network administrator to check the firewall settings of the network and make sure the synchronization point is accessible.
Failed to verify certificate for target URL. Please, check if Headquarters website address is valid and your device has correct current date and time.Installed SSL certificate for Headquarters application is incorrect or cannot be validated by tabletCheck certificate validity using any external ssl testing tool
Check current date and time on tablet. They should be correct
\ No newline at end of file diff --git a/interviewer/troubleshooting/troubleshooting/images/658889.png b/interviewer/troubleshooting/troubleshooting/images/658889.png new file mode 100644 index 00000000..a9fa15c6 Binary files /dev/null and b/interviewer/troubleshooting/troubleshooting/images/658889.png differ diff --git a/interviewer/troubleshooting/troubleshooting/index.html b/interviewer/troubleshooting/troubleshooting/index.html new file mode 100644 index 00000000..221c3f35 --- /dev/null +++ b/interviewer/troubleshooting/troubleshooting/index.html @@ -0,0 +1,34 @@ +Troubleshooting +

Troubleshooting

January 8, 2020

Interviewers in all surveys are to contact their respective survey +managers/supervisors first, who will take reasonable efforts to +determine the cause of the issue and possible solution including +describing the issue and searching for similar issues in the +users' forum and this +support site.

If the issue is determined to be caused by the Survey Solutions +code, it should be elevated to the developers including a detailed +description, steps to reproduce the issue, etc. See more in the +FAQ for email support.

There are special pages dedicated to common problems, such as +synchronization problems for tablets. Make sure you read and +follow the standard troubleshooting advice before elevating it to the +developers. Include the description of the conclusion of the relevant +standard advice, this will help in determining the proper recommendation.

The support team may advise you to utilize certain diagnostics +tools embedded in the interviewer application or change certain +settings. You can read more about this in the corresponding articles:

\ No newline at end of file diff --git a/interviewer/updating-the-interviewer-application/index.html b/interviewer/updating-the-interviewer-application/index.html new file mode 100644 index 00000000..7d94f907 --- /dev/null +++ b/interviewer/updating-the-interviewer-application/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/config/updating-the-interviewer-application/ + \ No newline at end of file diff --git a/interviewer/web-interviewer/index.html b/interviewer/web-interviewer/index.html new file mode 100644 index 00000000..482e0d3b --- /dev/null +++ b/interviewer/web-interviewer/index.html @@ -0,0 +1,44 @@ +Web Interviewer +

Web Interviewer

Web Interviewer Retraining Instructions

Collecting data with Survey Solutions over the phone

Online approach utilizing any computer with a web-browser

This approach is most suitable for the interviewers working at a location with stable/responsive internet connectivity. +The functionality and interface of the web-interviewer is also described in the pages linked from here. +It is recommended that these generic instructions are reviewed and customized by survey administrators for each particular survey. +The article is oriented on the agencies already having experience in using Survey Solutions for face-to-face (CAPI) surveys and in need to re-orient their operations for the telephone surveys.

March 10, 2021

Web Interviewer CATI

Use in call-centres / CATI

One specific scenario where the use of web interviewer is particularly handy is +in conducting telephone surveys. In this case a call-centre is usually set up, +with interviewers working from this office by reaching out the respondents by +phone. The identifying fields of assignments are supposed to be pre-filled with +the proper phone numbers that the interviewers will dial to get a response.

November 4, 2020

Web Interviewer Overview

Web interviewer is a facility of Survey Solutions allowing the interviewers to work from the server, similar to supervisors and headquarter users.

Similarly to the Interviewer App on the tablet, the web interviewer allows interviewers to view their dashboard and conduct interviews. There are, however, some differences between the web interviewer and the Interviewer App:

Interviewer AppWeb Interviewer
DevicesAndroid-based tabletsAny devices with a web-browser
Access to internetRequired for synchronization onlyRequired all the time
Interviews appear on the serverAfter synchronization of tablet completed interviews will appear in status *Completed*, incomplete interviews don't appear.Immediately as interviews started in status *InterviewerAssigned*, after completion in status *Completed*.
Question types and design structuresLimitations:
  • matrix presentation of categorical questions (will appear as series of individual questions);
  • table presentation of rosters (will appear as roster with item buttons).
Limitations:
  • Geography question not supported;
  • Barcode question (will appear as text);
  • Picture question (upload image only).

Further articles explain particular aspects of working with the the web interviewer:

March 30, 2020

Web Interviewer Login

Headquarters and administrator users may create new interviewer accounts. There is no separate web interviewer account. Every interviewer can login to the data server (synchronization point) with their assigned interviewer credentials.

Logging in to the server is usually not required in face-to-face CAPI surveys conducted with tablets. +After successfully logging in, the interviewer can review his/her interviewer profile:

The link to edit personal information (full name, contact phone, and email) is available if permitted by the corresponding setting specified by the server administrator.

March 30, 2020

Web Interviewer Important Notes

To prevent collisions of multiple versions of the same interview, the interviewer +is expected to utilize only one tool for each interview - either a tablet +interviewer app or a web interviewer.

An interview may be started with the web interviewer, and then continued on the +tablet after the interviewer initializes and synchronizes it. In this case all the +started interviews are marked as received by the tablet, and are still visible on +the server (in web interviewer, as well as for the supervisor and HQ users). But +the interviewer should not and may not make any changes to the interview since it +was already received on the tablet. If he/she tries to do such a change, an error +message will be indicated and the software will refuse the change:

March 30, 2020

Web Interviewer Dashboard

Web interviewers have access to a dashboard equivalent in functionality to the dashboart of the tablet Interviewer App:

Dashboard tabs (pages)

The dashboard contains the following tabs (pages):

TabShows
start newassignments, on which new interviews are possible to start.
startedinterviews, which have been started by this interviewer, +but not completed yet.
rejectedinterviews, which have been completed earlier, but then rejected by the supervisor/HQ users to this interviewer.
completedinterviews completed by this interviewer, but not yet approved or rejected by the supervisor.

Search

Interviewers may utilize the search box located above the table to find +an interview with known interview key or value of an identifying question:

March 30, 2020

Web Interviewer Interviewing

Web interviewers can conduct interviews as per their effective assignments. +To start a new interview, the interviewer switches to the ‘Create new’ +tab and decides which interview to start by inspecting the identifying questions +visible in the assignments table, as well as any comments by the supervisor/HQ, +which may be left by them (last column). Once the interviewer is ready to start +the interview he/she clicks on it and confirms by selecting the corresponding +item in the menu that appears:

March 30, 2020
\ No newline at end of file diff --git a/interviewer/web-interviewer/page/1/index.html b/interviewer/web-interviewer/page/1/index.html new file mode 100644 index 00000000..2810a7c7 --- /dev/null +++ b/interviewer/web-interviewer/page/1/index.html @@ -0,0 +1,2 @@ +https://docs.mysurvey.solutions/interviewer/web-interviewer/ + \ No newline at end of file diff --git a/interviewer/web-interviewer/web-interviewer-cati/images/web_interviewer_call_centre.jpg b/interviewer/web-interviewer/web-interviewer-cati/images/web_interviewer_call_centre.jpg new file mode 100644 index 00000000..3d0741f5 Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-cati/images/web_interviewer_call_centre.jpg differ diff --git a/interviewer/web-interviewer/web-interviewer-cati/images/web_interviewer_call_centre640.jpg b/interviewer/web-interviewer/web-interviewer-cati/images/web_interviewer_call_centre640.jpg new file mode 100644 index 00000000..dfdccb74 Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-cati/images/web_interviewer_call_centre640.jpg differ diff --git a/interviewer/web-interviewer/web-interviewer-cati/index.html b/interviewer/web-interviewer/web-interviewer-cati/index.html new file mode 100644 index 00000000..522e3bdc --- /dev/null +++ b/interviewer/web-interviewer/web-interviewer-cati/index.html @@ -0,0 +1,30 @@ +Web Interviewer CATI +

Web Interviewer CATI

November 4, 2020

Use in call-centres / CATI

One specific scenario where the use of web interviewer is particularly handy is +in conducting telephone surveys. In this case a call-centre is usually set up, +with interviewers working from this office by reaching out the respondents by +phone. The identifying fields of assignments are supposed to be pre-filled with +the proper phone numbers that the interviewers will dial to get a response.

This allows to avoid purchasing the tablets and to re-use the computer equipment +available in the existing call-centre.

If the survey is a CATI survey, the designer of the questionnaire should avoid +the questions that are not supported under such circumstances (picture, GPS, etc), +and, perhaps, extend the interview result codes to include telephone-related +outcomes:

  • respondent out of the service area;
  • phone number always busy;
  • phone number answered by fax, modem, or other similar device;
  • phone number not serviced or not valid anymore;
  • phone number belongs to/call is answered by a different person; +etc.

A very extensive guide on the result codes is published on the site of the American Association for Public Opinion Research (AAPOR): +“Standard Definitions. Final Dispositions of Case Codes and Outcome Rates for Surveys”

For organizations migrating their operations from face-to-face interviews to CATI the following generic protocol descriptions are available:

\ No newline at end of file diff --git a/interviewer/web-interviewer/web-interviewer-dashboard/images/web_interviewer_completed.png b/interviewer/web-interviewer/web-interviewer-dashboard/images/web_interviewer_completed.png new file mode 100644 index 00000000..e8355071 Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-dashboard/images/web_interviewer_completed.png differ diff --git a/interviewer/web-interviewer/web-interviewer-dashboard/images/web_interviewer_dashboard.png b/interviewer/web-interviewer/web-interviewer-dashboard/images/web_interviewer_dashboard.png new file mode 100644 index 00000000..d62f496c Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-dashboard/images/web_interviewer_dashboard.png differ diff --git a/interviewer/web-interviewer/web-interviewer-dashboard/images/web_interviewer_filter.png b/interviewer/web-interviewer/web-interviewer-dashboard/images/web_interviewer_filter.png new file mode 100644 index 00000000..c699a629 Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-dashboard/images/web_interviewer_filter.png differ diff --git a/interviewer/web-interviewer/web-interviewer-dashboard/images/web_interviewer_search.png b/interviewer/web-interviewer/web-interviewer-dashboard/images/web_interviewer_search.png new file mode 100644 index 00000000..22cb0410 Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-dashboard/images/web_interviewer_search.png differ diff --git a/interviewer/web-interviewer/web-interviewer-dashboard/index.html b/interviewer/web-interviewer/web-interviewer-dashboard/index.html new file mode 100644 index 00000000..b760fb23 --- /dev/null +++ b/interviewer/web-interviewer/web-interviewer-dashboard/index.html @@ -0,0 +1,30 @@ +Web Interviewer Dashboard +

Web Interviewer Dashboard

March 30, 2020

Web interviewers have access to a dashboard equivalent in functionality to the dashboart of the tablet Interviewer App:

Dashboard tabs (pages)

The dashboard contains the following tabs (pages):

TabShows
start newassignments, on which new interviews are possible to start.
startedinterviews, which have been started by this interviewer, +but not completed yet.
rejectedinterviews, which have been completed earlier, but then rejected by the supervisor/HQ users to this interviewer.
completedinterviews completed by this interviewer, but not yet approved or rejected by the supervisor.

Search

Interviewers may utilize the search box located above the table to find +an interview with known interview key or value of an identifying question:

At the left side of the screen the interviewer may apply filters, to display only the interviews +from a particular survey, particular version, or assignment:

Note that the time in the ‘Updated on’ column is displayed +in the timezone of the interviewer (as reported by the +device used to access the dashboard). So, in general the +supervisor and interviewer may see different ‘Last updated’ +values for the same interview if they are in different time +zones.

\ No newline at end of file diff --git a/interviewer/web-interviewer/web-interviewer-important-notes/images/web_interviewer_cant_modify.png b/interviewer/web-interviewer/web-interviewer-important-notes/images/web_interviewer_cant_modify.png new file mode 100644 index 00000000..84898489 Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-important-notes/images/web_interviewer_cant_modify.png differ diff --git a/interviewer/web-interviewer/web-interviewer-important-notes/index.html b/interviewer/web-interviewer/web-interviewer-important-notes/index.html new file mode 100644 index 00000000..e6a5fed4 --- /dev/null +++ b/interviewer/web-interviewer/web-interviewer-important-notes/index.html @@ -0,0 +1,40 @@ +Web Interviewer Important Notes +

Web Interviewer Important Notes

March 30, 2020

To prevent collisions of multiple versions of the same interview, the interviewer +is expected to utilize only one tool for each interview - either a tablet +interviewer app or a web interviewer.

An interview may be started with the web interviewer, and then continued on the +tablet after the interviewer initializes and synchronizes it. In this case all the +started interviews are marked as received by the tablet, and are still visible on +the server (in web interviewer, as well as for the supervisor and HQ users). But +the interviewer should not and may not make any changes to the interview since it +was already received on the tablet. If he/she tries to do such a change, an error +message will be indicated and the software will refuse the change:

The continuation of an interview started on the tablet on the server through web +interviewer is only possible throgh completion and rejection by the supervisor, +since the server receives only those interviews from the Interviewer App that are +marked as ‘Completed’ by the interviewer. Once the interview is rejected by the +supervisor it will be available in the web interviewer until the next +synchronization of the tablet.

It is totally fine for some interviewers to be using the Interviewer App on +tablets, and other interviewers using the web interviewer facility even within +the same survey. But the discipline described above is to be observed if any +interviewer uses both tools.

To simplify the workflow, the coordinator of the survey should decide on a single +tool to be used by every interviewer/account and all interviewers should stick to +it. Any deviation from this rule should be rehearsed during the planning of the +survey to determine suitability for a particular scenario.

\ No newline at end of file diff --git a/interviewer/web-interviewer/web-interviewer-instr/images/interviewer_icon.png b/interviewer/web-interviewer/web-interviewer-instr/images/interviewer_icon.png new file mode 100644 index 00000000..1f29a8d2 Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-instr/images/interviewer_icon.png differ diff --git a/interviewer/web-interviewer/web-interviewer-instr/index.html b/interviewer/web-interviewer/web-interviewer-instr/index.html new file mode 100644 index 00000000..36b0ef4e --- /dev/null +++ b/interviewer/web-interviewer/web-interviewer-instr/index.html @@ -0,0 +1,32 @@ +Web Interviewer Retraining Instructions +

Web Interviewer Retraining Instructions

March 10, 2021

Collecting data with Survey Solutions over the phone

Online approach utilizing any computer with a web-browser

This approach is most suitable for the interviewers working at a location with stable/responsive internet connectivity. +The functionality and interface of the web-interviewer is also described in the pages linked from here. +It is recommended that these generic instructions are reviewed and customized by survey administrators for each particular survey. +The article is oriented on the agencies already having experience in using Survey Solutions for face-to-face (CAPI) surveys and in need to re-orient their operations for the telephone surveys.

Requirements

  1. A phone (any phone will be suitable as long as it is compatible with the cellular provider in your area).
  2. Any computer (desktop or laptop) with web-browser (Chrome, FireFox, Edge) able to connect to the internet.
  3. Possibility to connect to the internet and remain online for the duration of the interview.
  4. Address of the server, interviewer login name and password (these will be communicated to you from the stats office).
  5. Access to an electric outlet/power to keep powering your computer.

Before you start

Before you start collecting the interviews, check that you can connect to the internet, see the status of the connection, understand when the connection is interrupted, etc. Then start the browser of your choice. It is recommended to use the latest supported version of the browser (do not use beta or experimental versions).

You will not need to install anything on the computer/device you are using. Remember to use only one device and always log out after your work.

Daily algorithm

On any day when you work, follow this algorithm:

  1. At the beginning of your shift, connect to the internet, enter the address of the server (synchronization point) to the browser’s address line and proceed to the site. Enter your interviewer’s credentials issued by your office to the login form.
  2. Once logged in, you will find one or more assignments and possibly rejected interviews. Each is appearing as an item (line in the table) on your dashboard.
  3. Each item contains a field named PHONE with a phone number.
  4. It may also contain a person’s name and other identifying information, and possibly a comment on when the number should be dialed. If there is no comment on when to dial, that phone may be called at any time.
  5. Review your work items and determine which one you can contact next. If you have any interviews rejected by your supervisor, give them the priority, then the started interviews that you haven’t finalized, then all the remaining interviews.
  6. Open the interview by clicking the OPEN button on the interview (or START NEW for new interviews).
  7. Take the phone and dial the phone number you are seeing on the interview cover page.
  8. Listen carefully. You may end up in one of the situations below. You will need to mark this situation in the contact outcome in the interview. (Only frequent situations are listed here, your particular questionnaire may provide additional options). +A) The phone is not answered after at least 1 minute of waiting (or the longest allowed by your operator); +B) You get a busy signal; +C) The phone is answered and immediately hang up; +D) The phone is answered by an answering machine; +E) The phone is answered by a FAX or a modem device. +F) The phone is answered by a person. +G) The operator tells you that the phone is not valid or not in service. +H) The operator tells you that connection is not possible at this time. +Z) All other outcomes.
  9. Make sure you record the result of the contact attempt in the interview. Depending on the result of the contact attempt you will:
  • If the phone is answered by a person (f), proceed with the interview.
  • For (a), (b), ( c), (d), and (h) try to reach the same number at a later time.
  • For (e), (g), and (z) you reach the end of this interview. Make sure you mark it as completed.
  1. If you’ve marked the interview as completed, proceed to the next work item.
  2. As you are doing the interview, read the texts from the screen that are marked with READ: prompt. Also read the questions and give the respondent time to think about the answer. When the answer is given, record the answer into the field provided under the question or select the appropriate option of categorical questions. Sometimes you may need to read the options, such as with Y/N-multiselect questions.
  3. As a result of you entering the answers some new questions/sections may appear in the interview or others disappear. Only ask questions that you are seeing suggested by the Interviewer App, even if you remember that you’ve asked different questions of a different respondent.
  4. Just like in CAPI interviews, you may encounter error messages. For example: “Value X is too large”. Before turning it to the respondent, double-check that the value you’ve entered is indeed the value that the respondent just told you. It may be a simple typing/entry error. Other situations you need to clarify with the respondent. For example: “You have told me earlier that there are 3 members in your household. Yet now you are telling me that 4 members are having fever today. Perhaps, you didn’t count someone as a household member earlier?”
  5. During the interview the respondent may decide to interrupt the interview. If you may not finish the interview at this time, make a note in the final section that the interview is not finished, ask the respondent when is the nearest convenient time to call back, and record this time in the final section of the interview. If the respondent refuses categorically to finish the interview, make sure that you record the corresponding outcome and any reason/explanation provided (interview is too long, questions are too sensitive, respondent doesn’t see the purpose, etc).
  6. If at step 14 the interview was finished, or the respondent refused to finish categorically, mark the interview as completed. Remember that you are using a phone to make the calls. Marking the interview as completed will not hang up the phone!
  7. If you agreed with the respondent to make another call during the current shift it is important that you make the contact attempt at the designated time during the current shift and record the corresponding status, and possibly the next contact appointment.
  8. Log out from the website at the end of your shift.
  9. Next time you work, proceed to step #1. You may find some new assignments and some interviews rejected by the supervisors at your dashboard as you keep on working. Not all the interviews that were marked to be continued may be returned to you – your supervisor may decide that they can be better finished by other interviewers.

Notes:

  1. Your work as the web-interviewer will require internet connectivity for the whole duration of the interview. Avoid the use of any other software that may compete for the bandwidth (YouTube, messengers, games, music players, etc).
  2. If at any time you find that you’ve exhausted the allowance for wireless connection (either on the phone you make your phone calls with, or on line you are using for accessing the internet) contact your supervisor and explain.
  3. It is possible that the respondent will request the interview may be continued on the next day “at any time”. Prepare before the start of the interview with a couple of slots that you know are possible for the next day. This will help arrange a schedule with no conflicting appointments.
  4. While it is technically possible to log in from two different devices it is not recommended. Choose one device and one browser you are most comfortable with, and stick to working with it.
  5. It may be technically possible to use the same computer for also making the calls through Skype or other messenger capable of connecting to phone networks. In that case you may not need the phone for making the calls (requirement 1). Make sure this mode provides both sufficient sound quality for maintaining the conversation and reliable connectivity to the data site.
\ No newline at end of file diff --git a/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_close.png b/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_close.png new file mode 100644 index 00000000..8279fd3e Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_close.png differ diff --git a/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_completing.png b/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_completing.png new file mode 100644 index 00000000..a2793db2 Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_completing.png differ diff --git a/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_cover_page.png b/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_cover_page.png new file mode 100644 index 00000000..02fedc83 Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_cover_page.png differ diff --git a/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_interviewing.png b/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_interviewing.png new file mode 100644 index 00000000..1c9b17d5 Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_interviewing.png differ diff --git a/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_start_new.png b/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_start_new.png new file mode 100644 index 00000000..a86a05a6 Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-interviewing/images/web_interviewer_start_new.png differ diff --git a/interviewer/web-interviewer/web-interviewer-interviewing/index.html b/interviewer/web-interviewer/web-interviewer-interviewing/index.html new file mode 100644 index 00000000..d2d1689b --- /dev/null +++ b/interviewer/web-interviewer/web-interviewer-interviewing/index.html @@ -0,0 +1,32 @@ +Web Interviewer Interviewing +

Web Interviewer Interviewing

March 30, 2020

Web interviewers can conduct interviews as per their effective assignments. +To start a new interview, the interviewer switches to the ‘Create new’ +tab and decides which interview to start by inspecting the identifying questions +visible in the assignments table, as well as any comments by the supervisor/HQ, +which may be left by them (last column). Once the interviewer is ready to start +the interview he/she clicks on it and confirms by selecting the corresponding +item in the menu that appears:

From that point on the interview goes on similarly to how it is happening on +a tablet, but the interviewer must remain online during the whole process. The +cover page will show where to locate the respondent

The navigation panel (table of contents) is visible by default, to take +advantage of the wider monitors, but can be closed by clicking the back +arrow button:

At the end of the interview, as on the tablet the counters are presented for

  • number of answered questions;
  • number of unanswered questions;
  • number of answered questions with errors.

No synchronization is necessary after completing the interview. The supervisor +of the responsible interviewer will immediately see it in the list of the +interviews with the status ‘Completed’ (awaiting supervisor’s decision).

\ No newline at end of file diff --git a/interviewer/web-interviewer/web-interviewer-login/images/web_interviewer_login.png b/interviewer/web-interviewer/web-interviewer-login/images/web_interviewer_login.png new file mode 100644 index 00000000..881bf492 Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-login/images/web_interviewer_login.png differ diff --git a/interviewer/web-interviewer/web-interviewer-login/images/web_interviewer_profile.png b/interviewer/web-interviewer/web-interviewer-login/images/web_interviewer_profile.png new file mode 100644 index 00000000..d9b36457 Binary files /dev/null and b/interviewer/web-interviewer/web-interviewer-login/images/web_interviewer_profile.png differ diff --git a/interviewer/web-interviewer/web-interviewer-login/index.html b/interviewer/web-interviewer/web-interviewer-login/index.html new file mode 100644 index 00000000..dd19ec64 --- /dev/null +++ b/interviewer/web-interviewer/web-interviewer-login/index.html @@ -0,0 +1,23 @@ +Web Interviewer Login +

Web Interviewer Login

March 30, 2020

Headquarters and administrator users may create new interviewer accounts. There is no separate web interviewer account. Every interviewer can login to the data server (synchronization point) with their assigned interviewer credentials.

Logging in to the server is usually not required in face-to-face CAPI surveys conducted with tablets. +After successfully logging in, the interviewer can review his/her interviewer profile:

The link to edit personal information (full name, contact phone, and email) is available if permitted by the corresponding setting specified by the server administrator.

In the profile the interviewer will see (among the other counts) the count of interviews done by this interviewer all together (even if already approved by supervisor/headquarters). On the tablet there is no equivalent of this, as tablet counts only reflect the interviews stored on the tablet.

The interviewer may not change his/her own password. Any interviewer wishing to change the password, or remove the locked status must contact his/her supervisor.

The qrcode shown on the interviewer profile page helps set up the Survey Solutions interviewer App on the tablet faster: it can be scanned during the first login to enter the data synchronization point address and interviewer name into the login form. The qrcode does not contain the interviewer’s password.

The interviewer profile may list other statistics as applicable to tablet device if it was ever used by this account. This information will be missing if no device was used by this interviewer.

\ No newline at end of file diff --git a/interviewer/web-interviewer/web-interviewer-overview/index.html b/interviewer/web-interviewer/web-interviewer-overview/index.html new file mode 100644 index 00000000..97d1c606 --- /dev/null +++ b/interviewer/web-interviewer/web-interviewer-overview/index.html @@ -0,0 +1,22 @@ +Web Interviewer Overview +

Web Interviewer Overview

March 30, 2020

Web interviewer is a facility of Survey Solutions allowing the interviewers to work from the server, similar to supervisors and headquarter users.

Similarly to the Interviewer App on the tablet, the web interviewer allows interviewers to view their dashboard and conduct interviews. There are, however, some differences between the web interviewer and the Interviewer App:

Interviewer AppWeb Interviewer
DevicesAndroid-based tabletsAny devices with a web-browser
Access to internetRequired for synchronization onlyRequired all the time
Interviews appear on the serverAfter synchronization of tablet completed interviews will appear in status *Completed*, incomplete interviews don't appear.Immediately as interviews started in status *InterviewerAssigned*, after completion in status *Completed*.
Question types and design structuresLimitations:
  • matrix presentation of categorical questions (will appear as series of individual questions);
  • table presentation of rosters (will appear as roster with item buttons).
Limitations:
  • Geography question not supported;
  • Barcode question (will appear as text);
  • Picture question (upload image only).

Further articles explain particular aspects of working with the the web interviewer:

\ No newline at end of file diff --git a/js/asearch.js b/js/asearch.js new file mode 100644 index 00000000..9dc25f01 --- /dev/null +++ b/js/asearch.js @@ -0,0 +1,88 @@ +var client = algoliasearch("5IDMO489J3", "8d191f12f7e8da9f671648ae51e29570"); +var index = client.initIndex("support.mysurvey.solutions"); +var forumindex = client.initIndex("discourse-posts"); +var enterPressed = false; + +autocomplete('#aa-search-input', + { + hint: false, + debug: false, + templates: { + dropdownMenu: '#my-custom-menu-template', + footer: '
' + } + }, + [ + { + source: autocomplete.sources.hits(index, { hitsPerPage: 4 }), + displayKey: 'title', + name: 'docs', + templates: { + header: function (data, algoliaResponse) { + var title = document.getElementById("docs-tab"); + title.innerText = "Articles " + algoliaResponse.nbHits; + }, + suggestion: function (suggestion) { + return '
' + + '
' + + '' + + suggestion._highlightResult.title.value + + '' + + '' + + suggestion._highlightResult.section.value + + '' + + '
' + + '

' + + suggestion._highlightResult.content.value + + '

' + + '
'; + }, + empty: function () { + var title = document.getElementById("docs-tab"); + title.innerText = "Articles (0)"; + }, + } + }, + { + source: autocomplete.sources.hits(forumindex, { hitsPerPage: 4 }), + displayKey: 'title', + name: 'forum', + templates: { + header: function (data, algoliaResponse) { + var title = document.getElementById("forum-tab"); + title.innerText = "Forum topics " + algoliaResponse.nbHits; + }, + suggestion: function (suggestion) { + return '
' + + '
' + + '' + + suggestion._highlightResult.topic.title.value + + '' + + '' + + suggestion.category.name + + '' + + '
' + + '

' + + suggestion._highlightResult.content.value + + '

' + + '
'; + }, + } + } + ]).on('autocomplete:selected', function (event, suggestion, dataset) { + var siteurl = ''; + if (dataset == 'forum') { + siteurl = 'https://forum.mysurvey.solutions'; + } + window.location.href = siteurl + suggestion.url; + enterPressed = true; + }).on('autocomplete:empty', function () { + document.getElementById("forum-tab").innerText = "Forum topics (0)"; + document.getElementById("docs-tab").innerText = "Articles (0)"; + }).on('keyup', function (event) { + if (event.keyCode == 13 && !enterPressed) { // listen for when enter is pressed + window.location.href = '/search?key=' + document.getElementById("aa-search-input").value; + } + }); \ No newline at end of file diff --git a/js/bootstrap.js b/js/bootstrap.js new file mode 100644 index 00000000..e6419a98 --- /dev/null +++ b/js/bootstrap.js @@ -0,0 +1,3924 @@ +/*! + * Bootstrap v4.1.0 (https://getbootstrap.com/) + * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) : + typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) : + (factory((global.bootstrap = {}),global.jQuery,global.Popper)); +}(this, (function (exports,$,Popper) { 'use strict'; + + $ = $ && $.hasOwnProperty('default') ? $['default'] : $; + Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper; + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + var ownKeys = Object.keys(source); + + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); + } + + ownKeys.forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } + + return target; + } + + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.0): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Util = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + var TRANSITION_END = 'transitionend'; + var MAX_UID = 1000000; + var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) + + function toType(obj) { + return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); + } + + function getSpecialTransitionEndEvent() { + return { + bindType: TRANSITION_END, + delegateType: TRANSITION_END, + handle: function handle(event) { + if ($$$1(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params + } + + return undefined; // eslint-disable-line no-undefined + } + }; + } + + function transitionEndEmulator(duration) { + var _this = this; + + var called = false; + $$$1(this).one(Util.TRANSITION_END, function () { + called = true; + }); + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); + return this; + } + + function setTransitionEndSupport() { + $$$1.fn.emulateTransitionEnd = transitionEndEmulator; + $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + + var Util = { + TRANSITION_END: 'bsTransitionEnd', + getUID: function getUID(prefix) { + do { + // eslint-disable-next-line no-bitwise + prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here + } while (document.getElementById(prefix)); + + return prefix; + }, + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); + + if (!selector || selector === '#') { + selector = element.getAttribute('href') || ''; + } + + try { + var $selector = $$$1(document).find(selector); + return $selector.length > 0 ? selector : null; + } catch (err) { + return null; + } + }, + getTransitionDurationFromElement: function getTransitionDurationFromElement(element) { + if (!element) { + return 0; + } // Get transition-duration of the element + + + var transitionDuration = $$$1(element).css('transition-duration'); + var floatTransitionDuration = parseFloat(transitionDuration); // Return 0 if element or transition duration is not found + + if (!floatTransitionDuration) { + return 0; + } // If multiple durations are defined, take the first + + + transitionDuration = transitionDuration.split(',')[0]; + return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER; + }, + reflow: function reflow(element) { + return element.offsetHeight; + }, + triggerTransitionEnd: function triggerTransitionEnd(element) { + $$$1(element).trigger(TRANSITION_END); + }, + // TODO: Remove in v5 + supportsTransitionEnd: function supportsTransitionEnd() { + return Boolean(TRANSITION_END); + }, + isElement: function isElement(obj) { + return (obj[0] || obj).nodeType; + }, + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { + for (var property in configTypes) { + if (Object.prototype.hasOwnProperty.call(configTypes, property)) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = value && Util.isElement(value) ? 'element' : toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); + } + } + } + } + }; + setTransitionEndSupport(); + return Util; + }($); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.0): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Alert = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'alert'; + var VERSION = '4.1.0'; + var DATA_KEY = 'bs.alert'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var Selector = { + DISMISS: '[data-dismiss="alert"]' + }; + var Event = { + CLOSE: "close" + EVENT_KEY, + CLOSED: "closed" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + ALERT: 'alert', + FADE: 'fade', + SHOW: 'show' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Alert = + /*#__PURE__*/ + function () { + function Alert(element) { + this._element = element; + } // Getters + + + var _proto = Alert.prototype; + + // Public + _proto.close = function close(element) { + element = element || this._element; + + var rootElement = this._getRootElement(element); + + var customEvent = this._triggerCloseEvent(rootElement); + + if (customEvent.isDefaultPrevented()) { + return; + } + + this._removeElement(rootElement); + }; + + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + this._element = null; + }; // Private + + + _proto._getRootElement = function _getRootElement(element) { + var selector = Util.getSelectorFromElement(element); + var parent = false; + + if (selector) { + parent = $$$1(selector)[0]; + } + + if (!parent) { + parent = $$$1(element).closest("." + ClassName.ALERT)[0]; + } + + return parent; + }; + + _proto._triggerCloseEvent = function _triggerCloseEvent(element) { + var closeEvent = $$$1.Event(Event.CLOSE); + $$$1(element).trigger(closeEvent); + return closeEvent; + }; + + _proto._removeElement = function _removeElement(element) { + var _this = this; + + $$$1(element).removeClass(ClassName.SHOW); + + if (!$$$1(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); + + return; + } + + var transitionDuration = Util.getTransitionDurationFromElement(element); + $$$1(element).one(Util.TRANSITION_END, function (event) { + return _this._destroyElement(element, event); + }).emulateTransitionEnd(transitionDuration); + }; + + _proto._destroyElement = function _destroyElement(element) { + $$$1(element).detach().trigger(Event.CLOSED).remove(); + }; // Static + + + Alert._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $element = $$$1(this); + var data = $element.data(DATA_KEY); + + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } + + if (config === 'close') { + data[config](this); + } + }); + }; + + Alert._handleDismiss = function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } + + alertInstance.close(this); + }; + }; + + _createClass(Alert, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }]); + + return Alert; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Alert._jQueryInterface; + $$$1.fn[NAME].Constructor = Alert; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; + + return Alert; + }($); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.0): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Button = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'button'; + var VERSION = '4.1.0'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input', + ACTIVE: '.active', + BUTTON: '.btn' + }; + var Event = { + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, + FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY) + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Button = + /*#__PURE__*/ + function () { + function Button(element) { + this._element = element; + } // Getters + + + var _proto = Button.prototype; + + // Public + _proto.toggle = function toggle() { + var triggerChangeEvent = true; + var addAriaPressed = true; + var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $$$1(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === 'radio') { + if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $$$1(activeElement).removeClass(ClassName.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) { + return; + } + + input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE); + $$$1(input).trigger('change'); + } + + input.focus(); + addAriaPressed = false; + } + } + + if (addAriaPressed) { + this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE)); + } + + if (triggerChangeEvent) { + $$$1(this._element).toggleClass(ClassName.ACTIVE); + } + }; + + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + this._element = null; + }; // Static + + + Button._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + + if (!data) { + data = new Button(this); + $$$1(this).data(DATA_KEY, data); + } + + if (config === 'toggle') { + data[config](); + } + }); + }; + + _createClass(Button, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }]); + + return Button; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + var button = event.target; + + if (!$$$1(button).hasClass(ClassName.BUTTON)) { + button = $$$1(button).closest(Selector.BUTTON); + } + + Button._jQueryInterface.call($$$1(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $$$1(event.target).closest(Selector.BUTTON)[0]; + $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Button._jQueryInterface; + $$$1.fn[NAME].Constructor = Button; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; + }; + + return Button; + }($); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.0): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Carousel = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'carousel'; + var VERSION = '4.1.0'; + var DATA_KEY = 'bs.carousel'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key + + var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key + + var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch + + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true + }; + var DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean' + }; + var Direction = { + NEXT: 'next', + PREV: 'prev', + LEFT: 'left', + RIGHT: 'right' + }; + var Event = { + SLIDE: "slide" + EVENT_KEY, + SLID: "slid" + EVENT_KEY, + KEYDOWN: "keydown" + EVENT_KEY, + MOUSEENTER: "mouseenter" + EVENT_KEY, + MOUSELEAVE: "mouseleave" + EVENT_KEY, + TOUCHEND: "touchend" + EVENT_KEY, + LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'carousel-item-right', + LEFT: 'carousel-item-left', + NEXT: 'carousel-item-next', + PREV: 'carousel-item-prev', + ITEM: 'carousel-item' + }; + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + NEXT_PREV: '.carousel-item-next, .carousel-item-prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Carousel = + /*#__PURE__*/ + function () { + function Carousel(element, config) { + this._items = null; + this._interval = null; + this._activeElement = null; + this._isPaused = false; + this._isSliding = false; + this.touchTimeout = null; + this._config = this._getConfig(config); + this._element = $$$1(element)[0]; + this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0]; + + this._addEventListeners(); + } // Getters + + + var _proto = Carousel.prototype; + + // Public + _proto.next = function next() { + if (!this._isSliding) { + this._slide(Direction.NEXT); + } + }; + + _proto.nextWhenVisible = function nextWhenVisible() { + // Don't call next when the page isn't visible + // or the carousel or its parent isn't visible + if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') { + this.next(); + } + }; + + _proto.prev = function prev() { + if (!this._isSliding) { + this._slide(Direction.PREV); + } + }; + + _proto.pause = function pause(event) { + if (!event) { + this._isPaused = true; + } + + if ($$$1(this._element).find(Selector.NEXT_PREV)[0]) { + Util.triggerTransitionEnd(this._element); + this.cycle(true); + } + + clearInterval(this._interval); + this._interval = null; + }; + + _proto.cycle = function cycle(event) { + if (!event) { + this._isPaused = false; + } + + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + + if (this._config.interval && !this._isPaused) { + this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); + } + }; + + _proto.to = function to(index) { + var _this = this; + + this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; + + var activeIndex = this._getItemIndex(this._activeElement); + + if (index > this._items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + $$$1(this._element).one(Event.SLID, function () { + return _this.to(index); + }); + return; + } + + if (activeIndex === index) { + this.pause(); + this.cycle(); + return; + } + + var direction = index > activeIndex ? Direction.NEXT : Direction.PREV; + + this._slide(direction, this._items[index]); + }; + + _proto.dispose = function dispose() { + $$$1(this._element).off(EVENT_KEY); + $$$1.removeData(this._element, DATA_KEY); + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + }; // Private + + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + _proto._addEventListeners = function _addEventListeners() { + var _this2 = this; + + if (this._config.keyboard) { + $$$1(this._element).on(Event.KEYDOWN, function (event) { + return _this2._keydown(event); + }); + } + + if (this._config.pause === 'hover') { + $$$1(this._element).on(Event.MOUSEENTER, function (event) { + return _this2.pause(event); + }).on(Event.MOUSELEAVE, function (event) { + return _this2.cycle(event); + }); + + if ('ontouchstart' in document.documentElement) { + // If it's a touch-enabled device, mouseenter/leave are fired as + // part of the mouse compatibility events on first tap - the carousel + // would stop cycling until user tapped out of it; + // here, we listen for touchend, explicitly pause the carousel + // (as if it's the second time we tap on it, mouseenter compat event + // is NOT fired) and after a timeout (to allow for mouse compatibility + // events to fire) we explicitly restart cycling + $$$1(this._element).on(Event.TOUCHEND, function () { + _this2.pause(); + + if (_this2.touchTimeout) { + clearTimeout(_this2.touchTimeout); + } + + _this2.touchTimeout = setTimeout(function (event) { + return _this2.cycle(event); + }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval); + }); + } + } + }; + + _proto._keydown = function _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + + switch (event.which) { + case ARROW_LEFT_KEYCODE: + event.preventDefault(); + this.prev(); + break; + + case ARROW_RIGHT_KEYCODE: + event.preventDefault(); + this.next(); + break; + + default: + } + }; + + _proto._getItemIndex = function _getItemIndex(element) { + this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); + }; + + _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREV; + + var activeIndex = this._getItemIndex(activeElement); + + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + + var delta = direction === Direction.PREV ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + }; + + _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { + var targetIndex = this._getItemIndex(relatedTarget); + + var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]); + + var slideEvent = $$$1.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: eventDirectionName, + from: fromIndex, + to: targetIndex + }); + $$$1(this._element).trigger(slideEvent); + return slideEvent; + }; + + _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + + if (nextIndicator) { + $$$1(nextIndicator).addClass(ClassName.ACTIVE); + } + } + }; + + _proto._slide = function _slide(direction, element) { + var _this3 = this; + + var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; + + var activeElementIndex = this._getItemIndex(activeElement); + + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + + var nextElementIndex = this._getItemIndex(nextElement); + + var isCycling = Boolean(this._interval); + var directionalClassName; + var orderClassName; + var eventDirectionName; + + if (direction === Direction.NEXT) { + directionalClassName = ClassName.LEFT; + orderClassName = ClassName.NEXT; + eventDirectionName = Direction.LEFT; + } else { + directionalClassName = ClassName.RIGHT; + orderClassName = ClassName.PREV; + eventDirectionName = Direction.RIGHT; + } + + if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } + + var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); + + if (slideEvent.isDefaultPrevented()) { + return; + } + + if (!activeElement || !nextElement) { + // Some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + var slidEvent = $$$1.Event(Event.SLID, { + relatedTarget: nextElement, + direction: eventDirectionName, + from: activeElementIndex, + to: nextElementIndex + }); + + if ($$$1(this._element).hasClass(ClassName.SLIDE)) { + $$$1(nextElement).addClass(orderClassName); + Util.reflow(nextElement); + $$$1(activeElement).addClass(directionalClassName); + $$$1(nextElement).addClass(directionalClassName); + var transitionDuration = Util.getTransitionDurationFromElement(activeElement); + $$$1(activeElement).one(Util.TRANSITION_END, function () { + $$$1(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE); + $$$1(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName); + _this3._isSliding = false; + setTimeout(function () { + return $$$1(_this3._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(transitionDuration); + } else { + $$$1(activeElement).removeClass(ClassName.ACTIVE); + $$$1(nextElement).addClass(ClassName.ACTIVE); + this._isSliding = false; + $$$1(this._element).trigger(slidEvent); + } + + if (isCycling) { + this.cycle(); + } + }; // Static + + + Carousel._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + + var _config = _objectSpread({}, Default, $$$1(this).data()); + + if (typeof config === 'object') { + _config = _objectSpread({}, _config, config); + } + + var action = typeof config === 'string' ? config : _config.slide; + + if (!data) { + data = new Carousel(this, _config); + $$$1(this).data(DATA_KEY, data); + } + + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (typeof data[action] === 'undefined') { + throw new TypeError("No method named \"" + action + "\""); + } + + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); + } + }); + }; + + Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { + var selector = Util.getSelectorFromElement(this); + + if (!selector) { + return; + } + + var target = $$$1(selector)[0]; + + if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) { + return; + } + + var config = _objectSpread({}, $$$1(target).data(), $$$1(this).data()); + + var slideIndex = this.getAttribute('data-slide-to'); + + if (slideIndex) { + config.interval = false; + } + + Carousel._jQueryInterface.call($$$1(target), config); + + if (slideIndex) { + $$$1(target).data(DATA_KEY).to(slideIndex); + } + + event.preventDefault(); + }; + + _createClass(Carousel, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }]); + + return Carousel; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); + $$$1(window).on(Event.LOAD_DATA_API, function () { + $$$1(Selector.DATA_RIDE).each(function () { + var $carousel = $$$1(this); + + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Carousel._jQueryInterface; + $$$1.fn[NAME].Constructor = Carousel; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; + + return Carousel; + }($); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.0): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Collapse = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'collapse'; + var VERSION = '4.1.0'; + var DATA_KEY = 'bs.collapse'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var Default = { + toggle: true, + parent: '' + }; + var DefaultType = { + toggle: 'boolean', + parent: '(string|element)' + }; + var Event = { + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + SHOW: 'show', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' + }; + var Selector = { + ACTIVES: '.show, .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Collapse = + /*#__PURE__*/ + function () { + function Collapse(element, config) { + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); + var tabToggles = $$$1(Selector.DATA_TOGGLE); + + for (var i = 0; i < tabToggles.length; i++) { + var elem = tabToggles[i]; + var selector = Util.getSelectorFromElement(elem); + + if (selector !== null && $$$1(selector).filter(element).length > 0) { + this._selector = selector; + + this._triggerArray.push(elem); + } + } + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } + + if (this._config.toggle) { + this.toggle(); + } + } // Getters + + + var _proto = Collapse.prototype; + + // Public + _proto.toggle = function toggle() { + if ($$$1(this._element).hasClass(ClassName.SHOW)) { + this.hide(); + } else { + this.show(); + } + }; + + _proto.show = function show() { + var _this = this; + + if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) { + return; + } + + var actives; + var activesData; + + if (this._parent) { + actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]")); + + if (actives.length === 0) { + actives = null; + } + } + + if (actives) { + activesData = $$$1(actives).not(this._selector).data(DATA_KEY); + + if (activesData && activesData._isTransitioning) { + return; + } + } + + var startEvent = $$$1.Event(Event.SHOW); + $$$1(this._element).trigger(startEvent); + + if (startEvent.isDefaultPrevented()) { + return; + } + + if (actives) { + Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide'); + + if (!activesData) { + $$$1(actives).data(DATA_KEY, null); + } + } + + var dimension = this._getDimension(); + + $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); + this._element.style[dimension] = 0; + + if (this._triggerArray.length > 0) { + $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } + + this.setTransitioning(true); + + var complete = function complete() { + $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); + _this._element.style[dimension] = ''; + + _this.setTransitioning(false); + + $$$1(_this._element).trigger(Event.SHOWN); + }; + + var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + var scrollSize = "scroll" + capitalizedDimension; + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + this._element.style[dimension] = this._element[scrollSize] + "px"; + }; + + _proto.hide = function hide() { + var _this2 = this; + + if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) { + return; + } + + var startEvent = $$$1.Event(Event.HIDE); + $$$1(this._element).trigger(startEvent); + + if (startEvent.isDefaultPrevented()) { + return; + } + + var dimension = this._getDimension(); + + this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; + Util.reflow(this._element); + $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); + + if (this._triggerArray.length > 0) { + for (var i = 0; i < this._triggerArray.length; i++) { + var trigger = this._triggerArray[i]; + var selector = Util.getSelectorFromElement(trigger); + + if (selector !== null) { + var $elem = $$$1(selector); + + if (!$elem.hasClass(ClassName.SHOW)) { + $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } + } + } + } + + this.setTransitioning(true); + + var complete = function complete() { + _this2.setTransitioning(false); + + $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; + + this._element.style[dimension] = ''; + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + }; + + _proto.setTransitioning = function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + }; + + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + }; // Private + + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, Default, config); + config.toggle = Boolean(config.toggle); // Coerce string values + + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + _proto._getDimension = function _getDimension() { + var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + }; + + _proto._getParent = function _getParent() { + var _this3 = this; + + var parent = null; + + if (Util.isElement(this._config.parent)) { + parent = this._config.parent; // It's a jQuery object + + if (typeof this._config.parent.jquery !== 'undefined') { + parent = this._config.parent[0]; + } + } else { + parent = $$$1(this._config.parent)[0]; + } + + var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; + $$$1(parent).find(selector).each(function (i, element) { + _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + return parent; + }; + + _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + var isOpen = $$$1(element).hasClass(ClassName.SHOW); + + if (triggerArray.length > 0) { + $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } + }; // Static + + + Collapse._getTargetFromElement = function _getTargetFromElement(element) { + var selector = Util.getSelectorFromElement(element); + return selector ? $$$1(selector)[0] : null; + }; + + Collapse._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $this = $$$1(this); + var data = $this.data(DATA_KEY); + + var _config = _objectSpread({}, Default, $this.data(), typeof config === 'object' && config); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } + + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + _createClass(Collapse, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }]); + + return Collapse; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + // preventDefault only for elements (which change the URL) not inside the collapsible element + if (event.currentTarget.tagName === 'A') { + event.preventDefault(); + } + + var $trigger = $$$1(this); + var selector = Util.getSelectorFromElement(this); + $$$1(selector).each(function () { + var $target = $$$1(this); + var data = $target.data(DATA_KEY); + var config = data ? 'toggle' : $trigger.data(); + + Collapse._jQueryInterface.call($target, config); + }); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Collapse._jQueryInterface; + $$$1.fn[NAME].Constructor = Collapse; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; + + return Collapse; + }($); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.0): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Dropdown = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'dropdown'; + var VERSION = '4.1.0'; + var DATA_KEY = 'bs.dropdown'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key + + var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key + + var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key + + var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key + + var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) + + var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE); + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + CLICK: "click" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, + KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY, + KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + DISABLED: 'disabled', + SHOW: 'show', + DROPUP: 'dropup', + DROPRIGHT: 'dropright', + DROPLEFT: 'dropleft', + MENURIGHT: 'dropdown-menu-right', + MENULEFT: 'dropdown-menu-left', + POSITION_STATIC: 'position-static' + }; + var Selector = { + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + MENU: '.dropdown-menu', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)' + }; + var AttachmentMap = { + TOP: 'top-start', + TOPEND: 'top-end', + BOTTOM: 'bottom-start', + BOTTOMEND: 'bottom-end', + RIGHT: 'right-start', + RIGHTEND: 'right-end', + LEFT: 'left-start', + LEFTEND: 'left-end' + }; + var Default = { + offset: 0, + flip: true, + boundary: 'scrollParent', + reference: 'toggle', + display: 'dynamic' + }; + var DefaultType = { + offset: '(number|string|function)', + flip: 'boolean', + boundary: '(string|element)', + reference: '(string|element)', + display: 'string' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Dropdown = + /*#__PURE__*/ + function () { + function Dropdown(element, config) { + this._element = element; + this._popper = null; + this._config = this._getConfig(config); + this._menu = this._getMenuElement(); + this._inNavbar = this._detectNavbar(); + + this._addEventListeners(); + } // Getters + + + var _proto = Dropdown.prototype; + + // Public + _proto.toggle = function toggle() { + if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this._element); + + var isActive = $$$1(this._menu).hasClass(ClassName.SHOW); + + Dropdown._clearMenus(); + + if (isActive) { + return; + } + + var relatedTarget = { + relatedTarget: this._element + }; + var showEvent = $$$1.Event(Event.SHOW, relatedTarget); + $$$1(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return; + } // Disable totally Popper.js for Dropdown in Navbar + + + if (!this._inNavbar) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)'); + } + + var referenceElement = this._element; + + if (this._config.reference === 'parent') { + referenceElement = parent; + } else if (Util.isElement(this._config.reference)) { + referenceElement = this._config.reference; // Check if it's jQuery element + + if (typeof this._config.reference.jquery !== 'undefined') { + referenceElement = this._config.reference[0]; + } + } // If boundary is not `scrollParent`, then set position to `static` + // to allow the menu to "escape" the scroll parent's boundaries + // https://github.com/twbs/bootstrap/issues/24251 + + + if (this._config.boundary !== 'scrollParent') { + $$$1(parent).addClass(ClassName.POSITION_STATIC); + } + + this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig()); + } // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + + if ('ontouchstart' in document.documentElement && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) { + $$$1(document.body).children().on('mouseover', null, $$$1.noop); + } + + this._element.focus(); + + this._element.setAttribute('aria-expanded', true); + + $$$1(this._menu).toggleClass(ClassName.SHOW); + $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget)); + }; + + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + $$$1(this._element).off(EVENT_KEY); + this._element = null; + this._menu = null; + + if (this._popper !== null) { + this._popper.destroy(); + + this._popper = null; + } + }; + + _proto.update = function update() { + this._inNavbar = this._detectNavbar(); + + if (this._popper !== null) { + this._popper.scheduleUpdate(); + } + }; // Private + + + _proto._addEventListeners = function _addEventListeners() { + var _this = this; + + $$$1(this._element).on(Event.CLICK, function (event) { + event.preventDefault(); + event.stopPropagation(); + + _this.toggle(); + }); + }; + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, this.constructor.Default, $$$1(this._element).data(), config); + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + return config; + }; + + _proto._getMenuElement = function _getMenuElement() { + if (!this._menu) { + var parent = Dropdown._getParentFromElement(this._element); + + this._menu = $$$1(parent).find(Selector.MENU)[0]; + } + + return this._menu; + }; + + _proto._getPlacement = function _getPlacement() { + var $parentDropdown = $$$1(this._element).parent(); + var placement = AttachmentMap.BOTTOM; // Handle dropup + + if ($parentDropdown.hasClass(ClassName.DROPUP)) { + placement = AttachmentMap.TOP; + + if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { + placement = AttachmentMap.TOPEND; + } + } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) { + placement = AttachmentMap.RIGHT; + } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) { + placement = AttachmentMap.LEFT; + } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { + placement = AttachmentMap.BOTTOMEND; + } + + return placement; + }; + + _proto._detectNavbar = function _detectNavbar() { + return $$$1(this._element).closest('.navbar').length > 0; + }; + + _proto._getPopperConfig = function _getPopperConfig() { + var _this2 = this; + + var offsetConf = {}; + + if (typeof this._config.offset === 'function') { + offsetConf.fn = function (data) { + data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets) || {}); + return data; + }; + } else { + offsetConf.offset = this._config.offset; + } + + var popperConfig = { + placement: this._getPlacement(), + modifiers: { + offset: offsetConf, + flip: { + enabled: this._config.flip + }, + preventOverflow: { + boundariesElement: this._config.boundary + } + } // Disable Popper.js if we have a static display + + }; + + if (this._config.display === 'static') { + popperConfig.modifiers.applyStyle = { + enabled: false + }; + } + + return popperConfig; + }; // Static + + + Dropdown._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + + var _config = typeof config === 'object' ? config : null; + + if (!data) { + data = new Dropdown(this, _config); + $$$1(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + Dropdown._clearMenus = function _clearMenus(event) { + if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { + return; + } + + var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE)); + + for (var i = 0; i < toggles.length; i++) { + var parent = Dropdown._getParentFromElement(toggles[i]); + + var context = $$$1(toggles[i]).data(DATA_KEY); + var relatedTarget = { + relatedTarget: toggles[i] + }; + + if (!context) { + continue; + } + + var dropdownMenu = context._menu; + + if (!$$$1(parent).hasClass(ClassName.SHOW)) { + continue; + } + + if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) { + continue; + } + + var hideEvent = $$$1.Event(Event.HIDE, relatedTarget); + $$$1(parent).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + continue; + } // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + + if ('ontouchstart' in document.documentElement) { + $$$1(document.body).children().off('mouseover', null, $$$1.noop); + } + + toggles[i].setAttribute('aria-expanded', 'false'); + $$$1(dropdownMenu).removeClass(ClassName.SHOW); + $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget)); + } + }; + + Dropdown._getParentFromElement = function _getParentFromElement(element) { + var parent; + var selector = Util.getSelectorFromElement(element); + + if (selector) { + parent = $$$1(selector)[0]; + } + + return parent || element.parentNode; + }; // eslint-disable-next-line complexity + + + Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { + // If not input/textarea: + // - And not a key in REGEXP_KEYDOWN => not a dropdown command + // If input/textarea: + // - If space key => not a dropdown command + // - If key is other than escape + // - If key is not up or down => not a dropdown command + // - If trigger inside the menu => not a dropdown command + if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + + var isActive = $$$1(parent).hasClass(ClassName.SHOW); + + if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { + if (event.which === ESCAPE_KEYCODE) { + var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0]; + $$$1(toggle).trigger('focus'); + } + + $$$1(this).trigger('click'); + return; + } + + var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get(); + + if (items.length === 0) { + return; + } + + var index = items.indexOf(event.target); + + if (event.which === ARROW_UP_KEYCODE && index > 0) { + // Up + index--; + } + + if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { + // Down + index++; + } + + if (index < 0) { + index = 0; + } + + items[index].focus(); + }; + + _createClass(Dropdown, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType; + } + }]); + + return Dropdown; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $$$1(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + event.stopPropagation(); + + Dropdown._jQueryInterface.call($$$1(this), 'toggle'); + }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Dropdown._jQueryInterface; + $$$1.fn[NAME].Constructor = Dropdown; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; + + return Dropdown; + }($, Popper); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.0): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Modal = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'modal'; + var VERSION = '4.1.0'; + var DATA_KEY = 'bs.modal'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + var DefaultType = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + FOCUSIN: "focusin" + EVENT_KEY, + RESIZE: "resize" + EVENT_KEY, + CLICK_DISMISS: "click.dismiss" + EVENT_KEY, + KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY, + MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY, + MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + SCROLLBAR_MEASURER: 'modal-scrollbar-measure', + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + SHOW: 'show' + }; + var Selector = { + DIALOG: '.modal-dialog', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', + STICKY_CONTENT: '.sticky-top', + NAVBAR_TOGGLER: '.navbar-toggler' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Modal = + /*#__PURE__*/ + function () { + function Modal(element, config) { + this._config = this._getConfig(config); + this._element = element; + this._dialog = $$$1(element).find(Selector.DIALOG)[0]; + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._scrollbarWidth = 0; + } // Getters + + + var _proto = Modal.prototype; + + // Public + _proto.toggle = function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + }; + + _proto.show = function show(relatedTarget) { + var _this = this; + + if (this._isTransitioning || this._isShown) { + return; + } + + if ($$$1(this._element).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + } + + var showEvent = $$$1.Event(Event.SHOW, { + relatedTarget: relatedTarget + }); + $$$1(this._element).trigger(showEvent); + + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } + + this._isShown = true; + + this._checkScrollbar(); + + this._setScrollbar(); + + this._adjustDialog(); + + $$$1(document.body).addClass(ClassName.OPEN); + + this._setEscapeEvent(); + + this._setResizeEvent(); + + $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) { + return _this.hide(event); + }); + $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($$$1(event.target).is(_this._element)) { + _this._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop(function () { + return _this._showElement(relatedTarget); + }); + }; + + _proto.hide = function hide(event) { + var _this2 = this; + + if (event) { + event.preventDefault(); + } + + if (this._isTransitioning || !this._isShown) { + return; + } + + var hideEvent = $$$1.Event(Event.HIDE); + $$$1(this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } + + this._isShown = false; + var transition = $$$1(this._element).hasClass(ClassName.FADE); + + if (transition) { + this._isTransitioning = true; + } + + this._setEscapeEvent(); + + this._setResizeEvent(); + + $$$1(document).off(Event.FOCUSIN); + $$$1(this._element).removeClass(ClassName.SHOW); + $$$1(this._element).off(Event.CLICK_DISMISS); + $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS); + + if (transition) { + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $$$1(this._element).one(Util.TRANSITION_END, function (event) { + return _this2._hideModal(event); + }).emulateTransitionEnd(transitionDuration); + } else { + this._hideModal(); + } + }; + + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY); + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._scrollbarWidth = null; + }; + + _proto.handleUpdate = function handleUpdate() { + this._adjustDialog(); + }; // Private + + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + _proto._showElement = function _showElement(relatedTarget) { + var _this3 = this; + + var transition = $$$1(this._element).hasClass(ClassName.FADE); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // Don't move modal's DOM position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + + this._element.removeAttribute('aria-hidden'); + + this._element.scrollTop = 0; + + if (transition) { + Util.reflow(this._element); + } + + $$$1(this._element).addClass(ClassName.SHOW); + + if (this._config.focus) { + this._enforceFocus(); + } + + var shownEvent = $$$1.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); + + var transitionComplete = function transitionComplete() { + if (_this3._config.focus) { + _this3._element.focus(); + } + + _this3._isTransitioning = false; + $$$1(_this3._element).trigger(shownEvent); + }; + + if (transition) { + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration); + } else { + transitionComplete(); + } + }; + + _proto._enforceFocus = function _enforceFocus() { + var _this4 = this; + + $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) { + _this4._element.focus(); + } + }); + }; + + _proto._setEscapeEvent = function _setEscapeEvent() { + var _this5 = this; + + if (this._isShown && this._config.keyboard) { + $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === ESCAPE_KEYCODE) { + event.preventDefault(); + + _this5.hide(); + } + }); + } else if (!this._isShown) { + $$$1(this._element).off(Event.KEYDOWN_DISMISS); + } + }; + + _proto._setResizeEvent = function _setResizeEvent() { + var _this6 = this; + + if (this._isShown) { + $$$1(window).on(Event.RESIZE, function (event) { + return _this6.handleUpdate(event); + }); + } else { + $$$1(window).off(Event.RESIZE); + } + }; + + _proto._hideModal = function _hideModal() { + var _this7 = this; + + this._element.style.display = 'none'; + + this._element.setAttribute('aria-hidden', true); + + this._isTransitioning = false; + + this._showBackdrop(function () { + $$$1(document.body).removeClass(ClassName.OPEN); + + _this7._resetAdjustments(); + + _this7._resetScrollbar(); + + $$$1(_this7._element).trigger(Event.HIDDEN); + }); + }; + + _proto._removeBackdrop = function _removeBackdrop() { + if (this._backdrop) { + $$$1(this._backdrop).remove(); + this._backdrop = null; + } + }; + + _proto._showBackdrop = function _showBackdrop(callback) { + var _this8 = this; + + var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; + + if (this._isShown && this._config.backdrop) { + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; + + if (animate) { + $$$1(this._backdrop).addClass(animate); + } + + $$$1(this._backdrop).appendTo(document.body); + $$$1(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this8._ignoreBackdropClick) { + _this8._ignoreBackdropClick = false; + return; + } + + if (event.target !== event.currentTarget) { + return; + } + + if (_this8._config.backdrop === 'static') { + _this8._element.focus(); + } else { + _this8.hide(); + } + }); + + if (animate) { + Util.reflow(this._backdrop); + } + + $$$1(this._backdrop).addClass(ClassName.SHOW); + + if (!callback) { + return; + } + + if (!animate) { + callback(); + return; + } + + var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration); + } else if (!this._isShown && this._backdrop) { + $$$1(this._backdrop).removeClass(ClassName.SHOW); + + var callbackRemove = function callbackRemove() { + _this8._removeBackdrop(); + + if (callback) { + callback(); + } + }; + + if ($$$1(this._element).hasClass(ClassName.FADE)) { + var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + + $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + }; // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- + + + _proto._adjustDialog = function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + "px"; + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + "px"; + } + }; + + _proto._resetAdjustments = function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + }; + + _proto._checkScrollbar = function _checkScrollbar() { + var rect = document.body.getBoundingClientRect(); + this._isBodyOverflowing = rect.left + rect.right < window.innerWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + }; + + _proto._setScrollbar = function _setScrollbar() { + var _this9 = this; + + if (this._isBodyOverflowing) { + // Note: DOMNode.style.paddingRight returns the actual value or '' if not set + // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set + // Adjust fixed content padding + $$$1(Selector.FIXED_CONTENT).each(function (index, element) { + var actualPadding = $$$1(element)[0].style.paddingRight; + var calculatedPadding = $$$1(element).css('padding-right'); + $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px"); + }); // Adjust sticky content margin + + $$$1(Selector.STICKY_CONTENT).each(function (index, element) { + var actualMargin = $$$1(element)[0].style.marginRight; + var calculatedMargin = $$$1(element).css('margin-right'); + $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px"); + }); // Adjust navbar-toggler margin + + $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) { + var actualMargin = $$$1(element)[0].style.marginRight; + var calculatedMargin = $$$1(element).css('margin-right'); + $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px"); + }); // Adjust body padding + + var actualPadding = document.body.style.paddingRight; + var calculatedPadding = $$$1(document.body).css('padding-right'); + $$$1(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); + } + }; + + _proto._resetScrollbar = function _resetScrollbar() { + // Restore fixed content padding + $$$1(Selector.FIXED_CONTENT).each(function (index, element) { + var padding = $$$1(element).data('padding-right'); + + if (typeof padding !== 'undefined') { + $$$1(element).css('padding-right', padding).removeData('padding-right'); + } + }); // Restore sticky content and navbar-toggler margin + + $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) { + var margin = $$$1(element).data('margin-right'); + + if (typeof margin !== 'undefined') { + $$$1(element).css('margin-right', margin).removeData('margin-right'); + } + }); // Restore body padding + + var padding = $$$1(document.body).data('padding-right'); + + if (typeof padding !== 'undefined') { + $$$1(document.body).css('padding-right', padding).removeData('padding-right'); + } + }; + + _proto._getScrollbarWidth = function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = ClassName.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + }; // Static + + + Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + + var _config = _objectSpread({}, Modal.Default, $$$1(this).data(), typeof config === 'object' && config); + + if (!data) { + data = new Modal(this, _config); + $$$1(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + }; + + _createClass(Modal, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }]); + + return Modal; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this10 = this; + + var target; + var selector = Util.getSelectorFromElement(this); + + if (selector) { + target = $$$1(selector)[0]; + } + + var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _objectSpread({}, $$$1(target).data(), $$$1(this).data()); + + if (this.tagName === 'A' || this.tagName === 'AREA') { + event.preventDefault(); + } + + var $target = $$$1(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // Only register focus restorer if modal will actually get shown + return; + } + + $target.one(Event.HIDDEN, function () { + if ($$$1(_this10).is(':visible')) { + _this10.focus(); + } + }); + }); + + Modal._jQueryInterface.call($$$1(target), config, this); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Modal._jQueryInterface; + $$$1.fn[NAME].Constructor = Modal; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; + + return Modal; + }($); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.0): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Tooltip = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'tooltip'; + var VERSION = '4.1.0'; + var DATA_KEY = 'bs.tooltip'; + var EVENT_KEY = "." + DATA_KEY; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var CLASS_PREFIX = 'bs-tooltip'; + var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); + var DefaultType = { + animation: 'boolean', + template: 'string', + title: '(string|element|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: '(number|string)', + container: '(string|element|boolean)', + fallbackPlacement: '(string|array)', + boundary: '(string|element)' + }; + var AttachmentMap = { + AUTO: 'auto', + TOP: 'top', + RIGHT: 'right', + BOTTOM: 'bottom', + LEFT: 'left' + }; + var Default = { + animation: true, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: 0, + container: false, + fallbackPlacement: 'flip', + boundary: 'scrollParent' + }; + var HoverState = { + SHOW: 'show', + OUT: 'out' + }; + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + INSERTED: "inserted" + EVENT_KEY, + CLICK: "click" + EVENT_KEY, + FOCUSIN: "focusin" + EVENT_KEY, + FOCUSOUT: "focusout" + EVENT_KEY, + MOUSEENTER: "mouseenter" + EVENT_KEY, + MOUSELEAVE: "mouseleave" + EVENT_KEY + }; + var ClassName = { + FADE: 'fade', + SHOW: 'show' + }; + var Selector = { + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner', + ARROW: '.arrow' + }; + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Tooltip = + /*#__PURE__*/ + function () { + function Tooltip(element, config) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)'); + } // private + + + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._popper = null; // Protected + + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } // Getters + + + var _proto = Tooltip.prototype; + + // Public + _proto.enable = function enable() { + this._isEnabled = true; + }; + + _proto.disable = function disable() { + this._isEnabled = false; + }; + + _proto.toggleEnabled = function toggleEnabled() { + this._isEnabled = !this._isEnabled; + }; + + _proto.toggle = function toggle(event) { + if (!this._isEnabled) { + return; + } + + if (event) { + var dataKey = this.constructor.DATA_KEY; + var context = $$$1(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $$$1(event.currentTarget).data(dataKey, context); + } + + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) { + this._leave(null, this); + + return; + } + + this._enter(null, this); + } + }; + + _proto.dispose = function dispose() { + clearTimeout(this._timeout); + $$$1.removeData(this.element, this.constructor.DATA_KEY); + $$$1(this.element).off(this.constructor.EVENT_KEY); + $$$1(this.element).closest('.modal').off('hide.bs.modal'); + + if (this.tip) { + $$$1(this.tip).remove(); + } + + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + + if (this._popper !== null) { + this._popper.destroy(); + } + + this._popper = null; + this.element = null; + this.config = null; + this.tip = null; + }; + + _proto.show = function show() { + var _this = this; + + if ($$$1(this.element).css('display') === 'none') { + throw new Error('Please use show on visible elements'); + } + + var showEvent = $$$1.Event(this.constructor.Event.SHOW); + + if (this.isWithContent() && this._isEnabled) { + $$$1(this.element).trigger(showEvent); + var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element); + + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } + + var tip = this.getTipElement(); + var tipId = Util.getUID(this.constructor.NAME); + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + this.setContent(); + + if (this.config.animation) { + $$$1(tip).addClass(ClassName.FADE); + } + + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + + var attachment = this._getAttachment(placement); + + this.addAttachmentClass(attachment); + var container = this.config.container === false ? document.body : $$$1(this.config.container); + $$$1(tip).data(this.constructor.DATA_KEY, this); + + if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) { + $$$1(tip).appendTo(container); + } + + $$$1(this.element).trigger(this.constructor.Event.INSERTED); + this._popper = new Popper(this.element, tip, { + placement: attachment, + modifiers: { + offset: { + offset: this.config.offset + }, + flip: { + behavior: this.config.fallbackPlacement + }, + arrow: { + element: Selector.ARROW + }, + preventOverflow: { + boundariesElement: this.config.boundary + } + }, + onCreate: function onCreate(data) { + if (data.originalPlacement !== data.placement) { + _this._handlePopperPlacementChange(data); + } + }, + onUpdate: function onUpdate(data) { + _this._handlePopperPlacementChange(data); + } + }); + $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + if ('ontouchstart' in document.documentElement) { + $$$1(document.body).children().on('mouseover', null, $$$1.noop); + } + + var complete = function complete() { + if (_this.config.animation) { + _this._fixTransition(); + } + + var prevHoverState = _this._hoverState; + _this._hoverState = null; + $$$1(_this.element).trigger(_this.constructor.Event.SHOWN); + + if (prevHoverState === HoverState.OUT) { + _this._leave(null, _this); + } + }; + + if ($$$1(this.tip).hasClass(ClassName.FADE)) { + var transitionDuration = Util.getTransitionDurationFromElement(this.tip); + $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + } else { + complete(); + } + } + }; + + _proto.hide = function hide(callback) { + var _this2 = this; + + var tip = this.getTipElement(); + var hideEvent = $$$1.Event(this.constructor.Event.HIDE); + + var complete = function complete() { + if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) { + tip.parentNode.removeChild(tip); + } + + _this2._cleanTipClass(); + + _this2.element.removeAttribute('aria-describedby'); + + $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN); + + if (_this2._popper !== null) { + _this2._popper.destroy(); + } + + if (callback) { + callback(); + } + }; + + $$$1(this.element).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + if ('ontouchstart' in document.documentElement) { + $$$1(document.body).children().off('mouseover', null, $$$1.noop); + } + + this._activeTrigger[Trigger.CLICK] = false; + this._activeTrigger[Trigger.FOCUS] = false; + this._activeTrigger[Trigger.HOVER] = false; + + if ($$$1(this.tip).hasClass(ClassName.FADE)) { + var transitionDuration = Util.getTransitionDurationFromElement(tip); + $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + } else { + complete(); + } + + this._hoverState = ''; + }; + + _proto.update = function update() { + if (this._popper !== null) { + this._popper.scheduleUpdate(); + } + }; // Protected + + + _proto.isWithContent = function isWithContent() { + return Boolean(this.getTitle()); + }; + + _proto.addAttachmentClass = function addAttachmentClass(attachment) { + $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); + }; + + _proto.getTipElement = function getTipElement() { + this.tip = this.tip || $$$1(this.config.template)[0]; + return this.tip; + }; + + _proto.setContent = function setContent() { + var $tip = $$$1(this.getTipElement()); + this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle()); + $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); + }; + + _proto.setElementContent = function setElementContent($element, content) { + var html = this.config.html; + + if (typeof content === 'object' && (content.nodeType || content.jquery)) { + // Content is a DOM node or a jQuery + if (html) { + if (!$$$1(content).parent().is($element)) { + $element.empty().append(content); + } + } else { + $element.text($$$1(content).text()); + } + } else { + $element[html ? 'html' : 'text'](content); + } + }; + + _proto.getTitle = function getTitle() { + var title = this.element.getAttribute('data-original-title'); + + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } + + return title; + }; // Private + + + _proto._getAttachment = function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + }; + + _proto._setListeners = function _setListeners() { + var _this3 = this; + + var triggers = this.config.trigger.split(' '); + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) { + return _this3.toggle(event); + }); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN; + var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT; + $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) { + return _this3._enter(event); + }).on(eventOut, _this3.config.selector, function (event) { + return _this3._leave(event); + }); + } + + $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () { + return _this3.hide(); + }); + }); + + if (this.config.selector) { + this.config = _objectSpread({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + }; + + _proto._fixTitle = function _fixTitle() { + var titleType = typeof this.element.getAttribute('data-original-title'); + + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + }; + + _proto._enter = function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $$$1(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $$$1(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } + + if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) { + context._hoverState = HoverState.SHOW; + return; + } + + clearTimeout(context._timeout); + context._hoverState = HoverState.SHOW; + + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.SHOW) { + context.show(); + } + }, context.config.delay.show); + }; + + _proto._leave = function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $$$1(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $$$1(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + context._hoverState = HoverState.OUT; + + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + }; + + _proto._isWithActiveTrigger = function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + }; + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, this.constructor.Default, $$$1(this.element).data(), config); + + if (typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + if (typeof config.title === 'number') { + config.title = config.title.toString(); + } + + if (typeof config.content === 'number') { + config.content = config.content.toString(); + } + + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + return config; + }; + + _proto._getDelegateConfig = function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + if (this.constructor.Default[key] !== this.config[key]) { + config[key] = this.config[key]; + } + } + } + + return config; + }; + + _proto._cleanTipClass = function _cleanTipClass() { + var $tip = $$$1(this.getTipElement()); + var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); + + if (tabClass !== null && tabClass.length > 0) { + $tip.removeClass(tabClass.join('')); + } + }; + + _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) { + this._cleanTipClass(); + + this.addAttachmentClass(this._getAttachment(data.placement)); + }; + + _proto._fixTransition = function _fixTransition() { + var tip = this.getTipElement(); + var initConfigAnimation = this.config.animation; + + if (tip.getAttribute('x-placement') !== null) { + return; + } + + $$$1(tip).removeClass(ClassName.FADE); + this.config.animation = false; + this.hide(); + this.show(); + this.config.animation = initConfigAnimation; + }; // Static + + + Tooltip._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + + var _config = typeof config === 'object' && config; + + if (!data && /dispose|hide/.test(config)) { + return; + } + + if (!data) { + data = new Tooltip(this, _config); + $$$1(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + _createClass(Tooltip, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }, { + key: "NAME", + get: function get() { + return NAME; + } + }, { + key: "DATA_KEY", + get: function get() { + return DATA_KEY; + } + }, { + key: "Event", + get: function get() { + return Event; + } + }, { + key: "EVENT_KEY", + get: function get() { + return EVENT_KEY; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType; + } + }]); + + return Tooltip; + }(); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + + $$$1.fn[NAME] = Tooltip._jQueryInterface; + $$$1.fn[NAME].Constructor = Tooltip; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; + + return Tooltip; + }($, Popper); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.0): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Popover = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'popover'; + var VERSION = '4.1.0'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = "." + DATA_KEY; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var CLASS_PREFIX = 'bs-popover'; + var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); + + var Default = _objectSpread({}, Tooltip.Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }); + + var DefaultType = _objectSpread({}, Tooltip.DefaultType, { + content: '(string|element|function)' + }); + + var ClassName = { + FADE: 'fade', + SHOW: 'show' + }; + var Selector = { + TITLE: '.popover-header', + CONTENT: '.popover-body' + }; + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + INSERTED: "inserted" + EVENT_KEY, + CLICK: "click" + EVENT_KEY, + FOCUSIN: "focusin" + EVENT_KEY, + FOCUSOUT: "focusout" + EVENT_KEY, + MOUSEENTER: "mouseenter" + EVENT_KEY, + MOUSELEAVE: "mouseleave" + EVENT_KEY + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Popover = + /*#__PURE__*/ + function (_Tooltip) { + _inheritsLoose(Popover, _Tooltip); + + function Popover() { + return _Tooltip.apply(this, arguments) || this; + } + + var _proto = Popover.prototype; + + // Overrides + _proto.isWithContent = function isWithContent() { + return this.getTitle() || this._getContent(); + }; + + _proto.addAttachmentClass = function addAttachmentClass(attachment) { + $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); + }; + + _proto.getTipElement = function getTipElement() { + this.tip = this.tip || $$$1(this.config.template)[0]; + return this.tip; + }; + + _proto.setContent = function setContent() { + var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events + + this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); + + var content = this._getContent(); + + if (typeof content === 'function') { + content = content.call(this.element); + } + + this.setElementContent($tip.find(Selector.CONTENT), content); + $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); + }; // Private + + + _proto._getContent = function _getContent() { + return this.element.getAttribute('data-content') || this.config.content; + }; + + _proto._cleanTipClass = function _cleanTipClass() { + var $tip = $$$1(this.getTipElement()); + var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); + + if (tabClass !== null && tabClass.length > 0) { + $tip.removeClass(tabClass.join('')); + } + }; // Static + + + Popover._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + + var _config = typeof config === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; + } + + if (!data) { + data = new Popover(this, _config); + $$$1(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + _createClass(Popover, null, [{ + key: "VERSION", + // Getters + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }, { + key: "NAME", + get: function get() { + return NAME; + } + }, { + key: "DATA_KEY", + get: function get() { + return DATA_KEY; + } + }, { + key: "Event", + get: function get() { + return Event; + } + }, { + key: "EVENT_KEY", + get: function get() { + return EVENT_KEY; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType; + } + }]); + + return Popover; + }(Tooltip); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + + $$$1.fn[NAME] = Popover._jQueryInterface; + $$$1.fn[NAME].Constructor = Popover; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; + + return Popover; + }($); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.0): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var ScrollSpy = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'scrollspy'; + var VERSION = '4.1.0'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + var Event = { + ACTIVATE: "activate" + EVENT_KEY, + SCROLL: "scroll" + EVENT_KEY, + LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + DROPDOWN_ITEM: 'dropdown-item', + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active' + }; + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + NAV_LIST_GROUP: '.nav, .list-group', + NAV_LINKS: '.nav-link', + NAV_ITEMS: '.nav-item', + LIST_ITEMS: '.list-group-item', + DROPDOWN: '.dropdown', + DROPDOWN_ITEMS: '.dropdown-item', + DROPDOWN_TOGGLE: '.dropdown-toggle' + }; + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var ScrollSpy = + /*#__PURE__*/ + function () { + function ScrollSpy(element, config) { + var _this = this; + + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS); + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + $$$1(this._scrollElement).on(Event.SCROLL, function (event) { + return _this._process(event); + }); + this.refresh(); + + this._process(); + } // Getters + + + var _proto = ScrollSpy.prototype; + + // Public + _proto.refresh = function refresh() { + var _this2 = this; + + var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION; + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + this._offsets = []; + this._targets = []; + this._scrollHeight = this._getScrollHeight(); + var targets = $$$1.makeArray($$$1(this._selector)); + targets.map(function (element) { + var target; + var targetSelector = Util.getSelectorFromElement(element); + + if (targetSelector) { + target = $$$1(targetSelector)[0]; + } + + if (target) { + var targetBCR = target.getBoundingClientRect(); + + if (targetBCR.width || targetBCR.height) { + // TODO (fat): remove sketch reliance on jQuery position/offset + return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + } + + return null; + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this2._offsets.push(item[0]); + + _this2._targets.push(item[1]); + }); + }; + + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + $$$1(this._scrollElement).off(EVENT_KEY); + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + }; // Private + + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, Default, config); + + if (typeof config.target !== 'string') { + var id = $$$1(config.target).attr('id'); + + if (!id) { + id = Util.getUID(NAME); + $$$1(config.target).attr('id', id); + } + + config.target = "#" + id; + } + + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + _proto._getScrollTop = function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + }; + + _proto._getScrollHeight = function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + }; + + _proto._getOffsetHeight = function _getOffsetHeight() { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; + }; + + _proto._process = function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + + var scrollHeight = this._getScrollHeight(); + + var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + + return; + } + + if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { + this._activeTarget = null; + + this._clear(); + + return; + } + + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + }; + + _proto._activate = function _activate(target) { + this._activeTarget = target; + + this._clear(); + + var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style + + + queries = queries.map(function (selector) { + return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]"); + }); + var $link = $$$1(queries.join(',')); + + if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { + $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + $link.addClass(ClassName.ACTIVE); + } else { + // Set triggered link as active + $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active + // With both
    and