ngOnInit(){
var pivot = new Flexmonster({
container: "pivot-container",
componentFolder: "https://cdn.flexmonster.com/",
toolbar: true,
beforetoolbarcreated: customizeToolbar
});
note : I am getting this error pivot' is declared but its value is never read.ts in angular
what can be done
Hello,
Thank you for writing to us.
A possible solution is to initialize Flexmonster without assigning it to a variable. For example:
ngOnInit(){
new Flexmonster({
container: "pivot-container",
componentFolder: "https://cdn.flexmonster.com/",
toolbar: true,
beforetoolbarcreated: customizeToolbar
});
}
This will prevent the "'pivot' is declared but its value is never read"
warning from appearing.
Alternatively, you could use Flexmonster the same way as in our sample Angular project on GitHub (see example).
Please let us know if this helps.
Kind regards,
Vera
Hi Vera,
Thanks for writing the answer i removed it and the declaration not throws error,
but I am getting another error.
They console shows no error but why this error comes. any changes on Flex monster end
attaching the screenshot.
Hi Vera,
Thanks for writing the answer i removed it and the declaration not throws error,
but I am getting another error.
They console shows no error but why this error comes. any changes on Flex monster end
attaching the screenshot.
Hi Vera,
Thanks for writing the answer i removed it and the declaration not throws error,
but I am getting another error.
They console shows no error but why this error comes. any changes on Flex monster end
attaching the screenshot.
Hello,
Thank you for your reply.
According to the screenshot, it seems Flexmonster's CSS styles were not loaded.
We highly recommend integrating Flexmonster with Angular according to our integration guide: https://www.flexmonster.com/doc/integration-with-angular/#!integration.
Step 4 of the integration guide shows how to import Flexmonster's style sheet.
Please let us know if this helps.
Kind regards,
Vera
Hi Veera,
Can i override the CSS styles in which my component is there example
attaching the screenshot
Hello,
Thank you for your question.
Please see our sample Angular project on GitHub for reference.
In the example, Flexmonster styles are imported in styles.css
the following way (link to source code):
@import "flexmonster/flexmonster.min.css";
The styles.css
file is referenced in angular.json
(see source code)
As a result, Angular will load the styles defined in styles.css
, including Flexmonster styles.
If you are looking for a way to override Flexmonster's default styles with your custom ones, this can be achieved by creating your own custom Flexmonster theme. For more details, please see the following tutorial: https://www.flexmonster.com/doc/customizing-appearance/.
Once you create your own Flexmonster theme, you can apply it in your Angular application in the same way: just replace @import "flexmonster/flexmonster.min.css";
with the path to your Flexmonster theme. For instance:
@import "PATH_TO_YOUR_THEME/flexmonster.min.css";
Please let us know if this helps.
Kind regards,
Vera
Hi Veera,
How can i changes the names of the Column in angular Flexmonster ex: screenshot attached,
Please help.
total sum of price - change to Accilan
and add column names below it - how to do
Accilian - Heading
SemiFinished146, - sub heading
SemiFinished132 - sub heading
THTP - Heading
How to do it in angular any example would be good
Hello,
Thank you for reaching out to us.
We have prepared a JSFiddle showing how you can achieve the desired representation: https://jsfiddle.net/flexmonster/yskz52cb/.
The same report object will work for Angular as well. Here is an example of how to set a report configuration in Angular:
In app-component.html
:
<div>
<fm-pivot #pivot
[toolbar]="true"
[report]="report">
</fm-pivot>
</div>
In app-component.ts
:
import { Component, OnInit, ViewChild } from '@angular/core';
import { FlexmonsterPivot } from 'ng-flexmonster';
@Component({
selector:'app-component',
templateUrl:'./app-component.html',
styleUrls: ['./app-component.css']
})
export class AppComponent implements OnInit {
@ViewChild('pivot') pivot!: FlexmonsterPivot;
public report: Object = {
dataSource: {...},
slice: {...}
};
constructor() { }
ngOnInit(): void {}
}
Please let us know if this helps.
Kind regards,
Vera
Hi Vera,
Thanks for the Help
I have one doubt actually the RAD58, should come where the THTP there vise versa, is there any method in calling it,
Any method also there to convert value to Kilogram so the value would be 2177 Kg,
Hello,
Thank you for your response.
"unsorted"
in the slice
(see guide). For example:
"report": {
"dataSource": {...},
"slice": {
"rows": [
{
"uniqueName": "Status",
"sort": "unsorted"
},
...
],
"columns": [...],
"measures": [...]
}
}
Please let us know if this works for your use case.
You are welcome to check out the updated JSFidde example: https://jsfiddle.net/flexmonster/4q6hz03w/.
Please let us know if this helps.
Kind regards,
Vera
Hi Vera,
Thanks for your valuable response, it worked fine like wise any doubt I would get back please help.
Hi Vera,
I have a doubt how can I add an icon to the semifinished text and icon, tried to add favicon but dint happen.
https://jsfiddle.net/flexmonster/4q6hz03w/
Hello,
Thank you for your question.
You can add an icon to the semifinished text (the header cells) via the customizeCell() API call.
With this method, you can get the details about each grid cell: its type, which field it belongs to, its content, etc. Using these details, you can then customize the desired cells by adding your own icon. For example, this approach is used on our demo to add flag icons to the "Country"
header cells: https://www.flexmonster.com/demos/js/pivot-table/ (see JSFiddle).
Please see the following guide for further details on how to customize the grid: https://www.flexmonster.com/doc/customizing-grid/.
Also, here is an example of how to use customizeCell
in Angular:
In app-component.html
:
<div>
<fm-pivot #pivot
[toolbar]="true"
[height]="600"
[customizeCell]="customizeCellFunction">
</fm-pivot>
</div>
In app-comonent.ts
:
import { Component, OnInit, ViewChild } from '@angular/core';
import { FlexmonsterPivot } from 'ng-flexmonster';
@Component({
selector: 'app-component',
templateUrl: './app-component.html',
styleUrls: ['./app-component.css']
})
export class AppComponent implements OnInit {
@ViewChild('pivot') pivot!: FlexmonsterPivot;
public report: Object = {...};
constructor() { }
ngOnInit(): void {}
customizeCellFunction(cell: Flexmonster.CellBuilder, data: Flexmonster.CellData) {
// Add your cell customization logic here
}
}
Please let us know if this helps.
Kind regards,
Vera
Hi Vera,
I am hereby sharing the jsbin link actually, I have added the fonawesome and the icon things are not displaying in the customizecell i have added the key and rows which icon needed to be, since the console no errors but the icon is not displaying
https://jsfiddle.net/65wzkpbL/2/
Pleas help on it.
Hello,
Thank you for your response.
It seems the fontawesome fonts are being overridden by other fonts on the page. You can fix this by adding the following CSS:
.fa {
font-family: 'FontAwesome' !important;
}
We have modified the provided JSFiddle so that the icons are shown: https://jsfiddle.net/flexmonster/fh65u3db/.
Please let us know if this helps.
Kind regards,
Vera
Hi Vera,
Thanks it worked, thanks for the help.
Hi vera,
I am having one issue I have created the stackblitz, and also sharing the link across i have a couple of issue how to integrate the api in Flexmonster, currently the JSON is in app.component.ts as data but how no to hardcode the JSON take it from the API - comming from the server.
Crearting the service
getProductionPlan(planVersion: string) {
const options: {
headers?: HttpHeaders | {
[header: string]: string | string[] ;
};
= {
headers: {
"plan": planVersion
}
}
return this.httpClient.get(window["env"]["apiUrl"] + '/imp/productionDetails', options);
Note: but from here i need to take it app.component.ts file and initialize in the constructor and call the api,
but the link can you look it across and help me integrate with dummy api, so i get understanding
like dummy api - with the Flexmonster monster 'pivot' - data is available JSON comming from the server not hardcoded onto the app.component.ts - file
trying from two - days. please help
https://stackblitz.com/edit/angular-ivy-wvxfpc?file=src%2Fapp%2Fapp.component.ts
Hello,
Thank you for reaching out to us.
For CSV
/JSON
data sources, Flexmonster provides the filename
property to load data from the server. Please note that the filename
property should be the URL to your server API returning the data. For example:
dataSource: { type: "json", filename: "URL_to_your_server_API_returning_JSON_or_CSV_data" }
Here is a JSFiddle example for illustration: https://jsfiddle.net/flexmonster/rkprvhhs/. In the example, the data is fetched from the server by providing the server API endpoint URL in the filename
property.
Also, please make sure cross-origin resource sharing (CORS) is enabled. See the following guide for more details: https://www.flexmonster.com/doc/connecting-to-other-data-sources/#!server-side-script.
Please let us know if this helps.
Kind regards,
Vera
Hi Vera,
I have created an Angular demo - for the api integration below is the link actually if you look into the planner-service.ts file I have created a get request line number - 36.
That is the api I am including where the JSON data, coming from the backend in the format of Flexmonster JSON format.
And after that I am including in the app.component.ts file the line number 19 - getList
and after that I am invoking the same getList inside the dataSource{line number : 49},
what my question is still I am not able to get the data, can you look into it and render the data,
or use some example: get api and render in same my stackblitz ts file format so I get an idea.
link below:
https://stackblitz.com/edit/angular-ivy-c6gobs?file=src/app/app.component.ts
Hello,
Thank you for providing a code sample.
The reason why the data is not loading in Flexmonster is that Flexmonster may render on the page before the data is ready. When loading data asynchronously, we suggest the following approach:
setReport()
API call (see docs).
Here is a modified version of the code sample for reference: https://stackblitz.com/edit/angular-ivy-1bbbjm?file=src/app/app.component.ts.
In the example, we load the data with the Angular HTTP client from one of our publically available data endpoints (see line 39
in src/app/planner-service.ts
and lines 34-50
in src/app/app.component.ts
). In addition, we added the HttpClientModule
in app.module.ts
(see line 15
).
Please let us know if this helps to get everything working.
Kind regards,
Vera
Hi Vera,
I will implement and let You know about the output, and also share you the stackblitz.
Thanks for your valuable feedback.
Give me some time to respond on it as the backend logic they are changing.
Thanks again.
@vera
Attaching the stackblitz the current JSON what i have added is not responding kindly help to render
https://stackblitz.com/edit/angular-ivy-93fu57?file=src%2Fapp%2Fapp.component.ts
the below is the response not rendering throughing lot of error
Kindly help very urgent
data:[{
{
"product": "ACILIAN",
"semifinished": "",
"date": "2021-09-29",
"value": 1111,
"type": "FG",
"violationcode": "red"
},
{
"product": "ACILIAN",
"semifinished": "DEA",
"date": "2021-09-28",
"value": 33333,
"type": "SFG",
"violationcode": "yellow"
},
{
"product": "ACILIAN",
"semifinished": "DEN",
"date": "2021-09-30",
"value": 4444,
"type": "SFG",
"violationcode": "red"
},
{
"product": "PQS ",
"semifinished": "",
"date": "2021-09-30",
"value": 55555,
"type": "FG",
"violationcode": "yellow"
},
{
"product": "PQS ",
"semifinished": "JÓDMESAC",
"date": "2021-09-29",
"value": 4444,
"type": "SFG",
"violationcode": "white"
},
{
"product": "PQS ",
"semifinished": "VE",
"date": "2021-09-28",
"value": 66666,
"type": "SFG",
"violationcode": "yellow"
}
}]
Hello,
Thank you for reaching out to us.
We have updated the StackBlitz sample so that Flexmonster renders the provided data: https://stackblitz.com/edit/angular-ivy-tasyen?file=src/app/app.component.ts.
To avoid compilation errors, we highly recommend integrating Flexmonster with Angular according to our guide: https://www.flexmonster.com/doc/integration-with-angular/#!integration.
We hope this helps. Please let us know if the updated StackBlitz sample works on your end.
Kind regards,
Vera
Hi @Vera,
I have one doubt actually If I look at the JSON the line number 112,
violationcode: 'red', but the value always generating yellow where the
violationcode: 'red', - the cells value should be red in color - and one more doubt i have the value line number - 126 (value: 4444,) - but the value reflecting 4 444KG i dont want space
I am attaching a screen shot the reflected stackblitz should look in this format,
sorry I am getting confused on the Flexmonster - Kindly appologize
Hello,
Please note that the displayed color is defined in conditional formatting and only depends on the cell's numeric value. It does not consider the "violationcode" column on your data set. Instead, it applies the defined set of rules:
{
formula: '#value < 5000', //condition
format: {
backgroundColor: '#ff0000', //color to apply
color: '#fff'
},
},
{
formula: '#value > 5000', //condition
format: {
backgroundColor: '#fbd300' //color to apply
}
}
Concerning the number formatting, please add the following rule to remove space after thousands: thousandsSeparator: ""
. It is demonstrated in the StackBlitz example provided earlier: https://stackblitz.com/edit/angular-ivy-tasyen?file=src/app/app.component.ts.
We hope it helps.
Regards,
Illia
@Vera,
I have one doubt, Please do help
https://stackblitz.com/edit/angular-ivy-tasyen?file=src%2Fapp%2Fapp.component.ts
measures: [
{
uniqueName: 'semi',
},
have two value since Acilian have different value, and the same accilian value not reflect semifinshed how to do it since inside measure uniquename:value not accepting
attaching a screenshot it should be something in this format
Hello,
Thank you for your question.
You can set which measures to display by configuring the slice
in the report
object.
The uniqueName
property should be the name of the field in your data set.
Here is our slice configuration guide for more details: https://www.flexmonster.com/doc/slice/.
For example, if you have the following data set:
[
{
"product": "ACILIAN",
"semifinished": "semifinished-146",
"date": "2021-09-29",
"value": 146,
"type": "FG",
"violationcode": "red"
},
{
"product": "ACILIAN",
"semifinished": "semifinished-147",
"date": "2021-09-28",
"value": 146,
"type": "SFG",
"violationcode": "yellow"
}
]
Then, to place the fields the same way as in the provided screenshot, you can define the slice
the following way:
slice: {
rows: [
{ uniqueName: "product", sort: "unsorted",},
{ uniqueName: "semifinished"},
],
columns: [
{uniqueName: "date"},
],
measures: [
{uniqueName: "value"}
]
}
This approach is illustrated in the StackBlitz example: https://stackblitz.com/edit/angular-ivy-tasyen?file=src/app/app.component.ts.
We hope this helps.
Kind regards,
Vera
Hi @Vera Didenko,
Actually, I am sharing the stackblitz link:
https://stackblitz.com/edit/angular-ivy-wgpesj?file=src%2Fapp%2Fplanner-service.ts
I have added the API - get request the API contains the data and that data I am not able to bind it in the HTML - JSON
Kindly can you help on it - tried onReady() {
}
the point is how to use the get API - which has been created and bind it to Flexmonter, when we subscribe the request and do *ngFor in angular the data would reflect but here in Flexmonster it's very much complicated
Please do help planner.service.ts - file I have added the note: 43
the API is : https://dev.bodhee.io/imp/apigateway/api/imp/wip
and contains data I need to render this above API bind data to HTML and render it in the pivot table
but dint work kindly do help
Hello,
Thank you for your reply.
The provided StackBlitz contains three main problems:
Please note that only the third point applies to Flexmonster. The rest of the issues are either specific to Angular or access permissions to the provided data endpoint. Our team provided steps and recommendations on how to fix them as well. To help our team address Flexmonster integration-related points, please post solely the Flexmonster-specific tickets.
Steps to fix the compilation errors:
app.component.ts
:
import { Wipservice } from './planner-service';
WipService
to Wipservice
in the constructor
:
constructor(private wipService: Wipservice, private route: ActivatedRoute) {}
This should fix the "Error in src/app/app.component.ts (17:35) Cannot find name 'WipService'."
compilation error. Next, let's fix the "Error in src/app/app.component.ts (19:62) Cannot find name 'ActivatedRoute'."
compilation error.
app.component.ts
:
import { ActivatedRoute } from '@angular/router';
app.module.ts
:
import { RouterModule } from '@angular/router';
RouterModule.forRoot([])
to the import statements in app.module.ts
:
imports: [
BrowserModule,
FormsModule,
FlexmonsterPivotModule,
HttpClientModule,
RouterModule.forRoot([])
],
This should fix the "Error in src/app/app.component.ts (19:62) Cannot find name 'ActivatedRoute'."
compilation error. Afterward, the project should compile.
Recommendations regarding the data API service:
Please make sure the data is accessible from the API endpoint on your end. For testing purposes, we changed the link to our publically available one: https://cdn.flexmonster.com/data/data.json.
How to load the fetched data into Flexmonster:
The reason why the data is not loading in Flexmonster is that you are loading the data asynchronously and Flexmonster may render on the page before the data is ready. This means Flexmonster will render without the data. Even if the data is loaded into the page later, Flexmonster won't load the data on its own. To load the data in Flexmonster, you need to use one of Flexmonster's API calls: setReport(), connectTo(), or updateData().
For your specific use case, we suggest the following approach:
First, we highly recommend integrating Flexmonster in Angular according to our integration guide: https://www.flexmonster.com/doc/integration-with-angular/#integration.
With this in mind, please remove the pivot
declaration from inside ngOnInit
:
ngOnInit() {
this.planversion = this.route.snapshot.queryParamMap.get('planversion');
this.planId = this.route.snapshot.queryParamMap.get('planId');
this.getList();
let pivot = new Flexmonster({...}) // remove the pivot declaration
}
Instead, define Flexmonster in app.component.html
the following way:
<div class="container-fluid">
<!-- Remove the pivot-container element -->
<div id="pivot-container"></div>
<!-- Use the fm-pivot directive instead -->
<fm-pivot
#pivot
[toolbar]="true"
[height]="550"
[customizeCell]="customizeCell">
</fm-pivot>
</div>
Learn more about the fm-pivot directive
and its attributes in the following guide: https://www.flexmonster.com/doc/fm-pivot-directive-for-angular.
this.wipService.getWip(this.planId, this.planversion).subscribe(
(response: any): void => {
/* Use setReport() API call to pass the recieved data to Flexmonster along with the report configuration. */
this.pivot.flexmonster.setReport({
dataSource: { type: 'json', data: response },
slice: { // your slice config },
formats: { // your number formatting rules },
conditions: { // your conditional formatting rules to color the cells },
options: { // your report options }
});
},
(error) => {...}
);
All of the mentioned steps are demonstrated in the modified version of the provided StackBlitz sample: https://stackblitz.com/edit/angular-ivy-j3epoz?file=src%2Fapp%2Fapp.component.ts.
We hope this helps to get everything working.
Kind regards,
Vera
@Vera Didenko,
Thank you it worked actually, proper documentation in the site would be there to refer it would be good it was not there so that only raised question
Thank you for your valuable response.
Hello,
Thank you for the update.
We are glad to hear that you found our response helpful.
Also, you are always welcome to share documentation improvement ideas, and we will pass them on to our documentation team.
Our team is happy to hear that everything worked.
Kind regards,
Vera