Skip to content

Commit 3c60508

Browse files
keepQueryTypeInView and keepSeedInView separate options add
1 parent 629083b commit 3c60508

File tree

12 files changed

+77
-33
lines changed

12 files changed

+77
-33
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ represented in the table below.
5959
| `domain` | `1` | iKnow domain name. |
6060
| `queryType` | `related` | iKnow query type. Can be `related` or `similar`. |
6161
| `seed` | `crew` | Seed string. |
62-
| `keepSeedInView` | `false` | A `boolean` value determining whether the `queryType` and `seed` settings will be displayed on the screen all the time. |
62+
| `keepQueryTypeInView` | `true` | A `boolean` value determining whether the `queryType` setting will be displayed on the screen all the time. |
63+
| `keepSeedInView` | `false` | A `boolean` value determining whether the `seed` setting will be displayed on the screen all the time. |
6364
| `tabularShowHiddenNodes` | `false` | A `boolean` value determining whether to show entities hidden behind `X more` node in the table. |
6465

6566
URL example: `http://.../index.html?domain=1&queryType=similar&seed=plane`

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.9.4",
3+
"version": "0.9.5",
44
"description": "Visualizer for iKnow entities",
55
"main": "gulpfile.babel.js",
66
"scripts": {

src/static/index.html

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,9 @@
134134
<div id="settings">
135135
<i id="closeSettingsToggle" class="ui icon-close"></i>
136136
<h1>General Settings</h1>
137+
<div class="settingsNotice">
138+
Changing any settings will refresh all the data.
139+
</div>
137140
<div>
138141
<div>
139142
<b>Data source:</b>
@@ -145,12 +148,15 @@ <h1>General Settings</h1>
145148
/>/<span id="querySetting"><select id="settings.queryType" title="Query Type">
146149
<option value="related">related</option>
147150
<option value="similar">similar</option>
148-
</select>/ <input autosize placeholder="seed string" id="settings.seed"
149-
type="text" value="crew"/>
150-
</span>
151+
</select></span><span id="seedSetting"><input autosize placeholder="seed string"
152+
id="settings.seed" type="text" value="crew"/></span>
151153
<label>
152154
<input type="checkbox" id="settings.keepSeedInView"/>
153-
Keep seed string setting in view
155+
Keep seed option in view
156+
</label>
157+
<label>
158+
<input type="checkbox" id="settings.keepQueryTypeInView"/>
159+
Keep query type option in view
154160
</label>
155161
</div>
156162
</div>
@@ -175,6 +181,9 @@ <h1>Tabular View Settings</h1>
175181
iKnow Entity Browser v<!-- @echo package.version -->
176182
</div>
177183
</div>
184+
<div id="preservedToolbar">
185+
186+
</div>
178187
</div>
179188
</body>
180189
</html>

src/static/js/settings/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ 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, init as initValues } from "./values";
6+
import { getChanges, applyChanges, init as initValues, applyFixedClasses } from "./values";
77
import { makeAutosizable } from "../utils";
88

99
function toggleSettings (uiStateModel) {
1010
uiStateModel.settingsToggled = !uiStateModel.settingsToggled;
1111
d3.select("#settings").classed("active", uiStateModel.settingsToggled);
1212
d3.select("#windows").classed("offScreen", uiStateModel.settingsToggled);
13+
applyFixedClasses();
1314
if (!uiStateModel.settingsToggled && getChanges().length !== 0) {
1415
applyChanges();
1516
model.update(() => graph.update(true));
@@ -27,7 +28,7 @@ export function init () {
2728
.on("click", toggleSettings);
2829

2930
tabularViewSettings.init();
30-
initValues();
31+
initValues(model.uiState);
3132
sourceSettings.init();
3233

3334
// make inputs auto-sizable

src/static/js/settings/sourceSettings.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export function init () {
2222
"settings.queryType",
2323
"settings.seed",
2424
"settings.webAppName",
25+
"settings.keepQueryTypeInView",
2526
"settings.keepSeedInView",
2627
"settings.tabularShowHiddenNodes"
2728
]);
@@ -34,7 +35,7 @@ export function init () {
3435
}
3536

3637
document.getElementById("settings.queryType").addEventListener(`change`, () => {
37-
if (!getOption("keepSeedInView") || model.uiState.settingsToggled)
38+
if (!getOption("keepQueryTypeInView") || model.uiState.settingsToggled)
3839
return;
3940
apply();
4041
});

src/static/js/settings/values.js

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const settingsTypes = {
1111
domain: String,
1212
queryType: new Set(["similar", "related"]),
1313
seed: String,
14+
keepQueryTypeInView: Boolean,
1415
keepSeedInView: Boolean,
1516
tabularShowHiddenNodes: Boolean
1617
};
@@ -22,6 +23,7 @@ const settings = { // assign defaults here
2223
domain: "1",
2324
queryType: "related",
2425
seed: "crew",
26+
keepQueryTypeInView: true,
2527
keepSeedInView: false,
2628
tabularShowHiddenNodes: false,
2729
tabularColumns: [
@@ -94,13 +96,21 @@ export function setOption (options, value) {
9496
saveSettings();
9597
}
9698

97-
function applyFixedClass () {
98-
document.getElementById("querySetting")
99-
.classList.toggle("fixed", !!settings["keepSeedInView"]);
99+
let preservedToolbarElement = null,
100+
querySettingElement = null,
101+
seedSettingElement = null,
102+
uiState = null;
103+
export function applyFixedClasses () {
104+
let queryParent = !uiState.settingsToggled && settings["keepQueryTypeInView"]
105+
? preservedToolbarElement : querySettingElement,
106+
seedParent = !uiState.settingsToggled && settings["keepSeedInView"]
107+
? preservedToolbarElement : seedSettingElement;
108+
queryParent.appendChild(document.getElementById("settings.queryType"));
109+
seedParent.appendChild(document.getElementById("settings.seed"));
100110
}
101111

102112
function saveSettings () {
103-
applyFixedClass();
113+
applyFixedClasses();
104114
storage.save(STORAGE_KEY, settings);
105115
}
106116

@@ -123,7 +133,7 @@ export function setInputValue (e = {}) {
123133
return e;
124134
}
125135

126-
export function init () {
136+
export function init (uiSt) {
127137
let params = url.getSearchString();
128138
for (let param in params) {
129139
let type = getObjProp(settingsTypes, param.split(".")),
@@ -137,5 +147,9 @@ export function init () {
137147
type instanceof Set ? (type.has(v) ? v : settings[param]) :
138148
settings[param];
139149
}
140-
applyFixedClass();
150+
uiState = uiSt;
151+
preservedToolbarElement = document.getElementById("preservedToolbar");
152+
querySettingElement = document.getElementById("querySetting");
153+
seedSettingElement = document.getElementById("seedSetting");
154+
applyFixedClasses();
141155
}

src/static/js/tabular/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ function updateHeaders (dataProp = sorting.properties.join(".")) {
169169
}
170170

171171
function updateToolbarsWidth () {
172-
document.getElementById("querySetting").style.width =
172+
document.getElementById("preservedToolbar").style.width =
173173
document.getElementById("toolbarIcons").style.width =
174174
(document.body.getBoundingClientRect().width - (model.uiState.tabularToggled
175175
? document.getElementById("table").getBoundingClientRect().width : 0))

src/static/scss/basic.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ input[type=button], button {
100100
}
101101

102102
h1, h2, h3, h4, h5, h6 {
103-
margin: 0 0 .3em 0;
103+
margin: .3em 0;
104104
}
105105

106106
.loading {

src/static/scss/index.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,5 @@ html, body {
3434
@import "tabular";
3535
@import "settings";
3636
@import "interface";
37-
@import "tooltip";
37+
@import "tooltip";
38+
@import "preservedToolbar";

src/static/scss/mixins.scss

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@
3939
transform: $options;
4040
}
4141

42+
@mixin pointer-events ($options) {
43+
-webkit-pointer-events: $options;
44+
-moz-pointer-events: $options;
45+
-ms-pointer-events: $options;
46+
-o-pointer-events: $options;
47+
pointer-events: $options;
48+
}
49+
4250
@mixin animation-delay ($options) {
4351
-webkit-animation-delay: $options;
4452
-moz-animation-delay: $options;

0 commit comments

Comments
 (0)