• forked:【埼玉県知事選版】ワードクラウドで見るマニフェスト
Import an externally hosted application
Check style

  • JavaScript
  • CSS
  • HTML
  • Images
  • Input Data
  • ReadMe
  • forked:【埼玉県知事選版】ワードクラウドで見るマニフェスト
  • jquery-1.11.2.min.js  
  • http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js  
  • d3.v3.min.js  
  • d3.layout.cloud.js  
  •  
  • history

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
 
DrawWordCloud = {};
DrawWordCloud.propList = ["政治家を志した理由", "地域のありたい姿", "解決したい課題"];
DrawWordCloud.keyProp = "政治家名";
DrawWordCloud.areaProp = "対象の市区町村または都道府県";
DrawWordCloud.area = "埼玉県";
DrawWordCloud.sourceURL = "http://www.maniken.jp/id#";
DrawWordCloud.manifestURL = "http://manifestoswitchsaitama.strikingly.com/";
DrawWordCloud.subList = [];
DrawWordCloud.workID = "";
DrawWordCloud.fileName = "";
 
$(function(){
    DrawWordCloud.loadInputData();
 
    $("#generate").click(function() {
        var sub = "";
        var propList = [];
        $("#wordcrowd, #original").empty();
        if ($('#subjects').val() != "all") {
            sub = $('#subjects').val();
        }
        $('.property:checked').each(function(){
            propList.push($(this).val());
        });
        var str = DrawWordCloud.getData(DrawWordCloud.workID, DrawWordCloud.fileName, sub, propList);
        DrawWordCloud.analyze(str);
    });
});
 
DrawWordCloud.loadInputData = function() {
    var pList=[];
    $.each(LinkData.getWorks(), function(workKey, workValue) {
        DrawWordCloud.workID = workValue;
        var workURl = "http://linkdata.org/work/" + workValue;
        var keyPropURI = "http://linkdata.org/property/" + workValue + "#" +encodeURIComponent(DrawWordCloud.keyProp);
        var areaPropURI = "http://linkdata.org/property/" + workValue + "#" +encodeURIComponent(DrawWordCloud.areaProp);
        $.each(LinkData.getFiles(workValue), function(fileKey, fileValue) {
            DrawWordCloud.fileName = fileValue;
            $.each(LinkData.getSubjects(workValue, fileValue), function(subjKey, subjValue) {
                $.each( LinkData.getTriplesBySubject(workValue, fileValue, subjValue), function( tripleKey, tripleValue ) {
                    if ( tripleValue.property == keyPropURI &&
                            LinkData.getObjects(workValue , fileValue , subjValue , areaPropURI) == DrawWordCloud.area) {
                        var subMap = {uri:subjValue, label:tripleValue.object};
                        DrawWordCloud.subList.push(subMap);
                    }
                });
            });
        });
    });
    $.each(LinkData.getProperties(DrawWordCloud.workID, DrawWordCloud.fileName), function(propKey, propValue){
        pList.push(propValue);
    });
    DrawWordCloud.initPreference(DrawWordCloud.subList, pList);
};
 
DrawWordCloud.initPreference = function(sList, pList){
    // サブジェクトのセレクトボックス初期化
    $.each(sList, function(subKey, subValue) {
        var $option = "<option value=\"" + subValue.uri + "\">"+ subValue.label +"</option>";
        $("#subjects").append($option);
    });
    // プロパティのチェックボックス初期化
    $.each(pList, function(index, propURI) {
        var decode = decodeURIComponent(propURI);
        var sharp = decode.split("#");
        var slash = sharp[sharp.length-1].split("/");
        var propName = slash[slash.length-1];
        $.each(DrawWordCloud.propList, function(i, prop) {
            if (propName == prop) {
                var $input = $('<input type="checkbox" />').attr({value: propURI}).attr({name: propName}).attr({class: "property"});
                var $label = $('<label for="'+ propName +'">'+ propName +'</label>');
                $("#properties").append($input).append($label);
            }
        });
    });
};
 
DrawWordCloud.getData = function(work, file, sub, prop) {
    var originalStr="";
    $.each (prop, function(i, propValue) {
        if (sub == ""){
            $.each(DrawWordCloud.subList, function(sbjKey, subjValue) {
                originalStr += " " + LinkData.getObjects(work, file, subjValue.uri, propValue);
            });
        } else {
            originalStr += " " + LinkData.getObjects(work, file, sub, propValue);
        }
    });
    var subStr = sub.split("#");
    var subValue = subStr[subStr.length-1];
    var url = DrawWordCloud.sourceURL + subValue;
    if (sub == ""){
        $("#seeManifest").attr("href", DrawWordCloud.manifestURL).text("→マニフェストを見る");
    } else {
        $("#seeManifest").attr("href", url).text("→マニフェストを見る");
    }
    var inputStr = originalStr.substr(0,900); // APIの字数制限対策
    $("#original").append('<p id="props"><b>元の文章</b>:' + inputStr + '</p>');
    return inputStr;
};
jquery-1.11.2.min.js
http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js
d3.v3.min.js
d3.layout.cloud.js
Playing...

jquery-1.11.2.min.js
http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js
d3.v3.min.js
d3.layout.cloud.js