Git Product home page Git Product logo

google / paco Goto Github PK

View Code? Open in Web Editor NEW
326.0 47.0 102.0 736.73 MB

The Paco behavioral science mobile research platform

Home Page: http://www.pacoapp.com/

License: Apache License 2.0

CSS 0.36% HTML 29.73% JavaScript 7.65% Java 29.50% Shell 0.78% Ruby 0.03% Objective-C 31.55% C 0.01% PHP 0.03% Objective-C++ 0.01% GAP 0.05% XSLT 0.02% Batchfile 0.01% AMPL 0.22% Rich Text Format 0.06% AIDL 0.01%
objective-c paco javascript java health research humans

paco's Introduction

PACO is an opensource, mobile, behavorial research platform

For general information visit the home page: http://www.pacoapp.com/

To get the Android app, go to the Play Store: https://play.google.com/store/apps/details?id=com.pacoapp.paco

To get the iOS app, go to the App Store: https://itunes.apple.com/us/app/paco/id787552234?mt=8

To learn about development, check out our wiki: https://github.com/google/paco/wiki

Also, you can stay in touch

Social Media

Mailing Lists

LICENSE: Paco is licensed under the Apache 2.0 License

paco's People

Contributors

bobevans avatar brambonne avatar dhanya avatar h avatar ianspiro avatar indhumeyyappan avatar kavmuthu avatar kehollin avatar mhadjimichael avatar mpetrov avatar mrshrestha avatar patrickchapman avatar philadams-zz avatar priyald17 avatar rubackgoogle avatar tompennings avatar vravisha avatar yimingcheung avatar yzhang2018 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

paco's Issues

Make old experiment validation changes dynamic

Code from branch experimentValidation (commits 7349eb4 to fe074a3) (7 commits) already merged into newCreationFlow via develop.

Now, restructure this validation to be dynamic (where possible, done as the user passes through the field).

Includes from before: experiment title, input variable names, start date must not be after end date, list inputs must have at least one list option, email address field validation (admins and published).

New: validation of likert steps (should be a valid nonnegative number)

EDIT: New: validation of timeout (should be a valid nonnegative number)

Master Issue: #63

iOS: Crash on old account

Crash reason:

  1. one response in an experiment named 'bugs' where the experimentName field is null because it was submitted on the web form along time ago when we were just starting to do web based responses.
  2. Also, it looks like the NSDate objects on many of those events are funky with years like 1969 and 45167
  3. experimentId is null too
  4. And the server doesn't return the experimentId on the events that are retrieved

Update Experiment model to use signal groups - backend

An input group is a list of schedules and a list of inputs. Each experiment will have a list of input groups.

Involves:

  • Updating model to use input groups
  • Migrating Android database
  • Migrating server data store to use json objects

Assumptions:

  • Sane schedulers who won't overlap input group schedules
  • Android-side notifications are by input group, not by experiment (so, no problem with one triggered and one scheduled notification from each experiment being active).

iOS: enable user to modify experiment schedule

  1. user should be able to modify schedule right before they join if userEditable is set to YES. If userEditable is set to NO, then user should be disabled to modify the schedule.
  2. user should be able to modify schedule via running experiment panel
  3. for different scheduleTypes, user's ability to modify the schedule should be different
  4. schedule modified should be stored
  5. local notification should be modified accordingly
  6. userEditable should be set to YES by default, especially
  7. if the user modified the schedule before he/she joined, the modified schedule should be piggybacked inside the join event.

iOS: Schedule fix

  1. should not allow user to edit the schedule right before they join an experiment if the schedule's userEditable is set to NO
  2. if the user modified the schedule before he/she joined, the modified schedule should be piggybacked inside the join event.

Provide experiment creator an escape from validation

Add "verify" vs. "submit" options, or perhaps verify each panel as it is passed through in the flow.
Allow user to continue anyway even if there are errors.

Difficulty: some of the dynamic validation of fields will now need to be done at the beginning, as the user may re-enter the experiment creation view with invalid fields.

Master issue: #63

EDIT: This feature is two-pronged:

  1. Verify button -- indicate error to users.
  2. Save button -- if errors, alert user. However, allow them to continue if they would like.

iOS: Event payload has some issues, and different from Android event payload

  1. When joinEvent=1, Android payload has the schedule, but iOS doesn't, see the attachment.
  2. For same timeZone:
    Android: timezone = "-07:00";
    iOS: timezone = UTC;

The payload is different means we may not post the correct event payload to server.

Payload Sample:
{
appId = Android;
emptyResponse = 0;
experimentName = Compliment;
experimentVersion = 1;
idFromTimes = 1373679703000;
joinEvent = 1;
missedSignal = 0;
pacoVersion = "2.0.79";
responseTime = 1373679703000;
shared = 0;
timezone = "-07:00";
what = {
joined = true;
schedule = "type = esm,frequency = 1,esmPeriod = day,startHour = 11:00,endHour = 21:00,weekends = true,times = [16:00],repeatRate = 1,daysOfWeek = ,nthOfMonth = 1,byDayOfMonth = true,dayOfMonth = 1";
};
whatString = "schedule=type = esm,frequency = 1,esmPeriod = day,startHour = 11:00,endHour = 21:00,weekends = true,times = [16:00],repeatRate = 1,daysOfWeek = ,nthOfMonth = 1,byDayOfMonth = true,dayOfMonth = 1, joined=true";
when = 1373690451535;
who = "[email protected]";
},
{
appId = "ios_paco";
emptyResponse = 0;
experimentName = "Compliment_1372870251.119019";
idFromTimes = 1372870251000;
joinEvent = 1;
missedSignal = 0;
pacoVersion = 1;
responseTime = 1372870251000;
shared = 0;
timezone = UTC;
what = {
joined = true;
};
whatString = "joined=true";
when = 1372870251386;
who = "[email protected]";
},

Allow user to define conditional logic using arrows

User can:

  • Choose an option to add conditional logic.
  • Draw an arrow.
  • Use pulldown menus on the input to define conditional logic.
  • Click on a particular arrow to view the conditional it represents.

Statement should be reflected in panel on the input as well as by the arrows

Challenges/things to watch out for:

  • Parenthesization
  • Multiple meanings of dragging
  • Hiding the arrows
  • Error-checking the variable names

Make value change handling for experiment creation more lightweight

Currently, each text box and check box in experiment creation has its own anonymous value change handler. This could become a performance issue once there are multiple input groups. So, for classes with multiple ValueChangeHandlers (e.g. InputsPanel), let the containing class be the ValueChangeHandler.

iOS: picture size validation, submission, and storage

  1. User should be able to submit a photo
  2. When user upload a picture, we need to validate it and maybe re-size it to the right size.
  3. The photo should also be stored locally

Requirement: 1M

Android Code:
InputLayout.java : getPhotoValue()

iOS: survey should not have default answers

When the user clicks on Participate and the survey page is shown, we shouldn't set default answers for them, especially considering that the questions may be conditional.

Neaten up experiment creation visual

  1. Administer experiments view -- hide the experiment list (or make it draggable/clickable) when a user clicks on an experiment

  2. Experiment content panel should be scrollable and fixed size so its buttons don't keep moving.

  3. Better positioning for the Create Experiment and Cancel buttons, which are now just fixed at the bottom.

  4. Change wording/constants where necessary.

EDIT:

  1. Format mouse-over text for error fields.

EDIT (2):

  1. Format conditional logic panel to be clearer.

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.