Giter Site home page Giter Site logo

concord-consortium / codap Goto Github PK

View Code? Open in Web Editor NEW
90.0 23.0 37.0 199.54 MB

CODAP (Common Online Data Analysis Platform)

License: MIT License

Ruby 0.02% Makefile 0.06% JavaScript 62.81% Shell 0.44% HTML 0.15% CSS 1.27% PEG.js 0.15% TypeScript 34.36% SCSS 0.74%

codap's Introduction

CODAP

Common Online Data Analysis Platform

A Bit of History

Development of this codebase began in 2010 as part of the work of KCP Technologies' NSF-supported Data Games project. In a data game, the data generated by playing the game flows into CODAP for analysis and visualization. In a well-designed data game, the player cannot progress very far without using the data to inform and refine a strategy.

Starting in 2012 CODAP became the data analysis environment for Concord Consortium's NSF-supported InquirySpace project. Developed to promote scientific inquiry in high school science classes, students work with simulations or gather data with probes. The data flow into CODAP for analysis, facilitating hypothesis generation and iteration of experiments.

In April, 2014, CODAP received NSF funding as a project in its own right with the goal of developing a platform that can be used by developers of online curriculum materials that engage learners with data. Initial collaborations are: continuing work with InquirySpace and new work with OceanTracks at EDC and Terra Populus at the Minnesota Population Center. CODAP's success depends on the extent to which a community of developers embraces it as a way to bring dynamic, interactive data science tools to classroom (and other) learning.

What CODAP Looks Like

What CODAP looks like will depend strongly on the context. But below is a screen shot of CODAP in use with an InquirySpace investigation. The Terminal Velocity component is a simulation that is streaming data to CODAP. Note the hierarchical structure of the data in which there are five runs, each containing a time series. Note also the linked selection in which the fourth run and its time series are selected.

CODAP as it appears in InquirySpace

The License

CODAP software is provided here under an open-source MIT license. For details on this license, please see the LICENSE file included with this repository or The MIT License (MIT). CODAP was initially released under the Apache 2.0 license, and so you may see references to that license in the sources as well.


More Information

If you are interested in contributing to CODAP web app development, follow the CODAP Developer Guide.

If you are interested in creating a data interactive to be used in CODAP, follow the CODAP Data Interactive API Guide.

You can also check out the CODAP Forum for questions and discussions on the use of CODAP.

For help, send email to [email protected]

Translations

The Chinese translation was contributed by Dr. Silvia Wen-Yu Lee’s research team at National Changhua University of Education.

繁體中文部分由國立彰化師範大學李文瑜博士研究團隊翻譯完成

Translation hosting services graciously provided by POEditor.

Many thanks.

codap's People

Contributors

apeeyush avatar atambay37 avatar bacalj avatar bfinzer avatar cbradyatinquire avatar dependabot[bot] avatar dougmartin avatar eireland avatar emcelroy avatar hmorgancode avatar jsandoe avatar knowuh avatar kswenson avatar mklewandowski avatar nstclair-cc avatar p-bibs avatar pjanik avatar psndcsrv avatar rklancer avatar sfentress avatar stardust66 avatar tealefristoe avatar tejal-shah avatar thomascastleman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

codap's Issues

Documentation for Example: attribute list get is inconsistent with runtime return value

We are following the documentation in https://github.com/concord-consortium/codap/wiki/CODAP-Data-Interactive-Plugin-API#example-attribute-list-get which says:

{
  "action": "get",
  "resource": "dataContext[DataCard2].collection[Measurements].attributeList"
}

return data of this form:

{
  "success": true,
  "values": [
      "SampleDate",
      "Height",
      "Age",
      "Flavor"
  ]
}

However, in our runtime, we found the returned values was structured like so:

[
    {
        "id": 8,
        "name": "y",
        "title": "y"
    },
    {
        "id": 9,
        "name": "timeAirborne",
        "title": "timeAirborne"
    },
    {
        "id": 12,
        "name": "launchSpeed",
        "title": "launchSpeed"
    },
    {
        "id": 13,
        "name": "launchHeight",
        "title": "launchHeight"
    },
    {
        "id": 14,
        "name": "sampleNumber",
        "title": "sampleNumber"
    }
]

Tagging @bfinzer and @matthew-blackman so they are aware

How to include other games?

I'm having difficulty in adding new games to CODAP. I have downloaded sproutcore and serving CODAP locally. However, the games listed in game_selection.js like so:

    DG.GameSpec.create({
      name: "Please choose an activity!!!",
      dimensions: { width: 300, height: 20 },
      url: ''
    }),

    DG.GameSpec.create({
      name: "Cart Weight",
      dimensions: { width: 290, height: 350 },
      url: 'DataGames/JavaScriptGames/CartWeight/index.html'
    }),

    DG.GameSpec.create({
      name: "Proximity",
      dimensions: { width: 463, height: 344 },
      url: 'DataGames/JavaScriptGames/Proximity/index.html'
    }),

seem like they are being served from a remote server:
http://dg.ccssgames.com/DataGames/Games

I'd like to point to localhost to load games for development purposes. Any suggestions?

Incorrect documentation for use-url-parameters-to-modify-codaps-behavior for ?di

According to https://codap-server.concord.org/help/work-documents-create-open-save-and-share-documents/use-url-parameters-to-modify-codaps-behavior

the documentation says:

di is a URL parameter that opens CODAP with a specified plugin (or "data interactive") added to the document. To turn on inbounds, add ?di=[URL for plugin] to the URL.

The sentence that reads "to turn on inbounds, add ?di=..." seems to be a copy paste error.

create component webView ignores layout considerations

In phetsims/projectile-data-lab#233 (comment) @matthew-blackman and I wanted to create a web view programatically. We did so in a self-contained minimal reproducible example based on the NewRandomNumbers exemplar:

https://github.com/concord-consortium/codap-data-interactives/blob/master/NewRandomNumbers/random-numbers.js

We applied this patch:

Subject: [PATCH] Simplify the background gradient, and make it non-scaled, see https://github.com/phetsims/projectile-data-lab/issues/178
---
Index: NewRandomNumbers/random-numbers.js
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/NewRandomNumbers/random-numbers.js b/NewRandomNumbers/random-numbers.js
--- a/NewRandomNumbers/random-numbers.js	(revision 8a3a465487d89969b0269e317a92cb18d0a46fc8)
+++ b/NewRandomNumbers/random-numbers.js	(date 1710256056733)
@@ -224,3 +224,11 @@
   // handle errors
   console.log(msg);
 });
+
+setTimeout(()=>{
+  codapInterface.sendRequest({
+    action: 'create', resource: 'component', values: {
+      type: 'webView', name: 'projectileDataWebView', title: 'Data to Collect', URL: 'https://www.google.com'
+    }
+  });
+},5000)

And we observed that the created webView appears behind the data interactive, like so:

image

We found that web views created via Options => Display Web Page did respect other layout considerations. It was unclear what is causing the problem or how to correct or work around it.

Plot value 'mean()' example does not work.

When showing a dot plot in the Graph, the menu item "Plot Value" can accept constants, but the displayed example "Type an expression.e.g. mean()" does not work. Not sure where the bug is, but literally typing "mean()" does nothing.

Can we fix this to a working example? What would that be?

View Web Page requires "http://..."

In the gear menu, 'View Web Page' requires "http://...", yet as users we are used to leaving that out. It would be good to either auto-fill this, or show an example that uses "http://" so we can figure it out.

A few random Data Interactive API issues and questions (both docs and implementation)

Initial message sent to Data Interactive {message: 'codap-present'} is not documented. It seems pretty useful, though. Other thing is that it doesn't really follow {action: ..., reseource: ..., value: ...} format, but it doesn't seem to matter.

Also, I've noticed that new API docs: https://github.com/concord-consortium/codap/wiki/CODAP-Data-Interactive-Plugin-API mention codap-game identifier instead of data-interactive (just in one spot). I'm assuming that this identifier is used to decide whether API v1 or v2 will be used.

I'm working on Lab upgrade (CODAP API v1 => v2), so I'm looking at these docs now. I can use this thread to add more feedback if I find anything interesting or worth fixing.

Bug when npm run test

Hi, I'm trying to build a codap application on my server.
According to the instruction, after run "npm start", I got output like this. But the web page didn't work successfully.

> [email protected] start /home/codap
> npm run codap
> [email protected] codap /home/codap
> sproutcore server --allow-from-ips='*.*.*.*'
SproutCore v1.11.0 Development Server
Allowing access only from IPs: *.*.*.*. Use --allow-from-ips='*.*.*.*' to allow all
Starting server at http://0.0.0.0:4020 in debug mode
To quit sc-server, press Control-C
Thin web server (v1.7.2 codename Bachmanity)
Maximum connections set to 1024
Listening on localhost:4020, CTRL+C to stop

Then I runned "http-server -p 4020", port 4020 can be accessed normally, indicating that it should not be a problem with the network environment. After that, I runned "npm run test", got the following information:

TypeError: undefined is not a function (evaluating 'Object.assign')

  http://localhost:4020/static/dg/en/current/source/core.js?1651823312:116
ReferenceError: Can't find variable: DG

  http://localhost:4020/static/dg/en/current/source/alpha/archive_utils.js?1651823312:30 in global code
ReferenceError: Can't find variable: DG

  http://localhost:4020/static/dg/en/current/source/alpha/browser.js?1651823312:23 in global code
ReferenceError: Can't find variable: DG
……(seems that all the tests got the same error: ReferenceError: Can't find variable: DG)
ReferenceError: Can't find variable: DG

  http://localhost:4020/dg/en/current/tests.html:1880
ReferenceError: Can't find variable: DG

  http://localhost:4020/dg/en/current/tests.html:2540
http://localhost:4020/dg/en/current/tests.html Status:success
status returned is passed: true
All tests passed! 

I don't know how to fix this and get the site to start properly. But it doesn't seem to be a problem with the configuration of the environment, but rather a procedural problem. Hope we can get your help. Thanks a lot!

unhelpful caching of old flash games

When a new version of a flash game has been released, many DG users don't see it because their browser has a cached version of the old game. This does not happen for the javascript games. Can we come up with a method for automatic discarding of the old cache, without discarding caching entirely?

Perhaps like this?
http://willperone.net/Code/as3nocache.php

The method of clearing the cache in the various browsers is inconsistent, and takes multiple steps, so the work around of "just clear your cache" is unsatisfying. But eventually the cache will expire, right? Not sure about the current browser behavior.

Sata sort transfering to graphs

When a sort is applied to a data table, the scatterplot is not updated. This can be seen by looking at the connected line of a scatter plot before and after the horizontal values are sorted. The graphs are updated when a variable is re-dragged to the graph, though I have not tested the nuances of this.

Request: contributor docs

Hi there 👋

Prospective open source contributor here.

I'd love to learn more about how to contribute.

I work with web-based data visualization tooling for lidar, camera, and radar sensor data, and would love to know how to contribute in the future if there's ever a chance to bring some of my work into the open source educational space.

I'm hoping to find out more about how to build components or community plugins that can interface with CODAP's state management.

Some ideal examples might show:

  • how to load a 3D point cloud (it could be as simple as a spreadsheet of XYZ coordinates) into CODAP's state via the UI, where the associated state management code lives inside of the codebase, and then how to hook into the particular state context reactively inside of a new component
  • how to build a simple plugin or component that can load a set of 3D coords into CODAP's reactive state
  • what to consider if I intend to load a full lidar point cloud (1M points in 3D) into app state
  • how to load image data into CODAP in a similar fashion

Other helpful/alternative lines of inquiry to these ends might:

  • show the ideal entry point for building adapters for bridging external atomic state management libraries (like JotaiJS and NanostoresJS) with CODAP's MobX internals

Any help or insight is appreciated, thanks so much!

Request: heatmap

I'm working on a statistics project, and it's hard to see a correlation between quantitative data when the data is very discreet (because multiple points overlap).
I request that the datapoints have some sort of color value that they more closely resemble if they are closer together.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.