Great game of Turkey: Difference between revisions

From Opasnet
Jump to navigation Jump to search
(codes reorganised on page)
(known bugs fixed but not tested)
Line 2: Line 2:


'''Make today's decision
'''Make today's decision
First, see the question.
First, see the issue and possible actions.


<rcode label="See the question of the day" embed=1>
<rcode label="See the issue of the day" embed=1>
# This code is Op_en7421# on page [[Great game of Turkey]]
# This code is Op_en7421# on page [[Great game of Turkey]]


Line 11: Line 11:
objects.latest("Op_en7421", code_name = "initiate")
objects.latest("Op_en7421", code_name = "initiate")


iss <- EvalOutput(issueofday)
temp <- EvalOutput(issueofday)
iss <- iss[iss$Date == as.character(Sys.Date()) , ]
temp <- temp[temp$Date == as.character(Sys.Date()) , ]


cat(
cat(
"Issue #",  
"Issue #",  
iss$Issueid,  
temp$Issueid,  
":",  
":",  
as.character(iss$Issue),  
as.character(temp$Issue),  
"\n",  
"\n",  
as.character(iss$Issuedescription),  
as.character(temp$Issuedescription),  
"\n"
"\n"
)
)


oprint(issueofday[ , colnames(issueofday@output) %in% c("Actionid", "Action", "Actiondescription")])
oprint(temp[ , colnames(temp@output) %in% c("Actionid", "Action", "Actiondescription")])
</rcode>
</rcode>


Line 30: Line 30:


<rcode name="choices" label="Choose policy" embed=1 variables="
<rcode name="choices" label="Choose policy" embed=1 variables="
name:option|description:Check above the question of the day and decide which option you would choose.|type:selection|options:
name:option|description:Check above the issue of the day and decide which option you would choose.|type:selection|options:
1;Option 1;
1;Option 1;
2;Option 2
2;Option 2
">
">
# This is code Op_en7421/choices on page [[Great game of Turkey]]
# This is code Op_en7421/choices on page [[Great game of Turkey]]
# Parameters used:
## option: numeric (1 or 2)


library(OpasnetUtils)
library(OpasnetUtils)
Line 71: Line 73:
* it characterises happiness of citizen groups of the decisions,
* it characterises happiness of citizen groups of the decisions,
* it characterises progress of important societal values,
* it characterises progress of important societal values,
* it enables crowdsourcing the actual questions and options asked?
* it enables crowdsourcing the actual issues and actions asked?


== Answer ==
== Answer ==
Line 94: Line 96:
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Turn text and adjust to right
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Turn text and adjust to right


happmean <- oapply(happindex, cols = c("Date", "Question", "Option"), FUN = mean)
happmean <- oapply(happindex, cols = c("Date", "Issue", "Action"), FUN = mean)
happequity <- oapply(happmean, cols = "Group", FUN = sd)
happequity <- oapply(happmean, cols = "Group", FUN = sd)


Line 100: Line 102:
oggplot(mergeusers(happequity), x = "User") + labs(title = "Deviation from the equity")
oggplot(mergeusers(happequity), x = "User") + labs(title = "Deviation from the equity")


progindex <- EvalOutput(progindex)
valindex <- EvalOutput(valindex)
oggplot(progindex, x = "Date", fill = "Issue") + facet_wrap(~ User)+ labs(title = "Progress per day") +
oggplot(valindex, x = "Date", fill = "Issue") + facet_wrap(~ User)+ labs(title = "Values per day") +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Turn text and adjust to right
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Turn text and adjust to right


progmean <- oapply(progindex, cols = c("Date", "Question", "Option"), FUN = mean)
valmean <- oapply(valindex, cols = c("Date", "Issue", "Action"), FUN = mean)
progequity <- oapply(progmean, cols = "Issue", FUN = sd)
valequity <- oapply(valmean, cols = "Issue", FUN = sd)


oggplot(mergeusers(progmean), x = "User", fill = "Issue") + labs(title = "Mean progress over time")
oggplot(mergeusers(valmean), x = "User", fill = "Issue") + labs(title = "Mean values over time")
oggplot(mergeusers(progequity), x = "User") + labs(title = "Deviation from the policy balance")
oggplot(mergeusers(progequity), x = "User") + labs(title = "Deviation from the policy balance")


Line 126: Line 128:
">
">
# This is code Op_en7421/choices on page [[Great game of Turkey]]
# This is code Op_en7421/choices on page [[Great game of Turkey]]
# Paramters:
## group: selection (text string)


library(OpasnetUtils)
library(OpasnetUtils)
Line 176: Line 180:
=== Suggest issues and actions ===
=== Suggest issues and actions ===


<rcode label="See all actions" embed=1>
<rcode label="See all actions" embed=1 variables="
name:date|description:Issues and actions for which day?|type:date|
name:all|description:Do you want to see a single day or all?|type:selection|
options:FALSE;Show only the selected day;TRUE;Show all days|default:FALSE
">
# This code is Op_en7421# on page [[Great game of Turkey]]
# This code is Op_en7421# on page [[Great game of Turkey]]
# Parameters:
## date: date type
## all: logical (if TRUE, show all days)


library(OpasnetUtils)
library(OpasnetUtils)
Line 183: Line 194:
objects.latest("Op_en7421", code_name = "initiate")
objects.latest("Op_en7421", code_name = "initiate")


allactions <- EvalOutput(allactions)
temp <- EvalOutput(allactions)
if(all) temp <- allactions[allactions$Date == as.character(date) , ]


cat("All issues and actions\n")
for(i in sort(unique(paste(temp$Date, temp$Issueid)))) {
oprint(allactions)
  temp2 <- temp[paste(temp$Date, temp$Issueid) == i , ]
  cat(
    as.character(temp$Date[1]),
    "Issue",
    as.character(temp2$Issueid[1]),
    ":",
    as.character(temp2$Issue[1]),
    "\n",
    as.character(temp2$Issuedescription[1]),
    "\n"
  )
  oprint(temp2[ , c("Action", "Actiondescription", "Actionid")])
}


</rcode>
</rcode>
Line 198: Line 222:
">
">
# This is code Op_en7421/ on page [[Great game of Turkey]]
# This is code Op_en7421/ on page [[Great game of Turkey]]
# Parameters:
## date: date type. Default: today
## issue: textbox (text string)
## description: textbox(text string)


library(OpasnetUtils)
library(OpasnetUtils)


bonus <- 1
bonus <- EvalOutput(bonuses)
bonus <- result(bonus)[bonus$User == wiki_username , ]


dat <- data.frame(
dat <- data.frame(
Line 252: Line 281:


<rcode label="Suggest action" embed=1 variables="
<rcode label="Suggest action" embed=1 variables="
name:issue|description:What is the number of the issue (from See all actions)?|type:default|
name:issue|description:What is the Issueid of the issue (from See all actions)?|type:default|
name:action|description:What is the action you suggest? (briefly)|type:textbox|
name:action|description:What is the action you suggest to this issue? (briefly)|type:textbox|
name:description|description:Give a more detailed description.|type:textbox
name:description|description:Give a more detailed description.|type:textbox
">
">
# This is code Op_en7421/ on page [[Great game of Turkey]]
# This is code Op_en7421/ on page [[Great game of Turkey]]
# Parameters:
## issue: numeric (Issueid)
## action: textbox (text string)
## description: textbox (text string)


library(OpasnetUtils)
library(OpasnetUtils)


bonus <- 1
bonus <- EvalOutput(bonuses)
bonus <- result(bonus)[bonus$User == wiki_username , ]


objects.latest("Op_en7421", code_name = "initiate")
objects.latest("Op_en7421", code_name = "initiate")


iss <- EvalOutput(allactions)
temp <- EvalOutput(allactions)
iss <- iss[iss$Date == as.character(Sys.Date()) , ] # If only today's issues are used.
temp <- temp[temp$Issueid == issue , ]  


#if(!issue %in% issueofday$Issueid) stop("Issue not found")
#if(!issue %in% issueofday$Issueid) stop("Issue not found")


dat <- data.frame(
dat <- data.frame(
Date = as.character(Sys.Date()),
Issue = temp$Issue,
Issue = iss$Issue[iss$Issueid == issue],
Action = action,
Action = action,
Description = description,
Description = description,
Line 293: Line 326:


dat <- data.frame(
dat <- data.frame(
Date = as.character(Sys.Date()),
Issue = temp$Issue,
Issue = iss$Issue[iss$Issueid == issue],
Action = action,
Action = action,
User = wiki_username,  
User = wiki_username,  
Line 324: Line 356:


<rcode label="Vote for an issue" embed=1 variables="
<rcode label="Vote for an issue" embed=1 variables="
name:issue|description:What is the number of issue (decision) that should be played?|type:default
name:issue|description:What is the Issueid of the of issue (decision) that should be played?|type:default
">
">
# This is code Op_en7421/ on page [[Great game of Turkey]]
# This is code Op_en7421/ on page [[Great game of Turkey]]
# Paramters:
## issue: numeric (Issueid)


library(OpasnetUtils)
library(OpasnetUtils)


bonus <- 1
bonus <- EvalOutput(bonuses)
bonus <- result(bonus)[bonus$User == wiki_username , ]


objects.latest("Op_en7421", code_name = "initiate")
objects.latest("Op_en7421", code_name = "initiate")
Line 363: Line 398:


<rcode label="Vote for an action" embed=1 variables="
<rcode label="Vote for an action" embed=1 variables="
name:action|description:What is the number of the action you vote for?|type:default
name:action|description:What is the Actionid of the action you vote for?|type:default
">
">
# This is code Op_en7421/ on page [[Great game of Turkey]]
# This is code Op_en7421/ on page [[Great game of Turkey]]
# Parameters:
## action: numeric (Actionid)


library(OpasnetUtils)
library(OpasnetUtils)


bonus <- 1
bonus <- EvalOutput(bonuses)
bonus <- result(bonus)[bonus$User == wiki_username , ]


objects.latest("Op_en7421", code_name = "initiate")
objects.latest("Op_en7421", code_name = "initiate")
Line 407: Line 445:
|
|
<rcode name="happiness" label="Save your happiness score" embed=1 variables="
<rcode name="happiness" label="Save your happiness score" embed=1 variables="
name:action|description:Give the action ID for the action you want to score (from code 'See actions')|type:default|
name:action|description:Give the Actionid for the action you want to score (from code 'See actions')|type:default|
name:hscore|description:How much happiness would this option bring to this group?|type:selection|options:
name:hscore|description:How much happiness would this option bring to this group?|type:selection|options:
NA;- choose score -;2;+2;1;+1;0;0;-1;-1;-2;-2|default:NA
NA;- choose score -;2;+2;1;+1;0;0;-1;-1;-2;-2|default:NA
">
">
# This is code Op_en7421/happiness on page [[Great game of Turkey]]
# This is code Op_en7421/happiness on page [[Great game of Turkey]]
# Parameters:
## action: numeric (Actionid)
## hscore: numeric (integer from -2 to 2)


library(OpasnetUtils)
library(OpasnetUtils)
Line 417: Line 458:
objects.latest("Op_en7421", code_name = "initiate")
objects.latest("Op_en7421", code_name = "initiate")


ques <- question()
temp <- EvalOutput(allactions)
 
temp <- temp[temp$Actionid == action , ]
cat(as.character(ques$Question[1]), "\n")
cat(as.character(temp$Issue), ":", as.character(temp$Action, "\n")
 
oprint(ques["Option"])


user <- EvalOutput(user)
user <- EvalOutput(user)
user <- user[user@output$User == wiki_username , ]
user1 <- user[user@output$User == wiki_username , ]


dat <- data.frame(
dat <- data.frame(
Date = ques$Date,
Issue = temp$Issue,
Issue = ques$Issue,
Action = temp$Action,
Action = ques$Action,
Group = user1$Group,
Group = user$Group,
User = user1$User,  
User = user$User,  
Hscore = hscore, # Happiness score
Hscore = hscore, # Happiness score
Result = as.numeric(Sys.time())
Result = as.numeric(Sys.time())
Line 441: Line 479:
name = "Great game of Turkey",  
name = "Great game of Turkey",  
subset = "Happiness",  
subset = "Happiness",  
act_type = "replace",  
act_type = "append",  
language = "eng",  
language = "eng",  
who = wiki_username
who = wiki_username
Line 454: Line 492:


<rcode name="value" label="Save your value score" embed=1 variables="
<rcode name="value" label="Save your value score" embed=1 variables="
name:action|description:What is the id of the action (from All actions)|type:default|
name:action|description:What is the Actionid of the action (from All actions)?|type:default|
name:value|description:Select an objective to evaluate|type:selection|options:
name:value|description:Select an objective to evaluate|type:selection|options:
'Civil Rights';Civil Rights;
'Civil Rights';Civil Rights;
Line 461: Line 499:
'National Values';National Values;
'National Values';National Values;
'Democracy';Democracy|
'Democracy';Democracy|
name:pscore|description:How much value would this action bring?|type:selection|options:
name:vscore|description:How much value would this action bring?|type:selection|options:
NA;- choose score -;2;+2;1;+1;0;0;-1;-1;-2;-2|default:NA
NA;- choose score -;2;+2;1;+1;0;0;-1;-1;-2;-2|default:NA
">
">
# This is code Op_en7421/value on page [[Great game of Turkey]]
# This is code Op_en7421/value on page [[Great game of Turkey]]
# Parameters:
## action: numeric (Actionid)
## value: selection (text string)
## vscore: numeric (integer from -2 to 2)


library(OpasnetUtils)
library(OpasnetUtils)
Line 470: Line 512:
objects.latest("Op_en7421", code_name = "initiate")
objects.latest("Op_en7421", code_name = "initiate")


iss <- EvalOutput(allactions)
temp <- EvalOutput(allactions)
iss <- iss[iss$Issueid == action , ]
temp <- temp[temp$Actionid == action , ]


oprint(iss)
cat(as.character(temp$Issue), ":", as.character(temp$Action, "\n")


dat <- data.frame(
dat <- data.frame(
Date = iss$Date,
Date = temp$Date,
Issue = iss$Issue,
Issue = temp$Issue,
Action = iss$Action,
Action = temp$Action,
Value = value,
Value = value,
User = wiki_username,  
User = wiki_username,  
Vscore = bonus,
Vscore = vscore,
Result = as.numeric(Sys.time())
Result = as.numeric(Sys.time())
)
)


if(!is.na(pscore)) {
if(!is.na(vscore)) {
opbase.upload(
opbase.upload(
dat,  
dat,  
ident = "Op_en7421",  
ident = "Op_en7421",  
name = "Great game of Turkey",  
name = "Great game of Turkey",  
subset = "Progress",  
subset = "Values",  
act_type = "replace",  
act_type = "append",  
language = "eng",  
language = "eng",  
who = wiki_username
who = wiki_username
Line 504: Line 546:


== Rationale ==
== Rationale ==
<t2b name="Progress" index="Description" obs="Option" unit="-">
|
</t2b>


=== Calculations ===
=== Calculations ===
Line 515: Line 553:
name:dat|description:Insert data as table|type:table
name:dat|description:Insert data as table|type:table
">
">
#This is code Op_n7421/ on page [[Great game of Turkey]]
# Parameters:
## subset: text (name of the Opasnet Base table)
## dat: table (automatically onverts to data.frame. Must have the structure of the database table)
library(OpasnetUtils)
library(OpasnetUtils)


colnames(dat) <- t(dat)[ , 1]
colnames(dat) <- as.matrix(dat)[1 , ]
dat <- dat[2:nrow(dat) , ]
dat <- dat[2:nrow(dat) , ]
oprint(dat)
oprint(dat)
Line 526: Line 569:
name = "Great game of Turkey",  
name = "Great game of Turkey",  
subset = subset,  
subset = subset,  
act_type = "replace",  
act_type = "append",  
language = "eng",  
language = "eng",  
who = wiki_username
who = wiki_username
Line 543: Line 586:
   dependencies = data.frame(Name = "allactions"),
   dependencies = data.frame(Name = "allactions"),
   formula = function(...) {
   formula = function(...) {
 
   
     for(i in unique(allactions$Date)) {
     for(i in unique(allactions$Date)) {
       test <- allactions[allactions$Date == i , ]
       test <- allactions[allactions$Date == i , ]
       test <- test[order(-test$issuevoteResult) , ][1 , ] # Choose the 1 row with most votes
       test <- test[order(-test$issuevoteResult) , c("Date", "Issue")][1 , ] # Choose the 1 row with most votes
       if(exists("issday")) issday <- combine(issday, test) else issday <- test
       if(exists("issday")) issday <- combine(issday, test) else issday <- test
     }
     }
 
   
     for(i in unique(allactions$Issueid)) {
     for(i in unique(allactions$Issueid)) {
       test <- allactions[allactions$Issueid == i , ]
       test <- allactions[allactions$Issueid == i , ]
Line 658: Line 701:
   dependencies = data.frame(Name = c("dummy")),
   dependencies = data.frame(Name = c("dummy")),
   formula = function(...) {
   formula = function(...) {
     return(uniques("Bonuses"))
     dat <- opbase.data("Op_en7421", subset = "Bonuses")
    dat$Bonus <- as.numeric(as.character(dat$Bonus))
    dat <- aggregate(dat["Bonus"], by = dat["User"], FUN = sum)
    colnames(dat)[colnames(dat) == "Bonus"] <- "Result"
    return(dat)
   }
   }
)
)
Line 671: Line 718:
mergeusers <- function(happ) {
mergeusers <- function(happ) {
   if(length(happ$User) != length(happ$User[happ$User == wiki_username])) {
   if(length(happ$User) != length(happ$User[happ$User == wiki_username])) {
     test1 <- happ[happ$User == wiki_username , ]
     happ$User <- ifelse(happ$User == wiki_username, "You", "Crowd")
    test1$User <- "You"
    test2 <- happ
    test2$User <- "Crowd"
    happ <- combine(test1, test2)
   }
   }
   return(happ)
   return(out)
}
}


Line 689: Line 732:


     happindex <- oapply(happiness, cols = "User", FUN = mean)
     happindex <- oapply(happiness, cols = "User", FUN = mean)
     happindex <- mergeusers(decisions) * happiness * issues
     deci <- mergeusers(decision)
    deci <- oapply(deci, cols = "User", FUN = length)
# KESKENERÄINEN TEE MUUT ENSIN
    for(i in unique(allactions$Date)) {
      test <- allactions[allactions$Date == i , ]
      test <- test[order(-test$issuevoteResult) , c("Date", "Issue")][1 , ] # Choose the 1 row with most votes
      if(exists("issday")) issday <- combine(issday, test) else issday <- test
    }
   
    happindex <- deci * happindex * issues
     return(happindex)
     return(happindex)
   }
   }
)
)


valueindex <- Ovariable("valueindex",  
valindex <- Ovariable("valindex",  
  dependencies = data.frame(Name = c(
  dependencies = data.frame(Name = c(
   "values",
   "values",
Line 702: Line 754:
  formula = function(...) {
  formula = function(...) {


   valueindex <- oapply(values, cols = "User", FUN = mean)
   valindex <- oapply(values, cols = "User", FUN = mean)
  valueindex <- mergeusers(decisions) * valueindex * issues
#KESKEN ks. happindex
   return(valueindex)
    deci <- mergeusers(decisions)
  valueindex <- deci * valueindex * issues
   return(valindex)
  }
  }
)
)

Revision as of 12:36, 14 February 2016


Make today's decision First, see the issue and possible actions.

+ Show code

Then, make the decision about today's issue.

Check above the issue of the day and decide which option you would choose.:

+ Show code

Question

What is a good game to crowdsource citizen priorities about daily political decisions in such a way that

  • it can be done using a mobile app,
  • it characterises happiness of citizen groups of the decisions,
  • it characterises progress of important societal values,
  • it enables crowdsourcing the actual issues and actions asked?

Answer

Game results

See the top of the page for the main questionnaire of the game. Here we present results from the game.

+ Show code

Setup profile

Setup your profile. Do this before you start. You may change your preferences later.

Into which group do you identify most? (You only need to choose once):

+ Show code

Suggest issues and actions

Issues and actions for which day?:
..

Do you want to see a single day or all?:

+ Show code

When should this issue be played?:
..

What is the issue (decision) that should be played? (briefly):

Give a more detailed description.:

+ Show code

What is the Issueid of the issue (from See all actions)?:

What is the action you suggest to this issue? (briefly):

Give a more detailed description.:

+ Show code

Vote for issues and actions

What is the Issueid of the of issue (decision) that should be played?:

+ Show code

What is the Actionid of the action you vote for?:

+ Show code

Evaluate happiness and values

Give the Actionid for the action you want to score (from code 'See actions'):

How much happiness would this option bring to this group?:

+ Show code

What is the Actionid of the action (from All actions)?:

Select an objective to evaluate:

How much value would this action bring?:

+ Show code

Rationale

Calculations

What is the database table?:

Insert data as table:

Cancel

+ Show code


+ Show code

Structure and functionalities

Data structure of the great game. Each blue box is a data table. Arrows show the information flows. Happiness and value performances are calculated based on decisions and scores estimated by the players (or researchers?). Upload data and select newest are generic functions needed to operate with the data.

The content of and use of the data tables is the following:

  • Issues: List of decisions to be made. A user can suggest only one issue per day. For each day, the most popular issue is taken to the game.
  • Actions: List of decision options to be made. A user can suggest only one action per issue. For each time point, two most popular actions are taken to the game. However, the actions in the game may change during the day, if the rank of the issues changes.
  • Issue vote: List of votes for each issue. Each user can cast a single vote either for or against an issue. The number of votes a user has equals their bonuses.
  • Action vote: List of votes for each action under issues. The voting system is the same as for issues.
  • Decisions: List of decisions each user makes from the actions and issues on the game.
  • Bonuses: List of bonuses the users have earned during the game. In the beginning, each user has 1 bonus. You can earn bonuses if your actions suggestions gets to be played (+1) or if your issues gets to be played (+5). Every time a user makes a decision, they get +0.1 bonus.
  • Happiness: Users' opinions about how much happiness an action brings to their own group.
  • Values: Users' opinions about how much value an action brings to a selected group.
  • Users: List of users' groups (i.e. to which group each user identifies themselves).

The functions needed are the following.

  • Upload data: Take the data provided by the user or calculated. Add automatic fields, e.g. ts, user and date. Upload data to the respective table.
  • Create ovariable: Download data from a table. From the data, find the unique rows with a given condition (e.g. discard previous decisions made by a user previously on the same day). Then create an ovariable with the structure needed.
  • Firstuser: Check's whether user's wiki_username is found from Bonuses. If not, it is added there and 1 bonus given.

The interface codes used are the following:

  • Suggest issues: Ask date, issue and description from user. Date means the date when this issue will be played. Default is today, but user can change that and suggest future issues. Timestamp (ts) come automatically. User is the wiki_username. Upload data to Issues table. No need to check previous entries. Upload user's bonus to Issue vote as number of votes.
  • Show issues: Ask date (today by default) and show all issues and each one's actions listed from the most to least popular. This is necessary for suggesting actions.
  • Show today's issue: Ask nothing. Show today's top-ranked issue and its two top-ranked actions. [Calculate the sum of results over all users. Show these popularity sums as the result of object popularity? Select the most popular row among a group defined by an index; use oapply to integrate over the index using which.max and pick that row only. Should this be a function or ovariable?]
  • Suggest actions: Ask date, issue, action and description from user. Date is today by default. Ts and user come as previously. If the date-issue pair does not exist in Issues table, give error message. Upload data to Actions and user's bonus to Action vote.
  • Vote for issue: Ask the rank number of the issue as a number. The user can check the numbers with Show issues. Date, user, and ts come automatically. Do firstuser. Votes is the number of user's bonuses and comes from Bonuses. Upload data to Issue vote. Store information about the rank before voting somewhere (as an ovariable or a technical data table?). If the information has changed from the last time, give bonus to the user whose information is now on the top.
  • Vote for action: Similar to vote for issue, except that the action number is asked and data is uploaded to Action vote.
  • Make decision: Ask the action from the two top choices of the most popular issue using a drop-down list. The options can be seen with show today's issue. Upload data to Decisions. However, if an issue was the most popular at some point during the day, it is still kept in the issue list. ----#: . Is it? How? --Jouni (talk) 17:21, 7 February 2016 (UTC) (type: truth; paradigms: science: comment)
  • Evaluate happiness: Ask date (today is the default), action number from show issues for that date, and hscore for happiness score in the user's own group. Ts, user as previously. Check if user has a group in Users and if not, give an error message to sign up to a group first. Upload data to Happiness.
  • Evaluate values: As evaluate happiness, except that unlike group, the value is asked from the user and nothing is checked. Upload data to Values.
  • Manage profile: Ask the group to which user identifies themselves. Take user and ts as previously. Add data to Users.
  • Show results: This code is divided into several parts:
    • Show happiness performance: Ask nothing. From Decisions, take the action of each day; do this separately for You, the user's own decisions, and Crowd, i.e. the most popular action of each day. Combine that with the happiness scores from Happiness. Show cumulative happiness across time for both decision makers.
    • Show value performance: Similar to show happiness performance, but for values from Values. It is imprtant to notice that value scores for each action are only partly a matter of opinion and partly a matter of research. Therefore, ideas should be developed how this research is gathered and used.
    • Show situation': Show the situation of the current issue: the issue and description, and the two actions and their votes.
    • Show all issues: Show all issues and actions and their votes for today.


Important categories
Groups for Turkey Value categories
  • Nationalists
  • Conservatives
  • Minorities
  • Liberals
  • Kemalists
  • Civil Rights
  • Women's Rights
  • Religion
  • National Values
  • Democracy

See also


Keywords

References


Related files