alignment-compass
Advanced tools
| import { IAnsweredAnswer } from "../types/answered-answer.interface"; | ||
| import { ICompassTestResult } from "../types/compass-test-result.interface"; | ||
| /** Used to calculate test results */ | ||
| export declare class TestCalculator { | ||
| /** | ||
| * calculates a coordinate given a list of test answers | ||
| * @param answers a list of answered questions | ||
| */ | ||
| static CalculateTestResults(answers: IAnsweredAnswer[]): ICompassTestResult; | ||
| /** | ||
| * takes a value and normalizes it in relation to provided max value | ||
| * @param value the value to be normalized | ||
| * @param max all values get normalized between 0 and this value | ||
| */ | ||
| private static Normalize; | ||
| } | ||
| //# sourceMappingURL=test-calculator.class.d.ts.map |
| {"version":3,"file":"test-calculator.class.d.ts","sourceRoot":"","sources":["../../lib/classes/test-calculator.class.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAE5E,qCAAqC;AACrC,qBAAa,cAAc;IAE1B;;;OAGG;WACW,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,kBAAkB;IAuClF;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;CAKxB"} |
| "use strict"; | ||
| // Code Written by CodingVampyre 2021; Licensed under MIT | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.TestCalculator = void 0; | ||
| /** Used to calculate test results */ | ||
| class TestCalculator { | ||
| /** | ||
| * calculates a coordinate given a list of test answers | ||
| * @param answers a list of answered questions | ||
| */ | ||
| static CalculateTestResults(answers) { | ||
| // Calculate Max value on each axis | ||
| let max = [0, 0]; | ||
| for (const answer of answers) { | ||
| if (answer.weights[0] !== undefined && answer.weights[1] !== undefined) { | ||
| max[0] += Math.abs(answer.weights[0]); | ||
| max[1] += Math.abs(answer.weights[1]); | ||
| } | ||
| } | ||
| // Calculate answer by creating a vector of answer * weights | ||
| const weightedAnswers = answers.map(answer => { | ||
| if (answer.answer !== undefined && answer.weights[0] !== undefined && answer.weights[1] !== undefined) { | ||
| return [ | ||
| answer.answer * answer.weights[0], | ||
| answer.answer * answer.weights[1], | ||
| ]; | ||
| } | ||
| }); | ||
| // add together all answers | ||
| let finalResult = [0, 0]; | ||
| for (const weightedAnswer of weightedAnswers) { | ||
| if (weightedAnswer && weightedAnswer[0] !== undefined && finalResult[1] !== undefined) { | ||
| finalResult[0] += weightedAnswer[0]; | ||
| finalResult[1] += weightedAnswer[1]; | ||
| } | ||
| } | ||
| // normalize using max value on each axis | ||
| const normalizedResult = [ | ||
| TestCalculator.Normalize(finalResult[0], max[0]), | ||
| TestCalculator.Normalize(finalResult[1], max[1]), | ||
| ]; | ||
| // set Result | ||
| return normalizedResult; | ||
| } | ||
| /** | ||
| * takes a value and normalizes it in relation to provided max value | ||
| * @param value the value to be normalized | ||
| * @param max all values get normalized between 0 and this value | ||
| */ | ||
| static Normalize(value, max) { | ||
| if (max === 0) | ||
| return 0; | ||
| return value / max; | ||
| } | ||
| } | ||
| exports.TestCalculator = TestCalculator; | ||
| //# sourceMappingURL=test-calculator.class.js.map |
| {"version":3,"file":"test-calculator.class.js","sourceRoot":"","sources":["../../lib/classes/test-calculator.class.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAKzD,qCAAqC;AACrC,MAAa,cAAc;IAE1B;;;OAGG;IACI,MAAM,CAAC,oBAAoB,CAAC,OAA0B;QAC5D,mCAAmC;QACnC,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;gBACvE,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;aACtC;SACD;QAED,4DAA4D;QAC5D,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;gBACtG,OAAO;oBACN,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBACjC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;iBACjC,CAAA;aACD;QACF,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;YAC7C,IAAI,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;gBACtF,WAAW,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;gBACpC,WAAW,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;aACpC;SACD;QAED,yCAAyC;QACzC,MAAM,gBAAgB,GAAqB;YAC1C,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAChD,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SAChD,CAAC;QAEF,aAAa;QACb,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,SAAS,CAAC,KAAa,EAAE,GAAW;QAClD,IAAI,GAAG,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACxB,OAAO,KAAK,GAAG,GAAG,CAAC;IACpB,CAAC;CAED;AAvDD,wCAuDC"} |
| export {}; | ||
| //# sourceMappingURL=test-calculator.test.d.ts.map |
| {"version":3,"file":"test-calculator.test.d.ts","sourceRoot":"","sources":["../../lib/classes/test-calculator.test.ts"],"names":[],"mappings":""} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const test_calculator_class_1 = require("../classes/test-calculator.class"); | ||
| describe('tests', () => { | ||
| test('should calculate primitive test results correctly', () => { | ||
| const results = test_calculator_class_1.TestCalculator.CalculateTestResults([ | ||
| { | ||
| answer: 1, | ||
| weights: [1, 0], | ||
| } | ||
| ]); | ||
| expect(results).toStrictEqual([1, 0]); | ||
| }); | ||
| test('should calculate a more complex test', () => { | ||
| const results = test_calculator_class_1.TestCalculator.CalculateTestResults([ | ||
| { | ||
| answer: 1, | ||
| weights: [1, 0], | ||
| }, | ||
| { | ||
| answer: 0.5, | ||
| weights: [0, 1], | ||
| }, | ||
| { | ||
| answer: -1, | ||
| weights: [0.5, -1], | ||
| }, | ||
| { | ||
| answer: -0.5, | ||
| weights: [-1, 1], | ||
| } | ||
| ]); | ||
| expect(results).toStrictEqual([0.4, 0.3333333333333333]); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=test-calculator.test.js.map |
| {"version":3,"file":"test-calculator.test.js","sourceRoot":"","sources":["../../lib/classes/test-calculator.test.ts"],"names":[],"mappings":";;AACA,4EAAkE;AAElE,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IAEnB,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAE3D,MAAM,OAAO,GAAG,sCAAc,CAAC,oBAAoB,CAAC;YAChD;gBACI,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aAClB;SACJ,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAE9C,MAAM,OAAO,GAAG,sCAAc,CAAC,oBAAoB,CAAC;YAChD;gBACI,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aAClB;YACD;gBACI,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aAClB;YACD;gBACI,MAAM,EAAE,CAAC,CAAC;gBACV,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aACrB;YACD;gBACI,MAAM,EAAE,CAAC,GAAG;gBACZ,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACnB;SACJ,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE7D,CAAC,CAAC,CAAC;AAEP,CAAC,CAAC,CAAC"} |
| export * from './classes/test-calculator.class'; | ||
| export * from './types/answered-answer.interface'; | ||
| export * from './types/compass-test-question.interface'; | ||
| export * from './types/compass-test.interface'; | ||
| export * from './types/compass-test-result.interface'; | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AACA,cAAc,iCAAiC,CAAC;AAGhD,cAAc,mCAAmC,CAAC;AAClD,cAAc,yCAAyC,CAAC;AACxD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC"} |
| "use strict"; | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
| for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| // Test Calculator | ||
| __exportStar(require("./classes/test-calculator.class"), exports); | ||
| // Types | ||
| __exportStar(require("./types/answered-answer.interface"), exports); | ||
| __exportStar(require("./types/compass-test-question.interface"), exports); | ||
| __exportStar(require("./types/compass-test.interface"), exports); | ||
| __exportStar(require("./types/compass-test-result.interface"), exports); | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kBAAkB;AAClB,kEAAgD;AAEhD,QAAQ;AACR,oEAAkD;AAClD,0EAAwD;AACxD,iEAA+C;AAC/C,wEAAsD"} |
| /** holds information about a selected answer */ | ||
| export interface IAnsweredAnswer { | ||
| /** since answers are single choice, the selected answer can be provided here */ | ||
| answer?: number; | ||
| /** this factor normally is [1,1] and can influence how much a result moves the quiztaker on each axis */ | ||
| weights: [number?, number?]; | ||
| } | ||
| //# sourceMappingURL=answered-answer.interface.d.ts.map |
| {"version":3,"file":"answered-answer.interface.d.ts","sourceRoot":"","sources":["../../lib/types/answered-answer.interface.ts"],"names":[],"mappings":"AAEA,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAE/B,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,yGAAyG;IACzG,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5B"} |
| "use strict"; | ||
| // Code Written by CodingVampyre 2021; Licensed under MIT | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| //# sourceMappingURL=answered-answer.interface.js.map |
| {"version":3,"file":"answered-answer.interface.js","sourceRoot":"","sources":["../../lib/types/answered-answer.interface.ts"],"names":[],"mappings":";AAAA,yDAAyD"} |
| /** Contains a question with text */ | ||
| export interface ICompassTestQuestion { | ||
| text: string; | ||
| weights: [number, number]; | ||
| } | ||
| //# sourceMappingURL=compass-test-question.interface.d.ts.map |
| {"version":3,"file":"compass-test-question.interface.d.ts","sourceRoot":"","sources":["../../lib/types/compass-test-question.interface.ts"],"names":[],"mappings":"AAEA,oCAAoC;AACpC,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1B"} |
| "use strict"; | ||
| // Code Written by CodingVampyre 2021; Licensed under MIT | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| //# sourceMappingURL=compass-test-question.interface.js.map |
| {"version":3,"file":"compass-test-question.interface.js","sourceRoot":"","sources":["../../lib/types/compass-test-question.interface.ts"],"names":[],"mappings":";AAAA,yDAAyD"} |
| export declare type ICompassTestResult = [number, number]; | ||
| //# sourceMappingURL=compass-test-result.interface.d.ts.map |
| {"version":3,"file":"compass-test-result.interface.d.ts","sourceRoot":"","sources":["../../lib/types/compass-test-result.interface.ts"],"names":[],"mappings":"AAEA,oBAAY,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"} |
| "use strict"; | ||
| // Code Written by CodingVampyre 2021; Licensed under MIT | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| //# sourceMappingURL=compass-test-result.interface.js.map |
| {"version":3,"file":"compass-test-result.interface.js","sourceRoot":"","sources":["../../lib/types/compass-test-result.interface.ts"],"names":[],"mappings":";AAAA,yDAAyD"} |
| import { ICompassTestQuestion } from "./compass-test-question.interface"; | ||
| /** Contains a full test with metadata and questions */ | ||
| export interface ICompassTest { | ||
| /** the name of a test, to be used as heading */ | ||
| name: string; | ||
| /** a description which can provide further information about a test */ | ||
| description: string; | ||
| /** | ||
| * a list of questions that can be answered | ||
| * typically, answers should be [Disagree, Somehat disagree, unsure/neutral, somewhat agree, agree] | ||
| */ | ||
| questions: ICompassTestQuestion[]; | ||
| /** to render a test, each axis should hold a caption */ | ||
| labels: { | ||
| xAxis: { | ||
| low: string; | ||
| high: string; | ||
| }; | ||
| yAxis: { | ||
| low: string; | ||
| high: string; | ||
| }; | ||
| }; | ||
| } | ||
| //# sourceMappingURL=compass-test.interface.d.ts.map |
| {"version":3,"file":"compass-test.interface.d.ts","sourceRoot":"","sources":["../../lib/types/compass-test.interface.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAE5B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IAEb,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAElC,wDAAwD;IACxD,MAAM,EAAE;QACP,KAAK,EAAE;YACN,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;SACb,CAAC;QACF,KAAK,EAAE;YACN,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;SACb,CAAA;KACD,CAAC;CACF"} |
| "use strict"; | ||
| // Code Written by CodingVampyre 2021; Licensed under MIT | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| //# sourceMappingURL=compass-test.interface.js.map |
| {"version":3,"file":"compass-test.interface.js","sourceRoot":"","sources":["../../lib/types/compass-test.interface.ts"],"names":[],"mappings":";AAAA,yDAAyD"} |
+10
-3
| { | ||
| "name": "alignment-compass", | ||
| "version": "1.1.1", | ||
| "version": "1.1.2", | ||
| "description": "a library to create compass tests", | ||
| "main": "dist/index.js", | ||
| "types": "dist/index.d.ts", | ||
| "scripts": { | ||
| "test": "jest" | ||
| "test": "jest", | ||
| "build": "tsc" | ||
| }, | ||
| "keywords": ["compass", "alignment", "test", "axis"], | ||
| "keywords": [ | ||
| "compass", | ||
| "alignment", | ||
| "test", | ||
| "axis" | ||
| ], | ||
| "author": "", | ||
@@ -11,0 +18,0 @@ "license": "ISC", |
22682
136.59%41
215.38%334
118.3%