Skip to content

Commit d4ad785

Browse files
Display seed string in view option
1 parent 8d3c263 commit d4ad785

File tree

10 files changed

+96
-31
lines changed

10 files changed

+96
-31
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "iknow-entity-browser",
3-
"version": "0.7.8",
3+
"version": "0.7.9",
44
"description": "Visualizer for iKnow entities",
55
"main": "gulpfile.babel.js",
66
"scripts": {

src/static/index.html

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -126,16 +126,21 @@ <h1>General Settings</h1>
126126
<div>
127127
<div>
128128
<b>Data source:</b>
129-
<input type="text" value="http://localhost" id="settings.host" autosize placeholder="http://host.name"/>
130-
: <input id="settings.port" autosize type="number" placeholder="port" value="57772"/>
131-
/ <input id="settings.webAppName" autosize type="text" placeholder="app name" value="EntityBrowser"/>
132-
/domain/ <input id="settings.domain" autosize type="text" placeholder="domain" value="1"/>
133-
/
134-
<select id="settings.queryType" title="Query Type">
135-
<option value="related">related</option>
136-
<option value="similar">similar</option>
137-
</select>
138-
/ <input autosize placeholder="seed string" id="settings.seed" type="text" value="crew"/>
129+
<input type="text" value="http://localhost" id="settings.host" autosize
130+
placeholder="http://host.name"/>:<input id="settings.port" autosize
131+
type="number" placeholder="port" value="57772"/>/<input id="settings.webAppName"
132+
autosize type="text" placeholder="app name" value="EntityBrowser"/>/domain/<input
133+
id="settings.domain" autosize type="text" placeholder="domain" value="1"/>/<span
134+
id="querySetting"><select id="settings.queryType" title="Query Type">
135+
<option value="related">related</option>
136+
<option value="similar">similar</option>
137+
</select>/ <input autosize placeholder="seed string" id="settings.seed"
138+
type="text" value="crew"/>
139+
</span>
140+
<label>
141+
<input type="checkbox" id="settings.keepSeedInView"/>
142+
Keep seed string setting in view
143+
</label>
139144
</div>
140145
</div>
141146
<h1>Tabular View Settings</h1>

src/static/js/graph/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ export function translateBy (x = 0, y = 0) {
6464
}
6565

6666
export function focusOn (x = 0, y = 0) {
67-
console.log(x, y);
6867
svg.transition()
6968
.duration(300)
7069
.call(
@@ -333,6 +332,7 @@ export function update (g = lastGraph, reset = false) {
333332
if (reset) {
334333
for (let i = 100; i > 0; --i) simulation.tick();
335334
updateSelection();
335+
resetZoom();
336336
}
337337

338338
}

src/static/js/settings/index.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as graph from "../graph";
33
import * as sourceSettings from "./sourceSettings";
44
import * as tabularViewSettings from "./tabularViewSettings";
55
import * as storage from "../storage";
6-
import { getChanges, applyChanges } from "./values";
6+
import { getChanges, applyChanges, init as initValues } from "./values";
77
import { makeAutosizable } from "../utils";
88

99
function toggleSettings (uiStateModel) {
@@ -26,6 +26,10 @@ export function init () {
2626
.data([model.uiState])
2727
.on("click", toggleSettings);
2828

29+
sourceSettings.init();
30+
tabularViewSettings.init();
31+
initValues();
32+
2933
// make inputs auto-sizable
3034
[].slice.call(document.querySelectorAll(`input[autosize]`)).forEach((i) => makeAutosizable(i));
3135
document.getElementById("settings.resetSettings").addEventListener("click", () => {
@@ -35,7 +39,4 @@ export function init () {
3539
location.reload();
3640
});
3741

38-
sourceSettings.init();
39-
tabularViewSettings.init();
40-
4142
}

src/static/js/settings/sourceSettings.js

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1-
import { setInputValue } from "./values.js";
1+
import { setInputValue, getOption, getChanges, applyChanges } from "./values.js";
2+
import * as model from "../model"
3+
import * as graph from "../graph";
24

35
function bind (elements) {
46
for (let e of elements) {
5-
setInputValue(document.getElementById(e)).addEventListener(`change`, setInputValue);
7+
let el = document.getElementById(e);
8+
setInputValue(el);
9+
if (el.getAttribute("type") === "text")
10+
el.addEventListener(`input`, setInputValue);
11+
else
12+
el.addEventListener(`change`, setInputValue);
613
}
714
}
815

@@ -14,7 +21,27 @@ export function init () {
1421
"settings.domain",
1522
"settings.queryType",
1623
"settings.seed",
17-
"settings.webAppName"
24+
"settings.webAppName",
25+
"settings.keepSeedInView"
1826
]);
1927

28+
function apply () {
29+
if (getChanges().length !== 0) {
30+
applyChanges();
31+
model.update(() => graph.update(true));
32+
}
33+
}
34+
35+
document.getElementById("settings.queryType").addEventListener(`change`, () => {
36+
if (!getOption("keepSeedInView") || model.uiState.settingsToggled)
37+
return;
38+
apply();
39+
});
40+
41+
document.getElementById("settings.seed").addEventListener(`blur`, () => {
42+
if (!getOption("keepSeedInView") || model.uiState.settingsToggled)
43+
return;
44+
apply();
45+
});
46+
2047
}

src/static/js/settings/values.js

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ let settings = { // assign defaults here
1010
domain: "1",
1111
queryType: "related",
1212
seed: "crew",
13+
keepSeedInView: false,
1314
tabularColumns: [
1415
{
1516
label: "ID",
@@ -80,7 +81,13 @@ export function setOption (options, value) {
8081
saveSettings();
8182
}
8283

84+
function applyFixedClass () {
85+
document.getElementById("querySetting")
86+
.classList.toggle("fixed", !!settings["keepSeedInView"]);
87+
}
88+
8389
function saveSettings () {
90+
applyFixedClass();
8491
storage.save(STORAGE_KEY, settings);
8592
}
8693

@@ -90,14 +97,19 @@ export function setInputValue (e = {}) {
9097
if (!el)
9198
return e;
9299
if ((id = el.getAttribute(`id`)).indexOf(`settings.`) === 0) {
93-
let key = id.replace(/^settings\./, ``);
100+
let key = id.replace(/^settings\./, ``),
101+
prop = el.getAttribute("type") === "checkbox" ? "checked" : "value";
94102
if (isEvent) {
95-
settings[key] = el.value;
96-
changes.push([key, el.value]);
103+
settings[key] = el[prop];
104+
changes.push([key, el[prop]]);
97105
saveSettings();
98106
} else {
99-
el.value = settings[key];
107+
el[prop] = settings[key];
100108
}
101109
}
102110
return e;
111+
}
112+
113+
export function init () {
114+
applyFixedClass();
103115
}

src/static/js/tabular/index.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -138,17 +138,18 @@ function updateHeaders (dataProp = sorting.properties.join(".")) {
138138
head.appendChild(document.createElement("th"));
139139
}
140140

141-
function updateToolbarWidth () {
142-
document.getElementById("toolbarIcons").style.width =
143-
(document.body.getBoundingClientRect().width - (model.uiState.tabularToggled
144-
? document.getElementById("table").getBoundingClientRect().width : 0))
145-
+ "px";
141+
function updateToolbarsWidth () {
142+
document.getElementById("querySetting").style.width =
143+
document.getElementById("toolbarIcons").style.width =
144+
(document.body.getBoundingClientRect().width - (model.uiState.tabularToggled
145+
? document.getElementById("table").getBoundingClientRect().width : 0))
146+
+ "px";
146147
}
147148

148149
export function init () {
149150

150-
window.addEventListener("resize", updateToolbarWidth);
151-
updateToolbarWidth();
151+
window.addEventListener("resize", updateToolbarsWidth);
152+
updateToolbarsWidth();
152153

153154
d3.select("#tableToggle")
154155
.data([model.uiState])
@@ -158,7 +159,7 @@ export function init () {
158159
d3.select("#table").classed("active", d.tabularToggled);
159160
if (d.tabularToggled)
160161
updateAll();
161-
updateToolbarWidth();
162+
updateToolbarsWidth();
162163
let w = document.getElementById("table").getBoundingClientRect().width / 2;
163164
translateBy(d.tabularToggled ? -w : w);
164165
});

src/static/scss/basic.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ input[type=text], input[type=number] {
3737
text-shadow: inherit;
3838
}
3939

40+
input[type=checkbox], label {
41+
cursor: pointer;
42+
}
43+
4044
select {
4145

4246
cursor: pointer;

src/static/scss/settings.scss

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,20 @@
1515

1616
}
1717

18+
&:not(.active) {
19+
20+
#querySetting.fixed {
21+
position: absolute;
22+
left: 0;
23+
bottom: -20px;
24+
width: 100%;
25+
text-align: center;
26+
display: block;
27+
z-index: $zIndexInterface - 2;
28+
}
29+
30+
}
31+
1832
}
1933

2034
#settings\.tabularColumns {

src/static/scss/tabular.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ $headerHeight: 36px;
1414
background: white;
1515
overflow: visible;
1616
box-shadow: $defaultShadow;
17+
z-index: $zIndexInterface - 1;
1718
@include transition($defaultTransition);
1819
@include transform(translate(100%,0));
1920
&.active {

0 commit comments

Comments
 (0)