josephsoo commited on
Commit
c3a9029
·
1 Parent(s): 0d4f1be

Simplify feature mapping interaction

Browse files
Files changed (2) hide show
  1. assets/feature_story.js +5 -6
  2. assets/styles.css +3 -28
assets/feature_story.js CHANGED
@@ -176,9 +176,7 @@
176
  attributionData.tied ? "Feature order" : "SHAP rank"
177
  );
178
  targetLabel.classList.add("target");
179
- const replay = htmlElement("button", "feature-story-replay", "Replay mapping");
180
- replay.type = "button";
181
- playback.append(sourceLabel, slider, targetLabel, replay);
182
  container.append(visual, playback);
183
 
184
  const state = {
@@ -193,7 +191,6 @@
193
  canvas,
194
  svg,
195
  slider,
196
- replay,
197
  progress: 1,
198
  hovered: null,
199
  locked: null,
@@ -776,7 +773,6 @@
776
  state.animationFrame = null;
777
  updatePositions(state, Number(state.slider.value));
778
  }, { signal });
779
- state.replay.addEventListener("click", () => replay(state), { signal });
780
  state.container.addEventListener("keydown", (event) => {
781
  if (!["ArrowDown", "ArrowUp", "Home", "End", "Enter", "Escape"].includes(event.key)) return;
782
  event.preventDefault();
@@ -816,7 +812,10 @@
816
  window.requestAnimationFrame(() => draw(state));
817
  });
818
  state.resizeObserver.observe(container);
819
- window.requestAnimationFrame(() => draw(state));
 
 
 
820
  detailNode.textContent = "Hover or tap a raster row or attribution dot to trace the same feature.";
821
  return signature;
822
  } catch (error) {
 
176
  attributionData.tied ? "Feature order" : "SHAP rank"
177
  );
178
  targetLabel.classList.add("target");
179
+ playback.append(sourceLabel, slider, targetLabel);
 
 
180
  container.append(visual, playback);
181
 
182
  const state = {
 
191
  canvas,
192
  svg,
193
  slider,
 
194
  progress: 1,
195
  hovered: null,
196
  locked: null,
 
773
  state.animationFrame = null;
774
  updatePositions(state, Number(state.slider.value));
775
  }, { signal });
 
776
  state.container.addEventListener("keydown", (event) => {
777
  if (!["ArrowDown", "ArrowUp", "Home", "End", "Enter", "Escape"].includes(event.key)) return;
778
  event.preventDefault();
 
812
  window.requestAnimationFrame(() => draw(state));
813
  });
814
  state.resizeObserver.observe(container);
815
+ window.requestAnimationFrame(() => {
816
+ draw(state);
817
+ window.requestAnimationFrame(() => replay(state));
818
+ });
819
  detailNode.textContent = "Hover or tap a raster row or attribution dot to trace the same feature.";
820
  return signature;
821
  } catch (error) {
assets/styles.css CHANGED
@@ -744,8 +744,8 @@ h2 {
744
 
745
  .feature-story-playback {
746
  display: grid;
747
- grid-template-areas: "source slider target replay";
748
- grid-template-columns: auto minmax(150px, 1fr) auto auto;
749
  gap: 10px;
750
  align-items: center;
751
  min-height: 58px;
@@ -777,25 +777,6 @@ h2 {
777
  cursor: ew-resize;
778
  }
779
 
780
- .feature-story-replay {
781
- grid-area: replay;
782
- min-height: 34px;
783
- padding: 7px 12px;
784
- border: 1px solid #b9accf;
785
- border-radius: 6px;
786
- background: #f4f1f8;
787
- color: #4d3880;
788
- cursor: pointer;
789
- font: inherit;
790
- font-size: 11px;
791
- font-weight: 750;
792
- }
793
-
794
- .feature-story-replay:hover {
795
- border-color: #846fa6;
796
- background: #eee9f5;
797
- }
798
-
799
  .feature-story-render-token {
800
  display: none;
801
  }
@@ -1117,8 +1098,7 @@ h2 {
1117
  .feature-story-playback {
1118
  grid-template-areas:
1119
  "source target"
1120
- "slider slider"
1121
- "replay replay";
1122
  grid-template-columns: 1fr 1fr;
1123
  gap: 8px 12px;
1124
  padding: 11px 12px 12px;
@@ -1128,11 +1108,6 @@ h2 {
1128
  text-align: right;
1129
  }
1130
 
1131
- .feature-story-replay {
1132
- width: 100%;
1133
- min-height: 40px;
1134
- }
1135
-
1136
  .site-nav {
1137
  align-items: flex-start;
1138
  padding: 15px 0;
 
744
 
745
  .feature-story-playback {
746
  display: grid;
747
+ grid-template-areas: "source slider target";
748
+ grid-template-columns: auto minmax(150px, 1fr) auto;
749
  gap: 10px;
750
  align-items: center;
751
  min-height: 58px;
 
777
  cursor: ew-resize;
778
  }
779
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
780
  .feature-story-render-token {
781
  display: none;
782
  }
 
1098
  .feature-story-playback {
1099
  grid-template-areas:
1100
  "source target"
1101
+ "slider slider";
 
1102
  grid-template-columns: 1fr 1fr;
1103
  gap: 8px 12px;
1104
  padding: 11px 12px 12px;
 
1108
  text-align: right;
1109
  }
1110
 
 
 
 
 
 
1111
  .site-nav {
1112
  align-items: flex-start;
1113
  padding: 15px 0;