Utilizing variable values in Google Charts with AngularJS

Hello everyone, I am attempting to display a chart using data obtained from an API. The output of the API is in the form of List<String> and not in JSON format. Here is the snippet of my JS file:

google.load('visualization', '1', {
packages: ['corechart'] 
});


app.controller("chartController",function($scope,$http)
    {


$http.get("/idcountcisco")
.success(function(data){

    $scope.cisco=data
    console.log($scope.cisco)


})


    $http.get("/idcountlog4j")
.success(function(data){

    $scope.log4j=data
    console.log($scope.log4j)


})
    $http.get("/idcountwin")
.success(function(data){

    $scope.windows=data
    console.log($scope.windows)


})



if (($scope.cisco=!undefined )&&($scope.log4j=!undefined )&&($scope.windows=!undefined ))

{

var data = google.visualization.arrayToDataTable([
                                                  ['type', 'Qs' ],
                                                  ['cisco', $scope.cisco],
                                                  ['lo4j',$scope.log4j ],
                                                 ['windows',$scope.windows],
   ]);
var options = {
  title: 'Statistiques'
 };
 var chart = new    google.visualization.PieChart(document.getElementById('chartdiv'));

 chart.draw(data, options);

}

});

Upon checking the console log, the values retrieved are:

$scope.cisco=18
$scope.log4j=45
$scope.windows=15

However, the displayed chart does not seem to reflect the real values as all variables become equal to true after the conditional statement.

I appreciate any assistance or guidance on this matter.

https://i.stack.imgur.com/LszGy.png

Answer №1

There are actually two issues to address in your code:

The first issue:

In your code, you used =! instead of !=. So when you wrote $scope.cisco=!undefined, it set true to $scope.cisco which is '!undefined'. This causes your if condition to always be true.

It should be

if (($scope.cisco!=undefined )&&($scope.log4j!=undefined )&&($scope.windows!=undefined ))
or you can use angular.isUndefined to check if the variable is undefined or not.

The second issue:

You are making all the $http.get requests in your controller and trying to draw a chart before all the requests finish executing. Since $http.get runs asynchronously and returns a promise, there is no guarantee that all get requests will complete before reaching your if condition. This is the second issue that needs fixing.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

How to invoke a function in an isolated scope of AngularJS using JavaScript

We are in the process of gradually switching our application to work with Angular. I have developed an angular module and a directive that aims to connect specific functionality to an HTML element. angular.module('myApp', [ ]) .controller(&ap ...

Tips for retrieving a flag when there is a preexisting record within an association in Sequelize

I am working with a model A that has a 1:N association with a model B. My objective is to retrieve all records from A and determine whether there is at least one associated record from B (true) or not (false). The relationship setup: ModelA.hasMany(ModelB ...

Tips for setting variable values in Angular 7

I'm encountering an issue with assigning values to variables in my code. Can anyone provide assistance in finding a solution? Here is the snippet of my code: app.component.ts: public power:any; public ice:any; public cake:any; changeValue(prop, ...

Connect a designated button to a designated modal for a seamless user experience

I am struggling to dynamically change the content of a modal based on different buttons being clicked. The issue lies in trying to reference the div element within JavaScript since I can't have multiple elements with the same ID. As a newcomer to JS, ...

Displaying JavaScript Countdown in PHP Table

I have a database table with multiple fields and I am looking to create a countdown using the integer value from one of the fields (in minutes). How can I loop through and display the countdown for each row in a PHP table utilizing these values, with the a ...

Material-UI's JSS does not adhere to the justify content property

Having trouble aligning elements in my React app using material-ui 1.0 and its JSS solutions. The code I've written below should center justify, but it's not working no matter how I configure it. I suspect there might be a naming issue since mat ...

Creating a fresh JSON structure by utilizing an established one

I have a JSON data that contains sections and rubrics, but I only need the items for a new listing. The new object named 'items' should consist of an array of all the items. The final JSON output should be sorted by the attribute 'name&apos ...

Bringing the value from the codebehind to the jquery function on the client side

Here is the code snippet from my asp.net web application's code behind where I have integrated another web service: [WebMethod] public static string GetData(string name) { WEBSERVICE.Service1 Client = new Service1(); string Nam ...

Combining the power of Google Blockly with AngularJS

I am looking for a way to empower advanced users to create and save custom math formulas that will be used in a shopping cart check-out process. These users are not programmers, but can follow instructions easily. The formulas should be editable by the use ...

Can a single node_module folder be shared across multiple projects within a repository?

Imagine we have a central repository named REPO containing multiple grunt projects. Now, let's say we want to structure it like this: ROOT -- bower_components -- node_modules -- project_1 -- project_2 -- project_3 etc The current issue is that I nee ...

Filtering data in AngularJS by parsing JSON records

I have a JSON file containing restaurant information and I need to display the data by grouping them based on their respective address fields. For example, all restaurants with the address 'Delhi' should be shown first, followed by those from &ap ...

The concealment of the container is ineffective when attempting to hide it until all cached images are

My website has a background and a main container. I wanted to hide the container until the entire page had loaded, so I included #cover{opacity:0} at the beginning of the page and $(window).load(function() { $('#cover').css('opacity&apo ...

Use the zoom feature on D3 to enhance two graphs in an HTML document

I have been experimenting with d3 libraries lately and came across http://bl.ocks.org/jroetman/9b4c0599a4996edef0ab. I successfully used it to draw a graph based on data from a tsv file and enable zoom in and out functionality, which worked well for me. Ho ...

Utilize the inherited background color for a linear-gradient effect

Here is the code snippet I am working with: <label className={classes.trigger} htmlFor={uniqueId} ref={labelRef} style={{ background: val, borderColor: val }} /> This is the corresponding CSS: .trigger { display: block; posit ...

Delete items within the first 10 minutes of shutting it down

Is there a way to temporarily remove a newsletter element for 10 minutes after closing it on a webpage? The idea is that once the panel is closed, it should stay hidden even if the page is refreshed within that timeframe. I was considering using local stor ...

Issue with AngularJS Directive - ng-click not activating within the specified directive

I've encountered an issue with my new directive. The variables are not being updated when using ng-click. I've searched and found some solutions here, but they all involve calling a method. I simply need to change the values of 2 variables when t ...

Can we enhance the efficiency of this equation?

The formula provided organizes the elements in the container based on mouse movement. The issue stemmed from the image size and the different calculations performed when approaching along the x and y axes from various directions. const zoomEffect = (even ...

Remove movable element from react-dnd

I am working with react-dnd and I am trying to figure out how to remove a draggable object once it has been used. I modified the react-dnd multiple type example by adding a delete feature when an object is dropped. Here is the current behavior: 1. Drag a ...

Husky and lint-staged failing to run on Windows due to 'command not found' error

I'm facing issues with getting husky and lint-staged to function properly on my Windows 10 system. Here's how my setup looks like: .huskyrc.json { "hooks": { "pre-commit": "lint-staged" } } .lintstagedrc ( ...

The Challenge of Refreshing Static Site Generation in NextJS Version 13

I've encountered a problem with updating data on a basic data page. The situation is simple: there's a page that shows category data and another page that allows editing of the same data. After making edits and returning to the list page, I expec ...