initial commit for plugin-free-sort-ordered

This commit is contained in:
cchang-vassar 2025-05-02 19:18:47 -07:00
parent 861cd1e646
commit 7e1b0f2df5
10 changed files with 276 additions and 0 deletions

View File

@ -0,0 +1,41 @@
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Cherrie Chang" # Replace with last name
given-names: "Cherrie Chang" # Replace with first name
name-particle: "Cherrie Chang" # Replace with name particle(s)
orcid: "https://orcid.org/0000-0000-0000-0000" # Replace with ORCID
# More authors can be listed here in the same format as above
contact: # Contact person for this extension
- family-names: "Cherrie Chang"
given-names: "Cherrie Chang"
email: "{email}" # Replace with contact person's email
orcid: "https://orcid.org/0000-0000-0000-0000" # Replace with contact person's ORCID
title: "jsPsychPluginFreeSortOrdered"
version: 0.0.0
doi: 10.5281/zenodo.1234 # Replace with DOI
date-released: 2000-01-01
url: "{softwareUrl}" # Replace with URL to this extension
# If you wish to cite a paper on this extension instead, you can use the following template:
preferred-citation:
authors:
- family-names: "Cherrie Chang"
given-names: "Cherrie Chang"
name-particle: "Cherrie Chang"
orcid: "https://orcid.org/0000-0000-0000-0000"
# More authors can be listed here in the same format as above
date-published: 2023-05-11
doi: 10.21105/joss.12345
issn: 1234-5678
issue: 01
journal: Journal for Open Source Software
publisher:
name: Open Journals
start: 0001
title: "{title}"
type: article # Other options include: book, pamphlet, conference-paper...
url: "{linkToPublicationInJournal}"
volume: 1
# More information on the preffered-citation CFF format can be found at https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files#citing-something-other-than-software

View File

@ -0,0 +1,21 @@
# plugin-free-sort-ordered
## Overview
The free sort core plugin, but the images have to be sorted by placing into ordered boxes.
## Loading
*Enter instructions for loading the plugin package here.*
## Compatibility
`plugin-free-sort-ordered` requires jsPsych v8.0.0 or later.
## Documentation
See [documentation](/packages/plugin-free-sort-ordered/README.md)
## Author / Citation
[Cherrie Chang](https://github.com/cherriechang)

View File

@ -0,0 +1,33 @@
# plugin-free-sort-ordered
The free sort core plugin, but the images have to be sorted by placing into ordered boxes.
## Parameters
In addition to the [parameters available in all plugins](https://www.jspsych.org/latest/overview/plugins#parameters-available-in-all-plugins), this plugin accepts the following parameters. Parameters with a default value of undefined must be specified. Other parameters can be left unspecified if the default value is acceptable.
| Parameter | Type | Default Value | Description |
| ------------------- | ---------------- | ------------------ | ---------------------------------------- |
| | | | |
## Data Generated
In addition to the [default data collected by all plugins](https://www.jspsych.org/latest/overview/plugins#data-collected-by-all-plugins), this plugin collects the following data for each trial.
| Name | Type | Value |
| --------- | ------- | ---------------------------------------- |
| | | |
## Install
*Enter instructions for installing the plugin package here.*
## Examples
### Title of Example
```javascript
var trial = {
type: jsPsychPluginFreeSortOrdered
}
```

View File

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<title>jsPsychPluginFreeSortOrdered Example</title>
<script src="https://unpkg.com/jspsych"></script>
<!-- Load the published plugin package here, e.g.
<script src="https://unpkg.com/plugin-free-sort-ordered"></script>
<script src="../dist/index.global.js"></script> -->
<script src="../dist/index.global.js"></script>
<link rel="stylesheet" href="https://unpkg.com/jspsych/css/jspsych.css">
</head>
<body></body>
<script>
const jsPsych = initJsPsych();
const trial = {
type: jsPsychPluginFreeSortOrdered
};
jsPsych.run([trial])
</script>
</html>

View File

@ -0,0 +1 @@
module.exports = require("@jspsych/config/jest").makePackageConfig(__dirname);

View File

@ -0,0 +1,53 @@
{
"name": "plugin-free-sort-ordered",
"version": "0.0.1",
"description": "The free sort core plugin, but the images have to be sorted by placing into ordered boxes.",
"type": "module",
"main": "dist/index.cjs",
"exports": {
"import": "./dist/index.js",
"require": "./dist/index.cjs"
},
"typings": "dist/index.d.ts",
"unpkg": "dist/index.browser.min.js",
"files": [
"src",
"dist"
],
"source": "src/index.ts",
"scripts": {
"test": "jest",
"test:watch": "npm test -- --watch",
"tsc": "tsc",
"build": "rollup --config",
"build:watch": "npm run build -- --watch"
},
"repository": {
"type": "git",
"url": "git+https://github.com/jspsych/jsPsych.git",
"directory": ""
},
"keywords": [
"jsPsych"
],
"author": {
"name": "Cherrie Chang",
"url": "https://github.com/cherriechang"
},
"license": "MIT",
"bugs": {
"url": "https://github.com/jspsych/jsPsych/issues"
},
"homepage": "/packages/plugin-free-sort-ordered/README.md",
"dependencies": {
"jspsych": "^8.0.0",
"@citation-js/core": "^0.7.14",
"@citation-js/plugin-software-formats": "^0.6.1",
"@citation-js/plugin-bibtex": "^0.7.14",
"@citation-js/plugin-cff": "^0.6.1"
},
"devDependencies": {
"@jspsych/config": "^3.2.2",
"@jspsych/test-utils": "^1.0.0"
}
}

View File

@ -0,0 +1,3 @@
import { makeRollupConfig } from "@jspsych/config/rollup";
export default makeRollupConfig("jsPsychPluginFreeSortOrdered");

View File

@ -0,0 +1,19 @@
import { startTimeline } from "@jspsych/test-utils";
import jsPsychPluginFreeSortOrdered from ".";
jest.useFakeTimers();
describe("my plugin", () => {
it("should load", async () => {
const { expectFinished, getHTML, getData, displayElement, jsPsych } = await startTimeline([
{
type: jsPsychPluginFreeSortOrdered,
parameter_name: 1,
parameter_name2: "img.png",
},
]);
await expectFinished();
});
});

View File

@ -0,0 +1,71 @@
import { JsPsych, JsPsychPlugin, ParameterType, TrialType } from "jspsych";
import { version } from "../package.json";
const info = <const>{
name: "plugin-free-sort-ordered",
version: version,
parameters: {
/** Each element of this array is an image path or svg code. */
stimuli: {
type: ParameterType.INT | ParameterType.HTML_STRING,
default: undefined,
array: true,
},
/** The height of the images in pixels */
stim_height: {
type: ParameterType.INT,
default: 100,
},
/** The width of the images in pixels */
stim_width: {
type: ParameterType.INT,
default: 100,
},
/** How much larger to make the stimulus while moving (1 = no scaling). */
scale_factor: {
type: ParameterType.FLOAT,
default: 1.5,
},
},
data: {
/** Provide a clear description of the data1 that could be used as documentation. We will eventually use these comments to automatically build documentation and produce metadata. */
data1: {
type: ParameterType.INT,
},
/** Provide a clear description of the data2 that could be used as documentation. We will eventually use these comments to automatically build documentation and produce metadata. */
data2: {
type: ParameterType.STRING,
},
},
// When you run build on your plugin, citations will be generated here based on the information in the CITATION.cff file.
citations: "__CITATIONS__",
};
type Info = typeof info;
/**
* **plugin-free-sort-ordered**
*
* The free sort core plugin, but the images have to be sorted by placing into ordered boxes.
*
* @author Cherrie Chang
* @see {@link /packages/plugin-free-sort-ordered/README.md}}
*/
class FreeSortOrderedPlugin implements JsPsychPlugin<Info> {
static info = info;
constructor(private jsPsych: JsPsych) {}
trial(display_element: HTMLElement, trial: TrialType<Info>) {
// data saving
var trial_data = {
data1: 99, // Make sure this type and name matches the information for data1 in the data object contained within the info const.
data2: "hello world!", // Make sure this type and name matches the information for data2 in the data object contained within the info const.
};
// end trial
this.jsPsych.finishTrial(trial_data);
}
}
export default FreeSortOrderedPlugin;

View File

@ -0,0 +1,9 @@
{
"extends": "@jspsych/config/tsconfig.contrib.json",
"compilerOptions": {
"baseUrl": ".",
"resolveJsonModule": true
},
"include": ["src"]
}