feat: complete quiz tasks

This commit is contained in:
Ayobami
2025-07-24 22:56:01 +01:00
parent f9e7de62ce
commit 6a137285e6
6 changed files with 1617 additions and 173 deletions
+2 -2
View File
@@ -11,7 +11,7 @@ TWILIO_SID=
TWILIO_TOKEN= TWILIO_TOKEN=
COPYRIGHT=Copyright © 2021 MKD. All rights reserved. COPYRIGHT=Copyright © 2021 MKD. All rights reserved.
POWERED_BY=Powered By <a href="MDK.com" target="__blank">MKD.ca</a> POWERED_BY=Powered By <a href="MDK.com" target="__blank">MKD.ca</a>
NODE_PORT=3001 NODE_PORT=3048
GRAPHQL_PORT=9001 GRAPHQL_PORT=9001
EMAIL_SMTP_PROTOCOL=smtp EMAIL_SMTP_PROTOCOL=smtp
EMAIL_SMTP_SMTP_HOST=smtp.mailtrap.io EMAIL_SMTP_SMTP_HOST=smtp.mailtrap.io
@@ -62,7 +62,7 @@ DB_PORT=3306
DB_DSN= DB_DSN=
DB_HOSTNAME=localhost DB_HOSTNAME=localhost
DB_USERNAME=root DB_USERNAME=root
DB_PASSWORD= DB_PASSWORD=ayobamidavid
DB_DATABASE=mkd_test_1 DB_DATABASE=mkd_test_1
DB_DBDRIVER=mysqli DB_DBDRIVER=mysqli
DB_DBPREFIX= DB_DBPREFIX=
+18 -11
View File
@@ -1,4 +1,4 @@
'use strict'; "use strict";
/*Powered By: Manaknightdigital Inc. https://manaknightdigital.com/ Year: 2020*/ /*Powered By: Manaknightdigital Inc. https://manaknightdigital.com/ Year: 2020*/
/** /**
* Sequelize File * Sequelize File
@@ -8,16 +8,20 @@
* @author Ryan Wong * @author Ryan Wong
* *
*/ */
const fs = require('fs'); const fs = require("fs");
const path = require('path'); const path = require("path");
let Sequelize = require('sequelize'); let Sequelize = require("sequelize");
const basename = path.basename(__filename); const basename = path.basename(__filename);
const dotenv = require('dotenv'); const dotenv = require("dotenv");
dotenv.config(); dotenv.config();
let db = {}; let db = {};
let sequelize = new Sequelize(process.env.DB_DATABASE, process.env.DB_USERNAME, process.env.DB_PASSWORD, { let sequelize = new Sequelize(
process.env.DB_DATABASE,
process.env.DB_USERNAME,
process.env.DB_PASSWORD,
{
dialect: process.env.DB_ADAPTER, dialect: process.env.DB_ADAPTER,
username: process.env.DB_USERNAME, username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD, password: process.env.DB_PASSWORD,
@@ -25,7 +29,7 @@ let sequelize = new Sequelize(process.env.DB_DATABASE, process.env.DB_USERNAME,
host: process.env.DB_HOSTNAME, host: process.env.DB_HOSTNAME,
port: process.env.DB_PORT, port: process.env.DB_PORT,
logging: console.log, logging: console.log,
timezone: '-04:00', timezone: "-04:00",
pool: { pool: {
maxConnections: 1, maxConnections: 1,
minConnections: 0, minConnections: 0,
@@ -36,16 +40,19 @@ let sequelize = new Sequelize(process.env.DB_DATABASE, process.env.DB_USERNAME,
underscoredAll: true, underscoredAll: true,
underscored: true, underscored: true,
}, },
}); }
);
// sequelize.sync({ force: true }); sequelize.sync();
fs.readdirSync(__dirname) fs.readdirSync(__dirname)
.filter((file) => { .filter((file) => {
return file.indexOf('.') !== 0 && file !== basename && file.slice(-3) === '.js'; return (
file.indexOf(".") !== 0 && file !== basename && file.slice(-3) === ".js"
);
}) })
.forEach((file) => { .forEach((file) => {
var model = sequelize['import'](path.join(__dirname, file)); var model = sequelize["import"](path.join(__dirname, file));
db[model.name] = model; db[model.name] = model;
}); });
+423 -6
View File
@@ -456,6 +456,17 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"license": "MIT",
"peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/@protobufjs/aspromise": { "node_modules/@protobufjs/aspromise": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
@@ -1535,6 +1546,26 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
}, },
"node_modules/bootstrap": {
"version": "5.3.7",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.7.tgz",
"integrity": "sha512-7KgiD8UHjfcPBHEpDNg+zGz8L3LqR3GVwqZiBRFX04a1BCArZOz1r2kjly2HQ0WokqTO0v1nF+QAt8dsW4lKlw==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/twbs"
},
{
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
}
],
"license": "MIT",
"peer": true,
"peerDependencies": {
"@popperjs/core": "^2.11.8"
}
},
"node_modules/bootstrap-select": { "node_modules/bootstrap-select": {
"version": "1.13.18", "version": "1.13.18",
"resolved": "https://registry.npmjs.org/bootstrap-select/-/bootstrap-select-1.13.18.tgz", "resolved": "https://registry.npmjs.org/bootstrap-select/-/bootstrap-select-1.13.18.tgz",
@@ -5723,6 +5754,39 @@
"node": ">=8.10.0" "node": ">=8.10.0"
} }
}, },
"node_modules/gcp-metadata": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz",
"integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==",
"license": "Apache-2.0",
"optional": true,
"peer": true,
"dependencies": {
"gaxios": "^4.0.0",
"json-bigint": "^1.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/gcp-metadata/node_modules/gaxios": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz",
"integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==",
"license": "Apache-2.0",
"optional": true,
"peer": true,
"dependencies": {
"abort-controller": "^3.0.0",
"extend": "^3.0.2",
"https-proxy-agent": "^5.0.0",
"is-stream": "^2.0.0",
"node-fetch": "^2.6.7"
},
"engines": {
"node": ">=10"
}
},
"node_modules/gcs-resumable-upload": { "node_modules/gcs-resumable-upload": {
"version": "2.3.3", "version": "2.3.3",
"resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-2.3.3.tgz", "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-2.3.3.tgz",
@@ -5967,6 +6031,68 @@
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
} }
}, },
"node_modules/google-auth-library": {
"version": "6.1.6",
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.6.tgz",
"integrity": "sha512-Q+ZjUEvLQj/lrVHF/IQwRo6p3s8Nc44Zk/DALsN+ac3T4HY/g/3rrufkgtl+nZ1TW7DNAw5cTChdVp4apUXVgQ==",
"license": "Apache-2.0",
"optional": true,
"peer": true,
"dependencies": {
"arrify": "^2.0.0",
"base64-js": "^1.3.0",
"ecdsa-sig-formatter": "^1.0.11",
"fast-text-encoding": "^1.0.0",
"gaxios": "^4.0.0",
"gcp-metadata": "^4.2.0",
"gtoken": "^5.0.4",
"jws": "^4.0.0",
"lru-cache": "^6.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/google-auth-library/node_modules/gaxios": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz",
"integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==",
"license": "Apache-2.0",
"optional": true,
"peer": true,
"dependencies": {
"abort-controller": "^3.0.0",
"extend": "^3.0.2",
"https-proxy-agent": "^5.0.0",
"is-stream": "^2.0.0",
"node-fetch": "^2.6.7"
},
"engines": {
"node": ">=10"
}
},
"node_modules/google-auth-library/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"license": "ISC",
"optional": true,
"peer": true,
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/google-auth-library/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"license": "ISC",
"optional": true,
"peer": true
},
"node_modules/google-gax": { "node_modules/google-gax": {
"version": "1.15.3", "version": "1.15.3",
"resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.15.3.tgz", "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.15.3.tgz",
@@ -6089,6 +6215,35 @@
"node": ">= 4.5.0" "node": ">= 4.5.0"
} }
}, },
"node_modules/google-p12-pem": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz",
"integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==",
"deprecated": "Package is no longer maintained",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"node-forge": "^1.3.1"
},
"bin": {
"gp12-pem": "build/src/bin/gp12-pem.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/google-p12-pem/node_modules/node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
"integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
"license": "(BSD-3-Clause OR GPL-2.0)",
"optional": true,
"peer": true,
"engines": {
"node": ">= 6.13.0"
}
},
"node_modules/got": { "node_modules/got": {
"version": "8.3.2", "version": "8.3.2",
"resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz",
@@ -6231,6 +6386,40 @@
"graphql": "0.13.1 - 14" "graphql": "0.13.1 - 14"
} }
}, },
"node_modules/gtoken": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz",
"integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"gaxios": "^4.0.0",
"google-p12-pem": "^3.1.3",
"jws": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/gtoken/node_modules/gaxios": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz",
"integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==",
"license": "Apache-2.0",
"optional": true,
"peer": true,
"dependencies": {
"abort-controller": "^3.0.0",
"extend": "^3.0.2",
"https-proxy-agent": "^5.0.0",
"is-stream": "^2.0.0",
"node-fetch": "^2.6.7"
},
"engines": {
"node": ">=10"
}
},
"node_modules/handlebars": { "node_modules/handlebars": {
"version": "4.7.6", "version": "4.7.6",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz",
@@ -7251,6 +7440,13 @@
"resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz", "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz",
"integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==" "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ=="
}, },
"node_modules/jquery": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
"integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
"license": "MIT",
"peer": true
},
"node_modules/js-tokens": { "node_modules/js-tokens": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -7273,6 +7469,17 @@
"node": ">= 10" "node": ">= 10"
} }
}, },
"node_modules/json-bigint": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
"integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"bignumber.js": "^9.0.0"
}
},
"node_modules/json-buffer": { "node_modules/json-buffer": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
@@ -8273,11 +8480,23 @@
} }
}, },
"node_modules/node-fetch": { "node_modules/node-fetch": {
"version": "2.6.1", "version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"license": "MIT",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": { "engines": {
"node": "4.x || >=6.0.0" "node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
} }
}, },
"node_modules/node-forge": { "node_modules/node-forge": {
@@ -10406,6 +10625,12 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
"license": "MIT"
},
"node_modules/trim-repeated": { "node_modules/trim-repeated": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
@@ -10774,6 +10999,12 @@
"resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.5.tgz", "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.5.tgz",
"integrity": "sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes=" "integrity": "sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes="
}, },
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
"license": "BSD-2-Clause"
},
"node_modules/websocket-driver": { "node_modules/websocket-driver": {
"version": "0.7.4", "version": "0.7.4",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
@@ -10795,6 +11026,16 @@
"node": ">=0.8.0" "node": ">=0.8.0"
} }
}, },
"node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"license": "MIT",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"node_modules/which-boxed-primitive": { "node_modules/which-boxed-primitive": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz",
@@ -11427,6 +11668,12 @@
"protobufjs": "^6.8.6" "protobufjs": "^6.8.6"
} }
}, },
"@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"peer": true
},
"@protobufjs/aspromise": { "@protobufjs/aspromise": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
@@ -12355,6 +12602,13 @@
} }
} }
}, },
"bootstrap": {
"version": "5.3.7",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.7.tgz",
"integrity": "sha512-7KgiD8UHjfcPBHEpDNg+zGz8L3LqR3GVwqZiBRFX04a1BCArZOz1r2kjly2HQ0WokqTO0v1nF+QAt8dsW4lKlw==",
"peer": true,
"requires": {}
},
"bootstrap-select": { "bootstrap-select": {
"version": "1.13.18", "version": "1.13.18",
"resolved": "https://registry.npmjs.org/bootstrap-select/-/bootstrap-select-1.13.18.tgz", "resolved": "https://registry.npmjs.org/bootstrap-select/-/bootstrap-select-1.13.18.tgz",
@@ -16200,6 +16454,33 @@
"node-fetch": "^2.3.0" "node-fetch": "^2.3.0"
} }
}, },
"gcp-metadata": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz",
"integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==",
"optional": true,
"peer": true,
"requires": {
"gaxios": "^4.0.0",
"json-bigint": "^1.0.0"
},
"dependencies": {
"gaxios": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz",
"integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==",
"optional": true,
"peer": true,
"requires": {
"abort-controller": "^3.0.0",
"extend": "^3.0.2",
"https-proxy-agent": "^5.0.0",
"is-stream": "^2.0.0",
"node-fetch": "^2.6.7"
}
}
}
},
"gcs-resumable-upload": { "gcs-resumable-upload": {
"version": "2.3.3", "version": "2.3.3",
"resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-2.3.3.tgz", "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-2.3.3.tgz",
@@ -16397,6 +16678,57 @@
"path-is-absolute": "^1.0.0" "path-is-absolute": "^1.0.0"
} }
}, },
"google-auth-library": {
"version": "6.1.6",
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.6.tgz",
"integrity": "sha512-Q+ZjUEvLQj/lrVHF/IQwRo6p3s8Nc44Zk/DALsN+ac3T4HY/g/3rrufkgtl+nZ1TW7DNAw5cTChdVp4apUXVgQ==",
"optional": true,
"peer": true,
"requires": {
"arrify": "^2.0.0",
"base64-js": "^1.3.0",
"ecdsa-sig-formatter": "^1.0.11",
"fast-text-encoding": "^1.0.0",
"gaxios": "^4.0.0",
"gcp-metadata": "^4.2.0",
"gtoken": "^5.0.4",
"jws": "^4.0.0",
"lru-cache": "^6.0.0"
},
"dependencies": {
"gaxios": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz",
"integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==",
"optional": true,
"peer": true,
"requires": {
"abort-controller": "^3.0.0",
"extend": "^3.0.2",
"https-proxy-agent": "^5.0.0",
"is-stream": "^2.0.0",
"node-fetch": "^2.6.7"
}
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"optional": true,
"peer": true,
"requires": {
"yallist": "^4.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"optional": true,
"peer": true
}
}
},
"google-gax": { "google-gax": {
"version": "1.15.3", "version": "1.15.3",
"resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.15.3.tgz", "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.15.3.tgz",
@@ -16491,6 +16823,25 @@
} }
} }
}, },
"google-p12-pem": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz",
"integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==",
"optional": true,
"peer": true,
"requires": {
"node-forge": "^1.3.1"
},
"dependencies": {
"node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
"integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
"optional": true,
"peer": true
}
}
},
"got": { "got": {
"version": "8.3.2", "version": "8.3.2",
"resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz",
@@ -16599,6 +16950,34 @@
"object-path": "^0.11.4" "object-path": "^0.11.4"
} }
}, },
"gtoken": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz",
"integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==",
"optional": true,
"peer": true,
"requires": {
"gaxios": "^4.0.0",
"google-p12-pem": "^3.1.3",
"jws": "^4.0.0"
},
"dependencies": {
"gaxios": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz",
"integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==",
"optional": true,
"peer": true,
"requires": {
"abort-controller": "^3.0.0",
"extend": "^3.0.2",
"https-proxy-agent": "^5.0.0",
"is-stream": "^2.0.0",
"node-fetch": "^2.6.7"
}
}
}
},
"handlebars": { "handlebars": {
"version": "4.7.6", "version": "4.7.6",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz",
@@ -17377,6 +17756,12 @@
"resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz", "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz",
"integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==" "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ=="
}, },
"jquery": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
"integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
"peer": true
},
"js-tokens": { "js-tokens": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -17396,6 +17781,16 @@
"doc-path": "2.3.0" "doc-path": "2.3.0"
} }
}, },
"json-bigint": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
"integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
"optional": true,
"peer": true,
"requires": {
"bignumber.js": "^9.0.0"
}
},
"json-buffer": { "json-buffer": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
@@ -18266,9 +18661,12 @@
"integrity": "sha1-GA6scAPgxwdhjvMTaPYvhLKmkJE=" "integrity": "sha1-GA6scAPgxwdhjvMTaPYvhLKmkJE="
}, },
"node-fetch": { "node-fetch": {
"version": "2.6.1", "version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"requires": {
"whatwg-url": "^5.0.0"
}
}, },
"node-forge": { "node-forge": {
"version": "0.7.6", "version": "0.7.6",
@@ -19954,6 +20352,11 @@
} }
} }
}, },
"tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"trim-repeated": { "trim-repeated": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
@@ -20253,6 +20656,11 @@
"resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.5.tgz", "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.5.tgz",
"integrity": "sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes=" "integrity": "sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes="
}, },
"webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
"websocket-driver": { "websocket-driver": {
"version": "0.7.4", "version": "0.7.4",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
@@ -20268,6 +20676,15 @@
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
}, },
"whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"requires": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"which-boxed-primitive": { "which-boxed-primitive": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz",
+72 -4
View File
@@ -16,7 +16,8 @@ body {
} }
@font-face { @font-face {
font-family: "Bradford LL"; font-family: "Bradford LL";
src: url("/fonts/BradfordLL-Regular.woff2") format("woff2"), url("/fonts/BradfordLL-Regular.woff") format("woff"); src: url("/fonts/BradfordLL-Regular.woff2") format("woff2"),
url("/fonts/BradfordLL-Regular.woff") format("woff");
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
font-display: swap; font-display: swap;
@@ -24,21 +25,24 @@ body {
@font-face { @font-face {
font-family: "Bradford LL"; font-family: "Bradford LL";
src: url("/fonts/BradfordLL-Italic.woff2") format("woff2"), url("/fonts/BradfordLL-Italic.woff") format("woff"); src: url("/fonts/BradfordLL-Italic.woff2") format("woff2"),
url("/fonts/BradfordLL-Italic.woff") format("woff");
font-weight: normal; font-weight: normal;
font-style: italic; font-style: italic;
font-display: swap; font-display: swap;
} }
@font-face { @font-face {
font-family: "Necto Mono"; font-family: "Necto Mono";
src: url("/fonts/Necto-Mono.woff2") format("woff2"), url("/fonts/Necto-Mono.woff") format("woff"); src: url("/fonts/Necto-Mono.woff2") format("woff2"),
url("/fonts/Necto-Mono.woff") format("woff");
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
font-display: swap; font-display: swap;
} }
@font-face { @font-face {
font-family: "TT Nooks Script"; font-family: "TT Nooks Script";
src: url("/fonts/TTNooksScript-Bold.woff2") format("woff2"), url("/fonts/TTNooksScript-Bold.woff") format("woff"); src: url("/fonts/TTNooksScript-Bold.woff2") format("woff2"),
url("/fonts/TTNooksScript-Bold.woff") format("woff");
font-weight: bold; font-weight: bold;
font-style: normal; font-style: normal;
font-display: swap; font-display: swap;
@@ -843,6 +847,9 @@ input::-ms-input-placeholder {
width: -moz-max-content; width: -moz-max-content;
padding-bottom: 4px; padding-bottom: 4px;
border-bottom: 1px solid black; border-bottom: 1px solid black;
position: absolute;
bottom: 4px;
left: 50%;
} }
#page4 .customImgRow img { #page4 .customImgRow img {
width: 335px; width: 335px;
@@ -1439,3 +1446,64 @@ img.image-missing {
display: none; display: none;
border-left: none; border-left: none;
} }
#resetQuizButton,
#resumeButton {
background: #737a73;
color: #fff;
font: 12px "Necto Mono";
border: none;
border-radius: 4px;
padding: 10px 32px;
margin-left: 8px;
cursor: pointer;
transition: all 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
outline: none;
}
#resetQuizButton:hover,
#resumeButton:hover,
#resetQuizButton:focus,
#resumeButton:focus {
background: #444242;
color: #fff;
}
#questionNavBar .nav-btn {
font: 12px "Necto Mono";
border-radius: 4px !important;
padding: 10px 16px !important;
margin: 0 4px;
min-width: 32px;
min-height: 32px;
border: none;
font-weight: bold;
cursor: pointer;
transition: background 0.2s, color 0.2s;
text-align: center;
vertical-align: middle;
display: inline-flex;
align-items: center;
justify-content: center;
}
#questionNavBar .nav-btn.answered {
background: #43a047;
color: #fff;
border: 2px solid #388e3c;
}
#questionNavBar .nav-btn.current {
background: #1976d2;
color: #fff;
border: 3px solid #1565c0;
box-shadow: 0 0 8px 2px rgba(25, 118, 210, 0.15);
z-index: 2;
}
#questionNavBar .nav-btn.unanswered {
background: #ccc;
color: #888;
border: 2px solid #bbb;
}
#questionNavBar .nav-btn:hover,
#questionNavBar .nav-btn:focus {
filter: brightness(0.95);
outline: none;
}
File diff suppressed because it is too large Load Diff
+159 -25
View File
@@ -23,10 +23,15 @@
Lets start our journey Lets start our journey
<span class="underlineSpan">just for you</span>. <span class="underlineSpan">just for you</span>.
</h3> </h3>
<p class="para"> <p class="para">We are experts on skin and skincare actives..</p>
We are experts on skin and skincare actives..
</p>
<button id="beginButton" class="beginButton">LET'S BEGIN!</button> <button id="beginButton" class="beginButton">LET'S BEGIN!</button>
<button
id="resumeButton"
class="resumeButton"
style="display: none; margin-top: 1em"
>
RESUME QUIZ
</button>
</div> </div>
<div class="main-image-container"> <div class="main-image-container">
<img onerror="handleImageMissing(this)" /> <img onerror="handleImageMissing(this)" />
@@ -46,18 +51,52 @@
<section id="page3"> <section id="page3">
<div class="container"> <div class="container">
<div class="row headerRow"> <div class="row headerRow">
<div id="prevBtn" class="prevBtn nav-item left" onclick="nextQuestion(true)"> <div
<span id="arrowTopLeft" class="arrowTopLeft control-arrows"><img src="/image/left-arrow.png" /></span> id="prevBtn"
class="prevBtn nav-item left"
onclick="nextQuestion(true)"
>
<span id="arrowTopLeft" class="arrowTopLeft control-arrows"
><img src="/image/left-arrow.png"
/></span>
</div> </div>
<div id="identity" class="nav-item bordered"> <div id="identity" class="nav-item bordered">
<div class="createdByDiv"> <div class="createdByDiv">
<!-- Dynamic data --> <!-- Dynamic data -->
</div> </div>
</div> </div>
<div id="nextBtn" class="nextBtn nextBtnTop nav-item right" onclick="nextQuestion()"> <div
<span id="arrowTopRight" class="arrowTopRight control-arrows"><img src="/image/right-arrow.png" /></span> id="nextBtn"
class="nextBtn nextBtnTop nav-item right"
onclick="nextQuestion()"
>
<span id="arrowTopRight" class="arrowTopRight control-arrows"
><img src="/image/right-arrow.png"
/></span>
</div> </div>
<button
id="resetQuizButton"
class="resetQuizButton"
style="margin-left: 1em"
>
Reset Quiz
</button>
</div> </div>
<div
id="questionNavBar"
class="question-nav-bar"
style="
position: static;
width: 100%;
background: #fff;
z-index: 1000;
display: none;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
padding: 0.5em 0;
justify-content: center;
align-items: center;
"
></div>
<div class="row questionRow mtb" id="questionRow"> <div class="row questionRow mtb" id="questionRow">
<h1> <h1>
<!-- dynamic data here --> <!-- dynamic data here -->
@@ -80,7 +119,9 @@
<div class="answerInner typeText"> <div class="answerInner typeText">
<input type="text" /> <input type="text" />
<div class="arrowAnswerBtn nextBtn right" onclick="nextQuestion()"> <div class="arrowAnswerBtn nextBtn right" onclick="nextQuestion()">
<span class="arrowAnswer control-arrows"><img src="/image/right-arrow.png" /></span> <span class="arrowAnswer control-arrows"
><img src="/image/right-arrow.png"
/></span>
</div> </div>
</div> </div>
</div> </div>
@@ -89,7 +130,9 @@
<div class="answerInner typeNum"> <div class="answerInner typeNum">
<input type="number" maxlength="4" minlength="4" /> <input type="number" maxlength="4" minlength="4" />
<div class="arrowAnswerBtn nextBtn" onclick="nextQuestion()"> <div class="arrowAnswerBtn nextBtn" onclick="nextQuestion()">
<span class="arrowAnswer control-arrows"><img src="/image/right-arrow.png" /></span> <span class="arrowAnswer control-arrows"
><img src="/image/right-arrow.png"
/></span>
</div> </div>
</div> </div>
</div> </div>
@@ -112,7 +155,14 @@
<div class="sliderDiv"> <div class="sliderDiv">
<div class="slidecontainer"> <div class="slidecontainer">
<!-- value="1" --> <!-- value="1" -->
<input type="range" min="0" max="100" class="slider" id="myRange" step="any" /> <input
type="range"
min="0"
max="100"
class="slider"
id="myRange"
step="any"
/>
</div> </div>
<div class="sliderRanges"> <div class="sliderRanges">
<!-- dynamic data --> <!-- dynamic data -->
@@ -121,7 +171,11 @@
</div> </div>
</div> </div>
<div class="row answerRow typeSelection" id="typeSelection" data-type="7"> <div
class="row answerRow typeSelection"
id="typeSelection"
data-type="7"
>
<div class="answerInner"> <div class="answerInner">
<!-- dynamic data --> <!-- dynamic data -->
</div> </div>
@@ -133,7 +187,9 @@
<input id="city_id" hidden /> <input id="city_id" hidden />
<div id="result"></div> <div id="result"></div>
<div class="arrowAnswerBtn nextBtn right" onclick="nextQuestion()"> <div class="arrowAnswerBtn nextBtn right" onclick="nextQuestion()">
<span class="arrowAnswer control-arrows"><img src="/image/right-arrow.png" /></span> <span class="arrowAnswer control-arrows"
><img src="/image/right-arrow.png"
/></span>
</div> </div>
</div> </div>
</div> </div>
@@ -143,16 +199,28 @@
<section id="page4"> <section id="page4">
<div class="container"> <div class="container">
<div class="row headerRow"> <div class="row headerRow">
<div id="prevBtn" class="prevBtn nav-item left" onclick="nextQuestion(true,true)"> <div
<span id="arrowTopLeft" class="arrowTopLeft control-arrows"><img src="/image/left-arrow.png" /></span> id="prevBtn"
class="prevBtn nav-item left"
onclick="nextQuestion(true,true)"
>
<span id="arrowTopLeft" class="arrowTopLeft control-arrows"
><img src="/image/left-arrow.png"
/></span>
</div> </div>
<div class="nav-item bordered"> <div class="nav-item bordered">
<div class="createdByDiv"> <div class="createdByDiv">
<!-- Dynamic data --> <!-- Dynamic data -->
</div> </div>
</div> </div>
<div id="nextBtn" class="nextBtn nextBtnTop nav-item right" onclick="closeResponse()"> <div
<span id="arrowTopRight" class="arrowTopRight control-arrows"><img src="/image/right-arrow.png" /></span> id="nextBtn"
class="nextBtn nextBtnTop nav-item right"
onclick="closeResponse()"
>
<span id="arrowTopRight" class="arrowTopRight control-arrows"
><img src="/image/right-arrow.png"
/></span>
</div> </div>
</div> </div>
<div class="row customImgRow"> <div class="row customImgRow">
@@ -169,16 +237,28 @@
<section id="page5"> <section id="page5">
<div class="container center-everything"> <div class="container center-everything">
<div class="row headerRow"> <div class="row headerRow">
<div id="prevBtn" class="prevBtn nav-item left" onclick="nextQuestion(true,true)"> <div
<span id="arrowTopLeft" class="arrowTopLeft control-arrows"><img src="/image/left-arrow.png" /></span> id="prevBtn"
class="prevBtn nav-item left"
onclick="nextQuestion(true,true)"
>
<span id="arrowTopLeft" class="arrowTopLeft control-arrows"
><img src="/image/left-arrow.png"
/></span>
</div> </div>
<div id="identity" class="nav-item bordered"> <div id="identity" class="nav-item bordered">
<div class="createdByDiv"> <div class="createdByDiv">
<!-- Dynamic data --> <!-- Dynamic data -->
</div> </div>
</div> </div>
<div id="nextBtn" class="nextBtn nextBtnTop nav-item right" onclick="closeResponse()"> <div
<span id="arrowTopRight" class="arrowTopRight control-arrows"><img src="/image/right-arrow.png" /></span> id="nextBtn"
class="nextBtn nextBtnTop nav-item right"
onclick="closeResponse()"
>
<span id="arrowTopRight" class="arrowTopRight control-arrows"
><img src="/image/right-arrow.png"
/></span>
</div> </div>
</div> </div>
<div class="row responseRow"> <div class="row responseRow">
@@ -189,6 +269,15 @@
<div class="responseBody"> <div class="responseBody">
<!-- dynamic data here --> <!-- dynamic data here -->
</div> </div>
<div
id="responseCountdown"
style="
display: none;
text-align: center;
font-size: 1.5em;
margin-top: 1em;
"
></div>
</div> </div>
</div> </div>
<div id="weatherApi" data-type="8"> <div id="weatherApi" data-type="8">
@@ -219,7 +308,10 @@
<div class="container"> <div class="container">
<div class="row finalRow"> <div class="row finalRow">
<div class="imgDiv"> <div class="imgDiv">
<img src="/frontend_images/FinalScreenAnimation/final.gif" alt="image missing" /> <img
src="/frontend_images/FinalScreenAnimation/final.gif"
alt="image missing"
/>
</div> </div>
<div class="finalDesc"> <div class="finalDesc">
<h3>Preparing your custom formula...</h3> <h3>Preparing your custom formula...</h3>
@@ -247,13 +339,18 @@
</div> </div>
<div class="paraDiv"> <div class="paraDiv">
<p> <p>
Based on what youve shared, your skin is pretty nicely balanced. Well look to reduce your pores, protecting you from pollution and sealing out toxins. Well also target your Based on what youve shared, your skin is pretty nicely
balanced. Well look to reduce your pores, protecting you from
pollution and sealing out toxins. Well also target your
blackheads and tone out your skin for a nice, even look. blackheads and tone out your skin for a nice, even look.
</p> </p>
</div> </div>
<div class="buttonDiv"> <div class="buttonDiv">
<button class="button" onclick="addToCart()"> <button class="button" onclick="addToCart()">
YOUR CUSTOM FORMULA <span id="arrowCustom" class="arrowCustom control-arrows"><img src="/image/right-arrow-white.png" /></span> YOUR CUSTOM FORMULA
<span id="arrowCustom" class="arrowCustom control-arrows"
><img src="/image/right-arrow-white.png"
/></span>
</button> </button>
</div> </div>
</div> </div>
@@ -265,11 +362,18 @@
<h3>About these results</h3> <h3>About these results</h3>
</div> </div>
<div class="paraDiv"> <div class="paraDiv">
<p>These results tell us exactly how much support you need in which areas - Your custom forumlas will be tailored to these measurements.</p> <p>
These results tell us exactly how much support you need in which
areas - Your custom forumlas will be tailored to these
measurements.
</p>
</div> </div>
<div class="buttonDiv"> <div class="buttonDiv">
<button class="button" onclick="addToCart()"> <button class="button" onclick="addToCart()">
YOUR CUSTOM FORMULA <span id="arrowCustom" class="arrowCustom control-arrows"><img src="/image/right-arrow-white.png" /></span> YOUR CUSTOM FORMULA
<span id="arrowCustom" class="arrowCustom control-arrows"
><img src="/image/right-arrow-white.png"
/></span>
</button> </button>
</div> </div>
</div> </div>
@@ -293,6 +397,36 @@
<div></div> <div></div>
<div></div> <div></div>
</div> </div>
<div
id="terminationOverlay"
style="
display: none;
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background: rgba(0, 0, 0, 0.85);
z-index: 9999;
justify-content: center;
align-items: center;
flex-direction: column;
"
>
<div
id="terminationMessage"
style="
color: white;
font-size: 2em;
text-align: center;
margin-bottom: 1em;
"
></div>
<div
id="terminationCountdown"
style="color: white; font-size: 2em; text-align: center"
></div>
</div>
<script src="/frontend_js/jquery.min.js"></script> <script src="/frontend_js/jquery.min.js"></script>
<script src="/frontend_js/jquery-2.1.3.js"></script> <script src="/frontend_js/jquery-2.1.3.js"></script>
<script src="/frontend_js/jquery-ui.js"></script> <script src="/frontend_js/jquery-ui.js"></script>