Giter Site home page Giter Site logo

inseefr / pearl-jam Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 4.0 2.11 MB

Case management web application for Computer-Assisted Personal Interviewing (CAPI)

License: MIT License

Dockerfile 0.11% HTML 0.20% JavaScript 99.46% Shell 0.17% CSS 0.06%
transverse-component

pearl-jam's People

Contributors

bwerquin avatar ddecrulle avatar dependabot[bot] avatar franckco avatar laurentc35 avatar mickaelmenet avatar nicolasturban avatar simondmz avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pearl-jam's Issues

Acceptance feedback : case sensitivity search, graphical improvment

[SUs page] search should be case insensitive
[SUs page] search should handle accented caracters
[SU page] full header should not scroll (currently : tabs bar only stay visible)
[SU page] contact information form : label and separator should remain visibles when selecting associated field
[SU page] contact outcome form : going back to first panel should keep previous contactOutcome
[SU page] contact attempt time should be editable
[SU page] contact attempt calendar selected date should be visible (currently white on white background)

cf. https://hackmd.io/g2Q_WoMrQGa5KrFhBlKQmg?view
=> only MVP items

update logo and title - minor features

New Title : 'CollecteEnquêteurs'
new favicon : Insee


features :

  • sort on 'Remaing days' column [UesPage]
  • confirmation pop-up when removing contact Attempt

Life cycle v3

Life cycle updates

What is new in v3 ?

State Enum

NVM : Not visible to management [UE non visible gestionnaire]
NNS : Not Assigned, not started [Non affecté, non commencé]
ANV : Assigned Not Visible to the interviewer [Affectée, non visible enquêteur]
VIN : Visible to the interviewer and not clickable [Visible enquêteur et non cliquable]
VIC : Visible to the interviewer and clickable [Visible enquêteur et cliquable]
PRC : Preparing contact [Prise de contact en préparation]
AOC : At least one contact made [Au moins un contact]
APS : Appointment scheduled [RDV pris (qui inclut enquête acceptée)]
INS : Interview started [Questionnaire démarré]
WFT : Waiting for transmission [UE en attente de transmission]
WFS : Waiting for synchronization [UE en attente de synchronisation]
TBR : To be reviewed [UE à relire DEM]
FIN : Finalized [UE finalisée]
QNA : Questionnaire not available to interviewer [Questionnaire non accessible enquêteur]
🆕 CLO : Closed [UE clôturée]
NVA : Not available to all [UE non visible gestionnaire]

Consequences

Questionnaire availabilty

'Questionnaire' button availability should be computed with collectionEndDate (not with previous QNA state)

Transitions to INS state

  • When receiving a queen event {type: 'UPDATE_SURVEY_UNIT' , value:'STARTED'}
  • When adding AOC state on a INS last state [[...],INS] => [[...],INS,AOC,INS]

Transitions to WFT state

  • When receiving a queen event {type: 'UPDATE_SURVEY_UNIT' , value:'COMPLETED'}
  • When adding AOC state on a WFT last state [[...],WFT] => [[...],WFT,AOC,WFT]
  • When adding a negative contact outcome

Opening questionnaire from FIN or TBR state should pop-up an alert

If survey-unit last state is FIN or TBR, the 'Questionnaire' button should open a pop-up warning concerning state changes

Forms update for data model v3

Update forms to match new data model :

  • address form : 4 -> 6 fields
  • phone form : phoneNumbers are linked to persons[x] instead of surveyUnit

UPCASE enums : phoneNumber.source and person.title => API compliency

Minor fixes :

  • detailMessage : inidividual-> Individual

update survey-unit life-cycle

Fix life-cycle management

  • update surveyUnitStateEnum
  • VIN -> VIC with date check
  • adding AOC/APS when lastState is INS/WFT shouldn't change last State
  • shouldn't delete last contact attempt

Transmission controls + notification box

Transmit button should only be enabled if survey-unit :

  • has at leat one contat attempt
  • its contact outcome is validated (reason && contactAttemptNumber>0)
  • if contact outcome is "survey accepted" => last state should be "questionnaire terminated"

Clicking on notification icon should open the notification panel (previously disabled)

WIP : Make sort and filter great again

Implement multiple & independent filter criteria :

  • filter by campaign
  • filter by sample
  • filter by city name
  • filter by 'toDo'
  • filter by priority
  • filter by search
  • filter by selectability

each criteria should propose a select list to pick value

each criteria could be removed independently from others

selectability filter should be activated by default (showing only selectable survey-units)

⚠️ UI should be awesome

offline keycloak calls crash

When in offline-mode, keycloak calls lead to network errors.

Hints :

  • is the offline checked before instanciating kc
  • switching between online/offline mode : kc instance handling

Contacts in data model

API evolution

in survey-unit : contact attributes are moved in persons (array)
phoneNumbers become object array : [{"source":string,"favorite":boolean,"number":string},{...}]

EDIT : privileged attribute (boolean) added to person

API json expected format

{
    "id": "",
    "persons" : [ 
                 {
                  "id":"id",
                  "firstName": "",
                  "lastName": "",
                  "title":"",
                  "email":"",   
                  "favoriteEmail":true,   
                  "phoneNumbers": [ {"source":"source","favorite":true,"number":"+33666666666"}, 
                                    {"source":"source","favorite":false,"number":"+336677777"}   
                                  ],
                 "privileged":true,
                  },
                  {
                  "id":"id",
                  "firstName": "",
                  "lastName": "",
                  "title":"",
                  "email":"",   
                  "favoriteEmail":true,   
                  "phoneNumbers": [ {"source":"source","favorite":true,"number":"+33666666666"}
                                  ],
                 "privileged":false,
                  }
                ],
      "address": {
            "L1": "",
            "L2": "",
            "L3": "",
            "L4": "",
            "L5": "",
            "L6": "",
            "L7": "",
        },
    "geographicalLocation": {
            "id":"",
            "label":"",
        },
    "priority": true,
    "campaign": "",
    "comments": [
        {
            "type": "managementComment",
            "value": ""
        },
        {
            "type": "interviewerComment",
            "value": ""
        }
    ],
    "sampleIdentifiers": {
        "bs": "",
        "ec":"",
        "le":"",
        "noi":"",
        "numfa":"",
        "rges":"",
        "ssech":"",
        "nolog":"",
        "nole":"",
        "autre":"",
        "nograp": ""
    },
   "states": [
		{ "id": "123", "date": "123456789", "type": "VIC" },
		{ "id": "124", "date": "12345678910", "type": "FIN" }
	], 
    "contactAttempts": [
        {
            "date": "",
            "status": ""
        },
        {
            "date": "",
            "status": ""
        },
        {
            "date": "",
            "status": ""
        }
    ],
    "contactOutcome": {
        "date": "",
        "type": "",
        "totalNumberOfContactAttempts": 0
    },

}

Contact Outcome UI fix

  • the form should should have controls before submit (valid number)
  • UI to be updated
  • control before transmit action shoul check if there is at least 1 contactAttempt

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.