annotate query_builder/querybuild.html @ 28:5384b71df52a

querybuild.html added, beginning prototype.
author arussell
date Thu, 10 Dec 2015 07:26:40 -0500
parents
children acc60a20582c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
1 <!DOCTYPE html>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
2 <html>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
3 <head>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
4 <meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
5 <title>Query Builder</title>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
6 <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
7 <link rel="stylesheet" href="select2-4.0.1/dist/css/select2.min.css">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
8
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
9 <script type="text/javascript" src="js/d3.min.js"></script>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
10 <script type="text/javascript" src="select2-4.0.1/vendor/jquery-2.1.0.js"></script>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
11 <script type="text/javascript" src="select2-4.0.1/dist/js/select2.full.min.js"></script>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
12
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
13
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
14 </head>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
15 <body style="background:none;">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
16 <div role="navigation" class="navbar navbar-default navbar-static-top">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
17 <div class="container">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
18 <div class="row">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
19 <div class="col-sm-6 col-md-6">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
20 <ul class="nav navbar-nav">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
21 </ul>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
22 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
23 <div class="navbar-header col-sm-6 col-md-6" style="height: auto;">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
24 <div class="col-md-6">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
25 <div class="navbar-brand">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
26 <div class="brand">ISMI Query Builder</div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
27 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
28 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
29 <div class="col-md-offset-6">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
30 <div class="logo-well" style="height: 60%; width: 60%;">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
31 <a href="//neo4j.com/developer-resources">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
32 <img src="//neo4j-contrib.github.io/developer-resources/language-guides/assets/img/logo-white.svg" alt="Neo4j World's Leading Graph Database" id="logo" style="max-height: 50%; width: 50%">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
33 </a>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
34 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
35 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
36 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
37 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
38 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
39 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
40 <div class="container">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
41 <div class="row" style="width: 95%">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
42 <div class="col-lg">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
43 <div class="panel panel-default">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
44 <div class="panel-heading" id="title">Query Builder</div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
45
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
46 <section>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
47 <div class="s2-example">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
48 <div id="filters">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
49 <div class="row" id="startrow" style="margin-top: 15px">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
50 <div class="col-sm-4 col-md-4" id="select-col1">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
51 <select class="selected-object form-control">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
52 <option selected>Selected object is: </option>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
53 </select>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
54 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
55 <div class="col-sm-4 col-md-4" id="select-col2">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
56 <select class="select-object1 form-control">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
57 <option selected>TEXT</option>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
58 <option>WITNESS</option>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
59 <option>PERSON</option>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
60 </select>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
61 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
62 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
63 <div class="row" id="row1" style="margin-top: 15px">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
64 <div class="col-sm-4 col-md-4" id="1filter-col1">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
65 <select class="filter-box1 form-control">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
66 <option value="" disabled selected>Choose filter...</option>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
67 </select>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
68 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
69 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
70 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
71 <div align="left" style="margin-top: 30px"><button id="minus_filter_button" class="btn btn-warning btn-md" type="button"> - </button>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
72 <button id="plus_filter_button" class="btn btn-warning btn-md" type="button"> + </button>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
73 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
74 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
75
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
76
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
77 <div class="container-fluid" style="margin-top: 15px">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
78 <form role="form">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
79 <div class="form-group">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
80 <label for="results-container">Results list</label>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
81 <select multiple class="form-control" id="results-container" style="min-height: 300px;">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
82 </select>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
83 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
84 </form>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
85
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
86 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
87
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
88 <!-- <pre data-fill-from=".js-code-data-array"></pre> -->
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
89 </section>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
90
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
91 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
92 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
93 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
94 </div>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
95
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
96
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
97
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
98
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
99
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
100
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
101 <script type="text/javascript" class="js-code-data-array">
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
102 //var queryData = [];
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
103
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
104 // Defining initial variables and helper functions
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
105 var sourceType = "TEXT";
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
106 var targets = [];
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
107 var targetTypes = [];
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
108 var listTolerance = 100;
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
109 var numFilters = 1;
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
110 var filters = [
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
111 { id: 0, text: 'has relation' },
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
112 { id: 1, text: 'attribute contains' }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
113 ];
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
114 $(".filter-box"+numFilters).select2({
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
115 // Initialize first filter box
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
116 data: filters,
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
117 minimumResultsForSearch: Infinity
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
118 });
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
119 function filter_html(n) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
120 return '<div class="row" id="row'+n+'" style="margin-top: 15px">' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
121 '<div class="col-sm-4 col-md-4" id="'+n+'filter-col1">' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
122 '<select class="filter-box'+n+' form-control">' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
123 '<option value="" disabled selected>Choose filter...</option>' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
124 '</select>' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
125 '</div>' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
126 '</div>';
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
127 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
128 function constraint_html(classn) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
129 return '<div class="col-sm-4 col-md-4" id="'+classn+'filter-col2">' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
130 '<select class="constraint-box'+classn+' form-control" >' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
131 '</select>' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
132 '</div>';
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
133 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
134 function submit_html(classn) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
135 return '<div class="col-sm-4 col-md-4" id="'+classn+'filter-col2">' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
136 '<div class="form-group'+classn+'">' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
137 '<textarea class="form-control" rows="1" id="attribute-text-search'+classn+'">' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
138 '</textarea>' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
139 '</div>' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
140 '</div>';
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
141 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
142 function select_html(selection) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
143 return '<div class="row" id="startrow" style="margin-top: 15px">' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
144 '<div class="col-sm-4 col-md-4" id="select-col1"> ' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
145 '<select class="selected-object form-control"> ' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
146 '<option selected>Selected object is: </option> ' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
147 '</select> ' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
148 '</div> ' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
149 '<div class="col-sm-4 col-md-4" id="select-col2"> ' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
150 '<select class="select-object1 form-control"> ' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
151 '<option selected>TEXT</option> ' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
152 '<option>WITNESS</option> ' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
153 '<option>PERSON</option> ' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
154 '</select> ' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
155 '</div> ' +
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
156 '</div>';
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
157 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
158
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
159
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
160
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
161
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
162 // Button filters
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
163 $("#plus_filter_button").click(function() {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
164 console.log("add filter");
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
165 numFilters++;
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
166 $("#filters").append(filter_html(numFilters));
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
167 $(".filter-box"+numFilters).select2({
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
168 data: filters,
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
169 minimumResultsForSearch: Infinity
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
170 });
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
171 });
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
172 $("#minus_filter_button").click(function() {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
173 console.log("minus filter");
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
174 $("#row"+numFilters).remove();
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
175 numFilters--;
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
176 });
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
177 $("#results-container").dblclick(function() {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
178 if ($("#results-container option:selected").length == 1) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
179 var selection = $(this).text();
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
180 console.log("add filter");
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
181 numFilters++;
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
182 $("#filters").append(select_html(selection, numFilters));
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
183 // Generate inner relation list
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
184 genRelations(sourceType, ".constraint-box"+classnum);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
185
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
186 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
187 console.log("add filter");
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
188 });
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
189
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
190
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
191
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
192
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
193 // For use in the onchange events below
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
194 function genRelations(sourceNodeType, constraintBox) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
195 var query = "match (source:"+sourceNodeType+")-[rel]-target return distinct rel.type";
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
196 ajax1(query, constraintBox);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
197 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
198 function genResults(sourceNodeType, selected, constraintBox) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
199 var query = "match (source:"+sourceNodeType+")-["+selected+"]-(target) return target.label, target.type";
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
200 ajax1(query, constraintBox);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
201 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
202 // Can be used to return a list of all available attributes
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
203 // TODO: Not implemented
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
204 function genAttributes(sourceNodeType, constraintBox) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
205 var query = "match (n:"+sourceNodeType+") with keys(n) as collection unwind collection as attributes return distinct attributes";
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
206 ajax1(query, constraintBox);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
207 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
208
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
209 // Change Events
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
210 $('body').on('change', function(event){
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
211 var classname = (event.target.className).substr(0, (event.target.className).indexOf(" "));
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
212 var classnum = (event.target.className.match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [] )
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
213 .map(function (v) {return +v;}).shift();
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
214 var selectedOption = $('.'+classname+' option:selected').text();
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
215
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
216 // Change is on the filter box
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
217 if (classname.indexOf("filter-box") > -1) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
218 if (selectedOption === "has relation") {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
219 // Remove any other boxes in the row
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
220 $("#"+classnum+"filter-col2").remove();
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
221 $("#row"+classnum).append(constraint_html(classnum));
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
222 // Generate inner relation list
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
223 genRelations(sourceType, ".constraint-box"+classnum);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
224 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
225 if (selectedOption === "attribute contains") {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
226 $("#"+classnum+"filter-col2").remove();
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
227 $("#row"+classnum).append(submit_html(classnum));
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
228 //genAttributes(sourceType, ".constraint-box"+classnum);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
229 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
230 if (selectedOption === "return") {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
231 $("#"+classnum+"filter-col2").remove();
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
232 $("#row"+classnum).append(constraint_html(classnum));
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
233 genAttributes(targetTypes, ".constraint-box"+classnum);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
234 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
235 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
236
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
237 // Change is on the relationship constraint box
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
238 if (classname.indexOf("constraint-box") > -1) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
239 //$().remove();
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
240 genResults(sourceType, selectedOption, "results-container");
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
241 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
242
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
243 // TODO: if the select object is changed update the sourceType var that we are looking at
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
244 // Change is on subject scope
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
245 if (classname.indexOf("select-object") > -1) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
246
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
247 //ajax1(query, "results-container")
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
248 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
249 });
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
250
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
251
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
252
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
253
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
254 // Ajax request function
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
255 function ajax1(q, resBox) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
256 console.log(q);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
257 $.ajaxSetup({
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
258 headers: {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
259 "Authorization": 'Basic ' + window.btoa("neo4j"+":"+"neo5j")
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
260 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
261 });
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
262 return $.ajax({
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
263 type: "POST",
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
264 url: "https://ismi-dev.mpiwg-berlin.mpg.de/neo4j-ismi/db/data/cypher",
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
265 accepts: "application/json",
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
266 dataType: "json",
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
267 data: {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
268 "query": q,
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
269 "params": {}
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
270 },
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
271 beforeSend: function (xhr) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
272 xhr.setRequestHeader ("Authorization", "Basic " + btoa('neo4j'+":"+'neo5j'));
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
273 },
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
274 processResults: function (data, params) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
275 // parse the results into the format expected by Select2
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
276 // since we are using custom formatting functions we do not need to
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
277 // alter the remote JSON data, except to indicate that infinite
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
278 // scrolling can be used
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
279 params.page = params.page || 1;
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
280 return {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
281 pagination: {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
282 more: (params.page * 30) < data.length
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
283 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
284 };
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
285 },
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
286 success: function (res, textStatus, jqXHR) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
287 ajaxCheck(res, resBox, textStatus);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
288 console.log(textStatus);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
289 },
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
290 error: function (jqXHR, textStatus, errorThrown) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
291 console.log(textStatus);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
292 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
293 });
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
294 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
295 // Check if request was successful
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
296 function ajaxCheck(a1, resBox, status){
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
297 if (status === 'error') console.log("error: bad ajax request");
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
298 //else dataGen(a1);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
299 dataGen(a1.data, resBox);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
300 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
301 // On success, generate new data
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
302 // TODO: might want to just always return nodes and then deal with the queryData different for each type of return
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
303 function dataGen(dataArr, resBox) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
304 console.log(dataArr);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
305 var d = dataArr;
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
306 targets = [];
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
307
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
308 // Consider implementing localStorage to avoid reloading every time
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
309 var queryData = [];
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
310 for (var i= 0; i<d.length; i++) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
311 var j = d[i];
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
312 queryData.push({ id: j, text: j[0] });
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
313 targets.push(j[1]);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
314 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
315 // Now that queryData array has been defined we will sort it by its label value and initialize the option.
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
316 queryData.sort(function(a,b){
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
317 var c = a.text.replace(/<|>/g, '');
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
318 var d = b.text.replace(/<|>/g, '');
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
319 return c.localeCompare(d);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
320 });
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
321 console.log(queryData[0].text);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
322
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
323 // Change the displayed results
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
324 if (resBox === "results-container") {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
325 process_display_results(queryData);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
326 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
327 else {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
328 $(resBox).select2({
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
329 data: queryData
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
330 });
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
331 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
332 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
333 function process_display_results(queryData) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
334 var weights = [];
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
335 var resultLength = queryData.length;
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
336 targetTypes = [];
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
337
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
338 $('#results-container')
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
339 .find('option')
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
340 .remove()
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
341 .end()
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
342 ;
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
343 if (resultLength < listTolerance) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
344 for (var i = 0; i < resultLength; i++) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
345 // TODO: put this jQuery call into its own function to be called if the else statement occurs
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
346 // TODO: but the user actually does want to see the entire huge list.
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
347 $('#results-container')
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
348 .append($("<option></option>")
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
349 .attr("value", i)
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
350 .text(queryData[i].text));
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
351 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
352 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
353 else {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
354 for (var i = 0; i < targets.length; i++) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
355 if (targetTypes.indexOf(targets[i]) == -1) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
356 targetTypes.push(targets[i]);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
357 weights.push(1);
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
358 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
359 else {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
360 weights[targetTypes.indexOf(targets[i])] += 1;
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
361 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
362 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
363 for (var i = 0; i < targetTypes.length; i++) {
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
364 $('#results-container')
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
365 .append($("<option></option>")
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
366 .text(targetTypes[i] + " [ " + weights[i] + " ]"));
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
367 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
368 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
369 }
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
370
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
371 </script>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
372
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
373 </body>
5384b71df52a querybuild.html added, beginning prototype.
arussell
parents:
diff changeset
374 </html>