# FaceMashup: An End-User Development Tool for Social Network Data +
## 5 End User Development Support
### Data and Actions  
In FaceMashup, an SNA can be defined composing a set of predefined widgets. Each widget represents a block for building the entire application. A widget retrieves data from the Facebook graph, or it performs a specific action, e.g., creating or deleting such data. In addition, a widget can be used for requesting simple direct inputs (e.g., a text or a number) to the SNA user. Therefore, we group the FaceMashup widgets into three categories: _Content_, _Action_ or _Input_ widgets. It is possible to drag new widgets into the FaceMashup environment selecting them from a tool bar positioned on the left-part of the environment UI (visible in Figure 2). If a widget is not needed anymore, it can be closed through the X button in the top-right corner. The content and the input widget manipulate data but do not modify it, which is the task of the action widgets. FaceMashup highlights such differences through the widget background color: Blue for those that do not modify data, green for action widgets. It is worth pointing out that the data access and execution of the different actions is constrained by the Facebook Graph API privacy policies. Therefore, each access or action may have different effects according to the user who executes the SNA. We elaborate more on this aspect in Section 6. Content widgets are user-friendly representation of the Facebook graph data types. In FaceMashup, it is possible to insert the following content widgets:  
* _Login_. It allows for executing the different actions and retrieve the data on behalf of a specific Facebook user, who accesses the SNA through his/her credentials on the social network. Once authenticated, the widget allows to access the authenticated profile information. * _Photo_. It allows for retrieving the photos uploaded by a specific user or list of users. * _Post_. It retrieves the posts created by a specific user or list of users. * _Video_. It retrieves the videos created by a specific user or list of users. * _Friend List_. It retrieves the friend list of a specific user or list of users. * _Profile Information_. It retrieves the profile information of a specific user or list of users. * _Like list_. It retrieves the contents that a group of users (or a single user) like(s). Each widget contains either a single content or a list of objects sharing the same data type, depending on both the actual value of a widget input parameter (e.g., the owner profile for a photo widget) and a set of filter values that can be specified by the user. We elaborate more on this aspect in the next section. According to P2, we maintained a representation which is similar to the corresponding one in the Facebook UI. For instance, Figure 2(a) contains a photo widget that, besides the obvious preview of the photo, contains the information about its author, the location, the list of people who liked the photo _etc._ as happens in the Facebook application UI. In case the widget contains more than one photo, the user can browse between them using the arrows at each side of the widget box. Figure 2(b) shows the friend list photo, which is again inspired to the representation of the friend list in the Facebook UI. For each friend, the widget shows the profile picture, his name and surname. The second type of widget we included in FaceMashup is the _Input_, which collects data inserted directly by the user of the SNA. Input widgets can be used for filtering and/or define the application flow as happens for the data retrieved by the Facebook graph. FaceMashup provides the following input widgets:  
* _Text_. It allows for inserting a small text, through a textfield. * _Number_. It allows for inserting a numeric value, through a textfield that accepts only numeric input. * _URL_. It allows for inserting a link to a web resource, showing a small preview of the linked content. * _Date_. It allows for inserting a date, picking a day from a calendar. * _Place_. It allows for specifying a location or a point of interest, searching it by name and/or picking it from a map view.