info: Improve appearance of rendered profile.
[org.fsf.memberdashboard.git] / assets / js / member-info.js
1 /**
2 * FSF Member Dashboard
3 * Copyright © 2014 Free Software Foundation, Inc.
4 *
5 * This file is a part of FSF Member Dashboard.
6 *
7 * FSF Member Dashboard is free software; you can copy, modify, and
8 * distribute it under the terms of the GNU Affero General Public
9 * License Version 3, 19 November 2007 and the CiviCRM Licensing
10 * Exception.
11 *
12 * FSF Member Dashboard is distributed in the hope that it will be
13 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Affero General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with FSF Member Dashboard. If not, see
19 * <http://www.gnu.org/licenses/>.
20 */
21
22 (function($) {
23 function loadProfile(gid, success) {
24 $.get('/civicrm/profile/edit', {
25 gid: gid,
26 json: 1
27 }, success);
28 }
29
30 function renderProfile(profile) {
31 function renderFields() {
32 return _.chain(profile)
33 .values()
34 .filter(function(field) {
35 return _.isString(field.label) && _.isString(field.html);
36 })
37 .map(function (field) {
38 return $('<div class="form-item"></div>')
39 .append(field.label)
40 .append(field.html);
41 })
42 .value();
43 }
44
45 // Support older versions of jQuery that don't parse the JSON by
46 // default.
47 profile = _.isString(profile) ? JSON.parse(profile): profile;
48 var form = $('<form' + profile.attributes + '></form>');
49
50 form.append(profile.requirednote)
51 .append(profile.hidden)
52 .append.apply(form, renderFields());
53
54 $('#info-loading').remove();
55 $('#info-form').append(form);
56 }
57
58 $(document).ready(function() {
59 loadProfile(memberDashboard.profileId, renderProfile);
60 });
61 })(jQuery);