Cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Screen Change

ANSWERED

Sure this is something simple as I believe I've narrowed it down to something in the index.view

 

Working on testing screen changes with icons which works to a point... 

 

The Calorie Screen will show, and allow me to go back to Main Screen, the Heart Screen will show, however not allow me back to the Main Screen. If I flip the order of the two in the SVG then it flips and Heart works, but Calorie will not. 

 

index.js

const calorieLabel = document.getElementById("calorieLabel");
const heartLabel = document.getElementById("heartLabel");

//Screen Change Functionality

const mainScreen = document.getElementById("mainScreen");
const calorieData = document.getElementById("calorieData");
const heartData = document.getElementById("heartData");

const calorieIcon = document.getElementById("calorieIcon");
const heartIcon = document.getElementById("heartIcon");
const trgt = document.getElementById("trgt");

function showMain() {
  console.log("Show Main Screen");
  mainScreen.style.display = "inline";
  calorieData.style.display = "none";
  heartData.style.display = "none";
}

function showCalorieScreen() {
  console.log("Show Calorie Screen");
  mainScreen.style.display = "none";
  calorieData.style.display = "inline"; 
}

function showHeartScreen() {
  console.log("Show Heart Screen");
  mainScreen.style.display = "none";
  heartData.style.display = "inline"; 
}


calorieIcon.onclick = function() {
  showCalorieScreen();
}

heartIcon.onclick = function() {
  showHeartScreen();
}

trgt.onclick = function () {
  showMain();
}

 

index.view

<svg>  
  <svg id="mainScreen">
    <image id="calorieIcon" pointer-events="all" />
    <image id="heartIcon" pointer-events="all" />
  </svg>
  <svg id="calorieData" display="none">
    <image id="trgt" pointer-events="all" />
    <text id="calorieLabel" />    
  </svg> 
  <svg id="heartData" display="none">
    <image id="trgt" pointer-events="all" />
    <text id="heartLabel" />    
  </svg>  
</svg>

 

style.css

/* global */
#trgt {
  href:"img/btn.png";
  width: 100%;
  height: 100%;
  fill: white;
}

/*heart style */
#heartIcon {
  href:"img/heart_rate_36px.png";
  width: 36;
  height: 36;
  x: 100;
  y: 100;
  fill: white;
}

#heartLabel{
  text-anchor:end;
  text-length: 36;
  fill: white;
  font-family: Colfax-Bold;
  font-size: 25;
  x: 280;
  y: 88;
}

/*calories style */
#calorieLabel{
  text-anchor:end;
  text-length: 36;
  fill: white;
  font-family: Colfax-Bold;
  font-size: 25;
  x: 280;
  y: 88;
}

#calorieIcon {
  href: "img/calories_36px.png";
  width: 36;
  height: 36;
  fill: white;
  x: 185; 
  y: 162; 
}

 

 

 

Thoughts?

Thanks.

Best Answer
0 Votes
1 BEST ANSWER

Accepted Solutions

I suspect that

   document.getElementById("trgt")

will only get the first instance that uses that id.

In theory, ids should be unique. There are ways around that, but one must take care.

Peter McLennan
Gondwana Software

View best answer in original post

Best Answer
0 Votes
2 REPLIES 2

I suspect that

   document.getElementById("trgt")

will only get the first instance that uses that id.

In theory, ids should be unique. There are ways around that, but one must take care.

Peter McLennan
Gondwana Software
Best Answer
0 Votes

Well that worked, thought I had tried that but maybe I didn't all the way through..

 

Not the biggest fan of this method so may play around and work on some other ways to change things to be more dynamic.

 

Thanks!

Best Answer