- The countdown timer in the top right corner of the screen will display the remaining time available for you to complete the test. When the timer reaches zero, the test will end by itself. You will not be required to end or submit your test.
-
-
- You can click on the
-
-
-
- button on the top left corner of the page to expand the Question Palette.
-
-
- The Question Palette will show the status of each question using one of the following symbols:
-
-
-
- You have answered the question
-
-
-
- You have not visited the question yet
-
-
-
- You have not answered the question
-
-
-
- You have marked the question for review
- NEW
-
-
-
-
- You can click on the
-
-
-
- button again to collapse the Question Palette.
-
-
-
+
+
+ {{ $t("generalInstructions.notVisited") }}
+
+
+
+ {{ $t("generalInstructions.notAnswered") }}
+
+
+
+ {{ $t("generalInstructions.markedForReview") }}
+ NEW
+
+
+
+
+
+
-
-
Answering a Question:
-
-
-
Procedure for answering a multiple choice type question:
-
-
To select you answer, click on the button of one of the options.
-
To deselect your chosen answer, click on the button of the chosen option again or click on the Clear button.
-
To change your chosen answer, click on the button of another option.
-
To save your answer, you MUST click on the "Save & Next" button.
-
- To review a question later, you can click on the "Review >" button. This action will not save your answer.
- NEW
-
-
-
-
To change your answer to a question that has already been answered, first select that question for answering and then follow the procedure for answering that type of question.
+ {{ $t("answeringQuestion.reviewQuestion") }}
+ NEW
+
-
-
-
!
-
Note that selecting an option DOES NOT save your answer to the current question. Click on "Save & Next" to save your answer for the current question and then go to the next question.
diff --git a/src/components/LocalePicker.vue b/src/components/LocalePicker.vue
new file mode 100644
index 0000000..ffe9a4d
--- /dev/null
+++ b/src/components/LocalePicker.vue
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/locales/englishTranslationData.json b/src/locales/englishTranslationData.json
new file mode 100644
index 0000000..c1e52c1
--- /dev/null
+++ b/src/locales/englishTranslationData.json
@@ -0,0 +1,27 @@
+{
+ "generalInstructions": {
+ "header": "General Instructions",
+ "timerInfo": "The countdown timer in the top right corner of the screen will display the remaining time available for you to complete the test. When the timer reaches zero, the test will end automatically. You will not be required to end or submit your test.",
+ "paletteInfo": "You can click on the",
+ "expandPalette": "button on the top left corner of the page to expand the Question Palette.",
+ "paletteSymbols": "The Question Palette will show the status of each question using one of the following symbols:",
+ "answered": "You have answered the question.",
+ "notVisited": "You have not visited the question yet.",
+ "notAnswered": "You have not answered the question.",
+ "markedForReview": "You have marked the question for review.",
+ "collapsePalette": "You can click on the",
+ "collapseButton": "button again to collapse the Question Palette."
+ },
+
+ "answeringQuestion": {
+ "title": "Answering a Question:",
+ "procedureForMCQ": "Procedure for answering a multiple-choice type question:",
+ "selectAnswer": "To select your answer, click on the button of one of the options.",
+ "deselectAnswer": "To deselect your chosen answer, click on the button of the chosen option again or click on the Clear button.",
+ "changeAnswer": "To change your chosen answer, click on the button of another option.",
+ "saveAnswer": "To save your answer, you MUST click on the Save & Next button.",
+ "reviewQuestion": "To review a question later, you can click on the 'Review >' button. This action will not save your answer.",
+ "changeAnsweredQuestion": "To change your answer to a question that has already been answered, first select that question for answering and then follow the procedure for answering that type of question.",
+ "noteSaveAnswer": "Note that selecting an option does NOT save your answer to the current question. Click on Save & Next to save your answer for the current question and then go to the next question."
+ }
+}
diff --git a/src/locales/hindiTranslationData.json b/src/locales/hindiTranslationData.json
new file mode 100644
index 0000000..af07fb0
--- /dev/null
+++ b/src/locales/hindiTranslationData.json
@@ -0,0 +1,25 @@
+{
+ "generalInstructions": {
+ "header": "सामान्य निर्देश",
+ "timerInfo": "स्क्रीन के ऊपरी दाएं कोने में काउंटडाउन टाइमर आपको टेस्ट पूरा करने के लिए उपलब्ध शेष समय को दिखाएगा। जब टाइमर शून्य पर पहुँच जाएगा, टेस्ट अपने आप समाप्त हो जाएगा। आपको अपना टेस्ट समाप्त करने या सबमिट करने की आवश्यकता नहीं होगी।",
+ "paletteInfo": "आप",
+ "expandPalette": "बटन पर क्लिक करके प्रश्न पैलेट का विस्तार कर सकते हैं।",
+ "paletteSymbols": "प्रश्न पैलेट प्रत्येक प्रश्न की स्थिति को निम्नलिखित प्रतीकों में से किसी एक का उपयोग करके दिखाएगा:",
+ "answered": "आपने प्रश्न का उत्तर दिया है",
+ "notVisited": "आपने प्रश्न अभी तक नहीं देखा है",
+ "notAnswered": "आपने प्रश्न का उत्तर नहीं दिया है",
+ "markedForReview": "आपने प्रश्न समीक्षा के लिए चिह्नित किया है",
+ "collapseButton": "बटन पर क्लिक करके प्रश्न पैलेट को फिर से संक्षिप्त कर सकते हैं।"
+ },
+ "answeringQuestion": {
+ "title": "प्रश्न का उत्तर देना:",
+ "procedureForMCQ": "विकल्प आधारित प्रश्न का उत्तर देने की प्रक्रिया:",
+ "selectAnswer": "अपना उत्तर चुनने के लिए, विकल्पों में से किसी एक के बटन पर क्लिक करें।",
+ "deselectAnswer": "अपना चुना हुआ उत्तर हटाने के लिए, चुने हुए विकल्प के बटन पर फिर से क्लिक करें या साफ़ करें बटन पर क्लिक करें।",
+ "changeAnswer": "अपना उत्तर बदलने के लिए, किसी अन्य विकल्प के बटन पर क्लिक करें।",
+ "saveAnswer": "अपना उत्तर सहेजने के लिए, आपको अवश्य Save & Next बटन पर क्लिक करना होगा।",
+ "reviewQuestion": "बाद में किसी प्रश्न की समीक्षा करने के लिए, आप 'Review >' बटन पर क्लिक कर सकते हैं। इस क्रिया से आपका उत्तर सहेजा नहीं जाएगा",
+ "changeAnsweredQuestion": "किसी उत्तरित प्रश्न का उत्तर बदलने के लिए, पहले उस प्रश्न को चुनें और फिर उस प्रकार के प्रश्न का उत्तर देने की प्रक्रिया का पालन करें।",
+ "noteSaveAnswer": "ध्यान दें कि विकल्प चुनने से आपका उत्तर सहेजा नहीं जाता है। Save & Next पर क्लिक करें ताकि आपका उत्तर सहेज लिया जाए और फिर अगले प्रश्न पर जाएं।"
+ }
+}
diff --git a/src/main.ts b/src/main.ts
index 2c174d3..8145801 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,15 +1,28 @@
import { createApp } from "vue";
+import { createI18n } from 'vue-i18n';
import App from "./App.vue";
import router from "./router";
import store from "./store";
import Toast, { ToastInterface } from "vue-toastification";
-import { plugin, defaultConfig } from '@formkit/vue'
-import '@formkit/themes/genesis'
import VueClickAway from "vue3-click-away";
import "./index.css";
import "vue-toastification/dist/index.css";
+import en from './locales/englishTranslationData.json';
+import hi from './locales/hindiTranslationData.json';
+
+// Create i18n instance
+const i18n = createI18n({
+ legacy: false,
+ locale: store.getters.locale || 'en',
+ fallbackLocale: 'en',
+ messages: {
+ en,
+ hi
+ }
+});
+
const app = createApp(App).use(store).use(router);
const filterBeforeCreate = (
@@ -26,8 +39,7 @@ const filterBeforeCreate = (
}
return toast;
};
-
+app.use(i18n);
app.use(Toast, { filterBeforeCreate });
app.use(VueClickAway);
-app.use(plugin, defaultConfig);
app.mount("#app");
diff --git a/src/router/index.ts b/src/router/index.ts
index 7c6d080..e300cbd 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -3,24 +3,6 @@ import { createRouter, createWebHistory } from "vue-router";
const requiredAuthKeys = ["userId", "apiKey"];
const routes = [
- {
- path: "/forms/jnvenable",
- name: "FormInput",
- component: () =>
- import(/* webpackChunkName: "about" */ "@/views/FormInput.vue"),
- meta: {
- requiresAuth: false,
- },
- },
- {
- path: "/forms/jnvenablereports",
- name: "FormResults",
- component: () =>
- import(/* webpackChunkName: "about" */ "@/views/FormResults.vue"),
- meta: {
- requiresAuth: false,
- },
- },
{
path: "/quiz/:quizId",
name: "Player",
diff --git a/src/services/API/FormInputHandling.ts b/src/services/API/FormInputHandling.ts
deleted file mode 100644
index f81b023..0000000
--- a/src/services/API/FormInputHandling.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import {
- FormResultResponse
-} from "@/types";
-
-export default {
- async submitFormData(formData : any, resultsQuery: boolean = false): Promise {
- const lambdaUrl = process.env.VUE_APP_FORM_LAMBDA;
- formData.results_query = resultsQuery;
-
- const response = await fetch(lambdaUrl, {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify(formData)
- })
-
- const data = await response.json();
- return data;
- }
-}
diff --git a/src/store/index.ts b/src/store/index.ts
index 64dd206..ce6909b 100644
--- a/src/store/index.ts
+++ b/src/store/index.ts
@@ -1,11 +1,12 @@
import { createStore } from "vuex";
-import { QuestionBucketingMap } from "../types"
+import { QuestionBucketingMap } from "../types";
export default createStore({
state: {
isSpinnerShown: false,
questionBucketingMaps: [] as Array,
bucketSize: 10,
+ locale: "en", // default locale
},
mutations: {
showSpinner(state) {
@@ -17,13 +18,21 @@ export default createStore({
setQuestionBucketMap(state, value: Array) {
state.questionBucketingMaps = value;
},
- updateBucketFetchedStatus(state, details: {
- qsetIndex: number,
- bucketIndex: number,
- fetchedStatus: boolean
- }) {
- state.questionBucketingMaps[details.qsetIndex][details.bucketIndex].isFetched = details.fetchedStatus
- }
+ updateBucketFetchedStatus(
+ state,
+ details: {
+ qsetIndex: number;
+ bucketIndex: number;
+ fetchedStatus: boolean;
+ }
+ ) {
+ state.questionBucketingMaps[details.qsetIndex][
+ details.bucketIndex
+ ].isFetched = details.fetchedStatus;
+ },
+ setLocale(state, locale: string) {
+ state.locale = locale;
+ },
},
actions: {
showSpinner({ commit }) {
@@ -33,14 +42,23 @@ export default createStore({
commit("hideSpinner");
},
setQuestionBucketMap({ commit }, value: Array) {
- commit("setQuestionBucketMap", value)
+ commit("setQuestionBucketMap", value);
},
- updateBucketFetchedStatus({ commit }, details: {
- qsetIndex: number,
- bucketIndex: number,
- fetchedStatus: boolean
- }) {
- commit("updateBucketFetchedStatus", details)
+ updateBucketFetchedStatus(
+ { commit },
+ details: {
+ qsetIndex: number;
+ bucketIndex: number;
+ fetchedStatus: boolean;
+ }
+ ) {
+ commit("updateBucketFetchedStatus", details);
},
+ setLocale({ commit }, locale: string) {
+ commit("setLocale", locale);
+ },
+ },
+ getters: {
+ locale: (state) => state.locale,
},
});
diff --git a/src/views/FormInput.vue b/src/views/FormInput.vue
deleted file mode 100644
index 9a90593..0000000
--- a/src/views/FormInput.vue
+++ /dev/null
@@ -1,324 +0,0 @@
-
-
-
-
-
-
-
-
-
PLEASE READ THE FOLLOWING INSTRUCTIONS CAREFULLY
-
-
Please fill the form correctly and submit to access the test.
-
Please select your course and grade correctly to access the right test.
-
Test Details:
-
-
Class 11 JEE: 120 minutes, 75 questions (300 marks)
-
Class 12 JEE: 180 minutes, 75 questions (300 marks)
-
Class 11 NEET: 120 minutes, 180 questions (720 marks)
-
Class 12 NEET: 180 minutes, 180 questions (720 marks)
During the test, to confirm your answer please click SAVE & NEXT. Your response to a question will not be considered incase you fail to save your answer.
-
Only press END TEST once you have completed and reviewed your answers. You will not be able to change your responses once you click on END TEST