Separated out the graphing code into a separate js file.
This commit is contained in:
1 parent
4ec9b62d2c
commit
95574d6fd3
8 files changed
+590
No files matched your search
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
|
||||
$apiToken="nCqnPnrt9HplICvOWhratTIrwkxqe7pILQ524GJG";
|
||||
$dataCenter = "fra1"; // Example: "us-east-1"
|
||||
$surveyId = "SV_3pyZVUNpxXm1PZI"; //Survey ID
|
||||
$urveyId ="SV_bmiHoSHYWIgGM3I"; //Survey ID
|
||||
//$surveyId = "SV_bmiHoSHYWIgGM3I"; //Survey ID
|
||||
|
||||
// API endpoint for getting survey details (simple GET request)
|
||||
$surveyDetailsUrl = "https://$dataCenter.qualtrics.com/API/v3/surveys/$surveyId";
|
||||
|
||||
// cURL request to fetch survey details
|
||||
$headers = [
|
||||
"X-API-TOKEN: $apiToken",
|
||||
"Content-Type: application/json"
|
||||
];
|
||||
|
||||
$ch = curl_init($surveyDetailsUrl);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
|
||||
$response = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
|
||||
// Check for errors
|
||||
if (!$response) {
|
||||
die("Error fetching survey details: " . curl_error($ch));
|
||||
}
|
||||
|
||||
// Check the response code
|
||||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
echo "HTTP Status Code: $httpCode\n";
|
||||
|
||||
// Decode the response to check if the API token is working
|
||||
$surveyData = json_decode($response, true);
|
||||
if (isset($surveyData['result'])) {
|
||||
echo "Survey ID: " . $surveyData['result']['id'] . "\n";
|
||||
} else {
|
||||
echo "Error: " . json_encode($surveyData, JSON_PRETTY_PRINT) . "\n";
|
||||
}
|
||||
?>
|
||||
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
|
||||
function drawGraph() {
|
||||
let ValA = 0.8;
|
||||
let ValB = 0.4;
|
||||
let ValC = 0.6;
|
||||
createSVGgraphic("#Q1","FeatureA", "FeatureB", "FeatureC", ValA, ValB, ValC);
|
||||
createSVGgraphic("#Q2","ConceptA", "ConceptB", "ConceptC", 0.2, 0.8, 0.8);
|
||||
|
||||
}
|
||||
|
||||
|
||||
function createSVGgraphic(divID,FA,FB,FC,VA,VB,VC) {
|
||||
|
||||
const svg = d3.select(divID);
|
||||
const width = +svg.attr("width");
|
||||
const height = +svg.attr("height");
|
||||
const radius = 150;
|
||||
const center = { x: width / 2, y: height / 2 };
|
||||
|
||||
// Define axes with A at the top (rotate -90 degrees)
|
||||
const axes = [
|
||||
{ name: FA, angle: 0 },
|
||||
{ name: FB, angle: 120 },
|
||||
{ name: FC, angle: 240 }
|
||||
];
|
||||
axes.forEach(d => d.angle = (d.angle - 90) * Math.PI / 180);
|
||||
|
||||
// Sample data: [0-1] scale
|
||||
const values = [VA, VB, VC];
|
||||
|
||||
// Draw axis lines
|
||||
svg.append("g")
|
||||
.attr("class", "axis")
|
||||
.selectAll("line")
|
||||
.data(axes)
|
||||
.join("line")
|
||||
.attr("x1", center.x)
|
||||
.attr("y1", center.y)
|
||||
.attr("x2", d => center.x + radius * Math.cos(d.angle))
|
||||
.attr("y2", d => center.y + radius * Math.sin(d.angle));
|
||||
|
||||
// Draw grid rings (polygons)
|
||||
const levels = 5;
|
||||
for (let i = 1; i <= levels; i++) {
|
||||
const r = (radius / levels) * i;
|
||||
const points = axes.map(d => {
|
||||
return [
|
||||
center.x + r * Math.cos(d.angle),
|
||||
center.y + r * Math.sin(d.angle)
|
||||
];
|
||||
});
|
||||
svg.append("polygon")
|
||||
.attr("class", "grid")
|
||||
.attr("points", points.map(p => p.join(",")).join(" "));
|
||||
}
|
||||
|
||||
// Draw axis ticks
|
||||
const tickLength = 5;
|
||||
axes.forEach(axis => {
|
||||
for (let i = 1; i <= levels; i++) {
|
||||
const r = (radius / levels) * i;
|
||||
const angle = axis.angle;
|
||||
|
||||
const x1 = center.x + r * Math.cos(angle);
|
||||
const y1 = center.y + r * Math.sin(angle);
|
||||
|
||||
// Perpendicular tick
|
||||
const perpAngle = angle + Math.PI / 2;
|
||||
const x2 = x1 + tickLength * Math.cos(perpAngle);
|
||||
const y2 = y1 + tickLength * Math.sin(perpAngle);
|
||||
|
||||
svg.append("line")
|
||||
.attr("x1", x1)
|
||||
.attr("y1", y1)
|
||||
.attr("x2", x2)
|
||||
.attr("y2", y2)
|
||||
.attr("class", "tick");
|
||||
}
|
||||
});
|
||||
|
||||
// Convert values to coordinates
|
||||
const valuePoints = axes.map((d, i) => {
|
||||
const r = radius * values[i];
|
||||
return [
|
||||
center.x + r * Math.cos(d.angle),
|
||||
center.y + r * Math.sin(d.angle)
|
||||
];
|
||||
});
|
||||
|
||||
// Draw data area
|
||||
svg.append("polygon")
|
||||
.attr("class", "area")
|
||||
.attr("points", valuePoints.map(p => p.join(",")).join(" "))
|
||||
|
||||
// Add axis labels
|
||||
svg.selectAll(".label")
|
||||
.data(axes)
|
||||
.join("text")
|
||||
.attr("class", "label")
|
||||
.attr("x", d => center.x + (radius + 20) * Math.cos(d.angle))
|
||||
.attr("y", (d,i) => {
|
||||
if (i === 0) { //adjust for 1st access, rather than using d.name
|
||||
return center.y + (radius + 20) * Math.sin(d.angle)
|
||||
} else
|
||||
return center.y + (radius + 20 + 30) * Math.sin(d.angle)
|
||||
})
|
||||
.text(d => d.name);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
//Load JSON data
|
||||
$jsonString = file_get_contents('survey_responses.json');
|
||||
|
||||
// Decode the JSON string into a PHP associative array
|
||||
$data = json_decode($jsonString, true);
|
||||
|
||||
// Print the structure of the data
|
||||
echo '<pre>';
|
||||
print_r($data);
|
||||
echo '</pre>';
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
?>
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
|
||||
<?php
|
||||
// Set up constants:
|
||||
$apiToken="nCqnPnrt9HplICvOWhratTIrwkxqe7pILQ524GJG";
|
||||
$dataCenter = "fra1"; // Example: "us-east-1"
|
||||
$surveyId = "SV_3pyZVUNpxXm1PZI"; //Survey ID
|
||||
$urveyId ="SV_bmiHoSHYWIgGM3I"; //Survey ID
|
||||
//$surveyId = "SV_bmiHoSHYWIgGM3I"; //Survey ID
|
||||
|
||||
// API endpoint URLs
|
||||
$exportUrl = "https://$dataCenter.qualtrics.com/API/v3/surveys/$surveyId/export-responses";
|
||||
$statusUrl = "https://$dataCenter.qualtrics.com/API/v3/surveys/$surveyId/export-responses/";
|
||||
$fileUrl = "https://$dataCenter.qualtrics.com/API/v3/surveys/$surveyId/export-responses/";
|
||||
|
||||
// Step 1: Start Export
|
||||
$headers = [
|
||||
"X-API-TOKEN: $apiToken",
|
||||
"Content-Type: application/json"
|
||||
];
|
||||
|
||||
$ch = curl_init($exportUrl);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["format" => "json"]));
|
||||
$response = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
|
||||
if (!$response) {
|
||||
die("Error starting export: " . curl_error($ch));
|
||||
}
|
||||
|
||||
$exportData = json_decode($response, true);
|
||||
$progressId = $exportData['result']['progressId'];
|
||||
|
||||
// Step 2: Check Export Status
|
||||
$status = 'inProgress';
|
||||
while ($status != 'complete') {
|
||||
// Sleep for 5 seconds before checking again
|
||||
sleep(5);
|
||||
|
||||
$statusCh = curl_init($statusUrl . $progressId);
|
||||
curl_setopt($statusCh, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($statusCh, CURLOPT_HTTPHEADER, $headers);
|
||||
$statusResponse = curl_exec($statusCh);
|
||||
curl_close($statusCh);
|
||||
|
||||
if (!$statusResponse) {
|
||||
die("Error checking status: " . curl_error($statusCh));
|
||||
}
|
||||
|
||||
//print_r(json_decode($statusResponse, true));
|
||||
//exit(0);
|
||||
|
||||
$statusData = json_decode($statusResponse, true);
|
||||
$status = $statusData['result']['status'];
|
||||
|
||||
if ($status == 'failed') {
|
||||
die("Export failed!");
|
||||
}
|
||||
|
||||
echo "Waiting for export to complete... Status: $status\n";
|
||||
}
|
||||
|
||||
// Step 3: Download the Exported File
|
||||
$fileId = $statusData['result']['fileId'];
|
||||
|
||||
$fileCh = curl_init($fileUrl . $fileId . '/file');
|
||||
curl_setopt($fileCh, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($fileCh, CURLOPT_HTTPHEADER, $headers);
|
||||
$fileContent = curl_exec($fileCh);
|
||||
curl_close($fileCh);
|
||||
|
||||
if (!$fileContent) {
|
||||
die("Error downloading the file: " . curl_error($fileCh));
|
||||
}
|
||||
|
||||
// Save the file locally
|
||||
file_put_contents("survey_responses.zip", $fileContent);
|
||||
|
||||
echo "Survey data has been downloaded successfully!\n";
|
||||
|
||||
// Path to the ZIP file
|
||||
$zipFile = './survey_responses.zip'; // Specify the path to your ZIP file
|
||||
$extractTo = 'survey_responses.json'; // Specify the folder to extract the contents to
|
||||
|
||||
// Create a new ZipArchive object
|
||||
$zip = new ZipArchive();
|
||||
|
||||
// Open the ZIP file
|
||||
if ($zip->open($zipFile) === TRUE) {
|
||||
// Extract all the contents to the specified folder
|
||||
$zip->extractTo($extractTo);
|
||||
$zip->close(); // Close the ZIP file
|
||||
|
||||
echo "ZIP file extracted successfully!";
|
||||
} else {
|
||||
echo "Failed to open the ZIP file.";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
|
||||
<?php
|
||||
// Set up constants:
|
||||
$apiToken="nCqnPnrt9HplICvOWhratTIrwkxqe7pILQ524GJG";
|
||||
$dataCenter = "fra1"; // Example: "us-east-1"
|
||||
$surveyId = "SV_3pyZVUNpxXm1PZI"; //Survey ID
|
||||
$urveyId ="SV_bmiHoSHYWIgGM3I"; //Survey ID
|
||||
//$surveyId = "SV_bmiHoSHYWIgGM3I"; //Survey ID
|
||||
|
||||
// API endpoint URLs
|
||||
$exportUrl = "https://$dataCenter.qualtrics.com/API/v3/surveys/$surveyId/export-responses";
|
||||
$statusUrl = "https://$dataCenter.qualtrics.com/API/v3/surveys/$surveyId/export-responses/";
|
||||
$fileUrl = "https://$dataCenter.qualtrics.com/API/v3/surveys/$surveyId/export-responses/";
|
||||
|
||||
// Step 1: Start Export
|
||||
$headers = [
|
||||
"X-API-TOKEN: $apiToken",
|
||||
"Content-Type: application/json"
|
||||
];
|
||||
|
||||
$ch = curl_init($exportUrl);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["format" => "json", "compress" => "false"]));
|
||||
$response = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
|
||||
if (!$response) {
|
||||
die("Error starting export: " . curl_error($ch));
|
||||
}
|
||||
|
||||
$exportData = json_decode($response, true);
|
||||
$progressId = $exportData['result']['progressId'];
|
||||
|
||||
// Step 2: Check Export Status
|
||||
$status = 'inProgress';
|
||||
while ($status != 'complete') {
|
||||
// Sleep for 5 seconds before checking again
|
||||
sleep(5);
|
||||
|
||||
$statusCh = curl_init($statusUrl . $progressId);
|
||||
curl_setopt($statusCh, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($statusCh, CURLOPT_HTTPHEADER, $headers);
|
||||
$statusResponse = curl_exec($statusCh);
|
||||
curl_close($statusCh);
|
||||
|
||||
if (!$statusResponse) {
|
||||
die("Error checking status: " . curl_error($statusCh));
|
||||
}
|
||||
|
||||
//print_r(json_decode($statusResponse, true));
|
||||
//exit(0);
|
||||
|
||||
$statusData = json_decode($statusResponse, true);
|
||||
$status = $statusData['result']['status'];
|
||||
|
||||
if ($status == 'failed') {
|
||||
die("Export failed!");
|
||||
}
|
||||
|
||||
echo "Waiting for export to complete... Status: $status\n";
|
||||
}
|
||||
|
||||
// Step 3: Download the Exported File
|
||||
$fileId = $statusData['result']['fileId'];
|
||||
|
||||
$fileCh = curl_init($fileUrl . $fileId . '/file');
|
||||
curl_setopt($fileCh, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($fileCh, CURLOPT_HTTPHEADER, $headers);
|
||||
$fileContent = curl_exec($fileCh);
|
||||
curl_close($fileCh);
|
||||
|
||||
if (!$fileContent) {
|
||||
die("Error downloading the file: " . curl_error($fileCh));
|
||||
}
|
||||
|
||||
// Save the file locally
|
||||
file_put_contents("survey_responses.json", $fileContent);
|
||||
|
||||
echo "Survey data has been downloaded successfully!\n";
|
||||
|
||||
// No need to create a new ZipArchive object as imported without compression
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>3-Axis Radar Chart with Ticks</title>
|
||||
<script src="https://d3js.org/d3.v7.min.js"></script>
|
||||
<script src="./draw3axis.js"></script>
|
||||
<style>
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
svg {
|
||||
background: white;
|
||||
display: block;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.axis line {
|
||||
stroke: black;
|
||||
stroke-width: 1.5px;
|
||||
}
|
||||
|
||||
line.tick {
|
||||
stroke: black;
|
||||
stroke-width: 1;
|
||||
}
|
||||
|
||||
polygon.grid {
|
||||
fill: none;
|
||||
stroke: rgba(200, 200, 200, 0.5); /* light grey with 50% opacity */
|
||||
stroke-dasharray: 2,2;
|
||||
}
|
||||
|
||||
.area {
|
||||
fill: rgba(70, 130, 180, 0.3); /* steelblue with transparency */
|
||||
stroke: rgba(70, 130, 180, 0.6);
|
||||
stroke-width: 2;
|
||||
}
|
||||
|
||||
.label {
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
text-anchor: middle;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body onload="drawGraph()">
|
||||
<h1>Concepts</h1>
|
||||
<svg id="Q1" width="400" height="400"></svg>
|
||||
<h1>Features</h1>
|
||||
<svg id="Q2" width="400" height="400"></svg>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
+152
@@ -0,0 +1,152 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>3-Axis Radar Chart with Ticks</title>
|
||||
<script src="https://d3js.org/d3.v7.min.js"></script>
|
||||
<style>
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
svg {
|
||||
background: white;
|
||||
display: block;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.axis line {
|
||||
stroke: black;
|
||||
stroke-width: 1.5px;
|
||||
}
|
||||
|
||||
line.tick {
|
||||
stroke: black;
|
||||
stroke-width: 1;
|
||||
}
|
||||
|
||||
polygon.grid {
|
||||
fill: none;
|
||||
stroke: rgba(200, 200, 200, 0.5); /* light grey with 50% opacity */
|
||||
stroke-dasharray: 2,2;
|
||||
}
|
||||
|
||||
.area {
|
||||
fill: rgba(70, 130, 180, 0.3); /* steelblue with transparency */
|
||||
stroke: rgba(70, 130, 180, 0.6);
|
||||
stroke-width: 2;
|
||||
}
|
||||
|
||||
.label {
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
text-anchor: middle;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<svg width="500" height="500"></svg>
|
||||
|
||||
<script>
|
||||
const svg = d3.select("svg");
|
||||
const width = +svg.attr("width");
|
||||
const height = +svg.attr("height");
|
||||
const radius = 200;
|
||||
const center = { x: width / 2, y: height / 2 };
|
||||
|
||||
// Define axes with A at the top (rotate -90 degrees)
|
||||
const axes = [
|
||||
{ name: "Feature A", angle: 0 },
|
||||
{ name: "Feature B", angle: 120 },
|
||||
{ name: "Feature C", angle: 240 }
|
||||
];
|
||||
axes.forEach(d => d.angle = (d.angle - 90) * Math.PI / 180);
|
||||
|
||||
// Sample data: [0-1] scale
|
||||
const values = [0.8, 0.4, 0.6];
|
||||
|
||||
// Draw axis lines
|
||||
svg.append("g")
|
||||
.attr("class", "axis")
|
||||
.selectAll("line")
|
||||
.data(axes)
|
||||
.join("line")
|
||||
.attr("x1", center.x)
|
||||
.attr("y1", center.y)
|
||||
.attr("x2", d => center.x + radius * Math.cos(d.angle))
|
||||
.attr("y2", d => center.y + radius * Math.sin(d.angle));
|
||||
|
||||
// Draw grid rings (polygons)
|
||||
const levels = 5;
|
||||
for (let i = 1; i <= levels; i++) {
|
||||
const r = (radius / levels) * i;
|
||||
const points = axes.map(d => {
|
||||
return [
|
||||
center.x + r * Math.cos(d.angle),
|
||||
center.y + r * Math.sin(d.angle)
|
||||
];
|
||||
});
|
||||
svg.append("polygon")
|
||||
.attr("class", "grid")
|
||||
.attr("points", points.map(p => p.join(",")).join(" "));
|
||||
}
|
||||
|
||||
// Draw axis ticks
|
||||
const tickLength = 5;
|
||||
axes.forEach(axis => {
|
||||
for (let i = 1; i <= levels; i++) {
|
||||
const r = (radius / levels) * i;
|
||||
const angle = axis.angle;
|
||||
|
||||
const x1 = center.x + r * Math.cos(angle);
|
||||
const y1 = center.y + r * Math.sin(angle);
|
||||
|
||||
// Perpendicular tick
|
||||
const perpAngle = angle + Math.PI / 2;
|
||||
const x2 = x1 + tickLength * Math.cos(perpAngle);
|
||||
const y2 = y1 + tickLength * Math.sin(perpAngle);
|
||||
|
||||
svg.append("line")
|
||||
.attr("x1", x1)
|
||||
.attr("y1", y1)
|
||||
.attr("x2", x2)
|
||||
.attr("y2", y2)
|
||||
.attr("class", "tick");
|
||||
}
|
||||
});
|
||||
|
||||
// Convert values to coordinates
|
||||
const valuePoints = axes.map((d, i) => {
|
||||
const r = radius * values[i];
|
||||
return [
|
||||
center.x + r * Math.cos(d.angle),
|
||||
center.y + r * Math.sin(d.angle)
|
||||
];
|
||||
});
|
||||
|
||||
// Draw data area
|
||||
svg.append("polygon")
|
||||
.attr("class", "area")
|
||||
.attr("points", valuePoints.map(p => p.join(",")).join(" "))
|
||||
|
||||
// Add axis labels
|
||||
svg.selectAll(".label")
|
||||
.data(axes)
|
||||
.join("text")
|
||||
.attr("class", "label")
|
||||
.attr("x", d => center.x + (radius + 20) * Math.cos(d.angle))
|
||||
.attr("y", (d,i) => {
|
||||
if (i === 0) { //adjust for 1st access, rather than using d.name
|
||||
return center.y + (radius + 20) * Math.sin(d.angle)
|
||||
} else
|
||||
return center.y + (radius + 20 + 30) * Math.sin(d.angle)
|
||||
})
|
||||
.text(d => d.name);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"responses":[{"responseId":"R_2DG2n9Lo1GGveZK","values":{"startDate":"2025-04-02T11:03:32Z","endDate":"2025-04-02T11:06:45Z","status":1,"progress":100,"duration":192,"finished":1,"recordedDate":"2025-04-02T11:06:45.839Z","_recordId":"R_2DG2n9Lo1GGveZK","locationLatitude":"51.4036","locationLongitude":"-0.7618","distributionChannel":"preview","userLanguage":"EN","QID35_7":-3,"QID35_2":-2,"QID35_8":-1,"QID35_9":0,"QID35_10":1,"QID36_7":0,"QID36_2":0,"QID36_8":0,"QID36_9":0,"QID37_7":1,"QID37_2":0,"QID37_8":-1,"QID37_20":0,"QID37_21":-1,"QID37_22":-1,"QID2_7":-1,"QID2_2":-1,"QID2_8":-1,"QID2_9":-1,"QID33_7":0,"QID33_2":0,"QID33_8":1,"QID33_9":0,"QID34_7":0,"QID34_2":-1,"QID34_8":0,"QID40_7":-1,"QID40_2":-1,"QID40_8":-1,"QID40_9":-1,"QID41_7":0,"QID41_2":0,"QID41_19":1,"QID41_20":0,"QID41_21":1,"QID42_7":1,"QID42_2":1,"QID42_8":1,"QID42_9":0,"QID44_21":-2,"QID44_7":-1,"QID44_2":-1,"QID44_8":-1,"QID45_24":0,"QID45_25":0,"QID45_26":0,"QID45_29":0,"QID46_27":3,"QID46_28":2,"QID46_29":1,"QID46_30":0,"QID46_31":0,"QID46_32":0,"QID46_33":0,"QID46_34":0,"QID46_36":0,"QID46_37":0},"labels":{"status":"Survey Preview","finished":"True","QID35_7":"-3\nStrongly disagree","QID35_2":"-2\nDisagree\n \n","QID35_8":"-1\n\nSomewhat disagree \n","QID35_9":"0\nNeither agree nor disagree\n","QID35_10":"+1\n\nSomewhat agree\n","QID36_7":"0\nNeither agree nor disagree","QID36_2":"0\nNeither agree nor disagree","QID36_8":"0\nNeither agree nor disagree","QID36_9":"0\nNeither agree nor disagree","QID37_7":"+1\nSomewhat agree","QID37_2":"0\nNeither agree nor disagree","QID37_8":"-1\nSomewhat disagree","QID37_20":"0\nNeither agree nor disagree","QID37_21":"-1\nSomewhat disagree","QID37_22":"-1\nSomewhat disagree","QID2_7":"-1\nSomewhat disagree","QID2_2":"-1\nSomewhat disagree","QID2_8":"-1\nSomewhat disagree","QID2_9":"-1\nSomewhat disagree","QID33_7":"0\nNeither agree nor disagree","QID33_2":"0\nNeither agree nor disagree","QID33_8":"+1\nSomewhat agree","QID33_9":"0\nNeither agree nor disagree","QID34_7":"0\nNeither agree nor disagree","QID34_2":"-1\nSomewhat disagree","QID34_8":"0\nNeither agree nor disagree","QID40_7":"-1\nSomewhat disagree","QID40_2":"-1\nSomewhat disagree","QID40_8":"-1\nSomewhat disagree","QID40_9":"-1\nSomewhat disagree","QID41_7":"0\nNeither agree nor disagree","QID41_2":"0\nNeither agree nor disagree","QID41_19":"+1\nSomewhat agree","QID41_20":"0\nNeither agree nor disagree","QID41_21":"+1\nSomewhat agree","QID42_7":"+1\nSomewhat agree","QID42_2":"+1\nSomewhat agree","QID42_8":"+1\nSomewhat agree","QID42_9":"0\nNeither agree nor disagree","QID44_21":"-2\nDisagree\n ","QID44_7":"-1\nSomewhat disagree","QID44_2":"-1\nSomewhat disagree","QID44_8":"-1\nSomewhat disagree","QID45_24":"0\nNeither agree nor disagree","QID45_25":"0\nNeither agree nor disagree","QID45_26":"0\nNeither agree nor disagree","QID45_29":"0\nNeither agree nor disagree","QID46_27":"+3\nStrongly\nagree","QID46_28":"+2\nAgree\n ","QID46_29":"+1\nSomewhat agree","QID46_30":"0\nNeither agree nor disagree","QID46_31":"0\nNeither agree nor disagree","QID46_32":"0\nNeither agree nor disagree","QID46_33":"0\nNeither agree nor disagree","QID46_34":"0\nNeither agree nor disagree","QID46_36":"0\nNeither agree nor disagree","QID46_37":"0\nNeither agree nor disagree"},"displayedFields":["QID49_TEXT","QID35_2","QID37_2","QID33_7","QID33_8","QID33_9","QID35_7","QID35_8","QID37_7","QID66_TEXT","QID35_9","QID37_8","QID60_TEXT","QID46_27","QID46_28","QID37_20","QID37_21","QID37_22","QID48_TEXT","QID40_2","QID41_19","QID2_9","QID42_2","QID44_2","QID46_29","QID40_8","QID50_TEXT","QID40_7","QID42_8","QID40_9","QID42_7","QID44_8","QID44_7","QID42_9","QID61_TEXT","QID35_10","QID47_TEXT","QID34_2","QID36_2","QID34_7","QID34_8","QID36_7","QID36_8","QID36_9","QID63_TEXT","QID44_21","QID64_TEXT","QID59_TEXT","QID41_2","QID41_7","QID2_7","QID2_8","QID2_2","QID46_30","QID46_31","QID41_20","QID45_25","QID41_21","QID45_24","QID62_TEXT","QID46_36","QID65_TEXT","QID46_37","QID45_26","QID46_34","QID46_32","QID46_33","QID45_29","QID33_2"],"displayedValues":{"QID35_2":[-3,-2,-1,0,1,2,3],"QID37_2":[-3,-2,-1,0,1,2,3],"QID33_7":[-3,-2,-1,0,1,2,3],"QID33_8":[-3,-2,-1,0,1,2,3],"QID33_9":[-3,-2,-1,0,1,2,3],"QID35_7":[-3,-2,-1,0,1,2,3],"QID35_8":[-3,-2,-1,0,1,2,3],"QID37_7":[-3,-2,-1,0,1,2,3],"QID35_9":[-3,-2,-1,0,1,2,3],"QID37_8":[-3,-2,-1,0,1,2,3],"QID46_27":[-3,-2,-1,0,1,2,3],"QID46_28":[-3,-2,-1,0,1,2,3],"QID37_20":[-3,-2,-1,0,1,2,3],"QID37_21":[-3,-2,-1,0,1,2,3],"QID37_22":[-3,-2,-1,0,1,2,3],"QID40_2":[-3,-2,-1,0,1,2,3],"QID41_19":[-3,-2,-1,0,1,2,3],"QID2_9":[-3,-2,-1,0,1,2,3],"QID42_2":[-3,-2,-1,0,1,2,3],"QID44_2":[-3,-2,-1,0,1,2,3],"QID46_29":[-3,-2,-1,0,1,2,3],"QID40_8":[-3,-2,-1,0,1,2,3],"QID40_7":[-3,-2,-1,0,1,2,3],"QID42_8":[-3,-2,-1,0,1,2,3],"QID40_9":[-3,-2,-1,0,1,2,3],"QID42_7":[-3,-2,-1,0,1,2,3],"QID44_8":[-3,-2,-1,0,1,2,3],"QID44_7":[-3,-2,-1,0,1,2,3],"QID42_9":[-3,-2,-1,0,1,2,3],"QID35_10":[-3,-2,-1,0,1,2,3],"QID34_2":[-3,-2,-1,0,1,2,3],"QID36_2":[-3,-2,-1,0,1,2,3],"QIDLine truncated
|
||||
Reference in new issue
Block a user