Indicator

You can customize the comment indicator color and indicator size.

Description
app.component.ts
index.html
app.component.html
styles.css
Copy to CodeMine

Before you add the comment, you can set the indicator size for the comment using the indicatorSize method or set the indicator color for the comment using the indicatorColor method. For example:

    sheet.comments.add(5, 5, 'new comment!');
    var comment = sheet.comments.get(5, 5);
    comment.indicatorSize(15);
    comment.indicatorColor('blue');

    //or

    var comment = new GC.Spread.Sheets.Comments.Comment('new comment!');
    comment.indicatorSize(15);
    comment.indicatorColor('blue');
    sheet.comments.add(5, 5, comment);

You can also get size & color of comment indicator

    var comment = sheet.comments.get(5, 5);
    comment.indicatorSize();
    comment.indicatorColor();

You should set size & color in the legal range: If you want to set indicator color, you should set a string type data. If this string cannot be identified as a color (like 'black' '#000' 'rgba(255, 255, 0, 0.5)' can be identified), the comments indicator will be set to the default color black. If you want to set indicator size, you should set a number type data and make sure the data > 1.

Before you add the comment, you can set the indicator size for the comment using the indicatorSize method or set the indicator color for the comment using the indicatorColor method. For example: You can also get size & color of comment indicator You should set size & color in the legal range: If you want to set indicator color, you should set a string type data. If this string cannot be identified as a color (like 'black' '#000' 'rgba(255, 255, 0, 0.5)' can be identified), the comments indicator will be set to the default color black. If you want to set indicator size, you should set a number type data and make sure the data > 1.
import { Component, NgModule, enableProdMode } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { SpreadSheetsModule } from '@mescius/spread-sheets-angular'; import GC from '@mescius/spread-sheets'; import './styles.css'; @Component({ selector: 'app-component', templateUrl: 'src/app.component.html' }) export class AppComponent { color: string; size: number; commentText: string = "comment demo"; spread: GC.Spread.Sheets.Workbook; hostStyle = { width: 'calc(100% - 280px)', height: '100%', overflow: 'hidden', float: 'left' }; initSpread($event: any) { this.spread = $event.spread; let spread = this.spread; spread.suspendPaint(); let sheet = spread.getActiveSheet(); sheet.addSpan(1, 1, 1, 6); sheet.setValue(1, 1, "there is a comment on the upper right corner of the cell"); sheet.comments.add(1, 1, "new comment!"); this.color = sheet.comments.get(1, 1).indicatorColor(); this.size = sheet.comments.get(1, 1).indicatorSize(); spread.resumePaint(); } setColor() { let spread = this.spread; let sheet = spread.getActiveSheet(); sheet.comments.get(1, 1).indicatorColor(this.color); this.color = sheet.comments.get(1, 1).indicatorColor(); } setSize() { let spread = this.spread; let sheet = spread.getActiveSheet(); sheet.comments.get(1, 1).indicatorSize(this.size); this.size = sheet.comments.get(1, 1).indicatorSize(); } } @NgModule({ imports: [BrowserModule, SpreadSheetsModule, FormsModule ], declarations: [AppComponent], exports: [AppComponent], bootstrap: [AppComponent] }) export class AppModule {} enableProdMode(); // Bootstrap application with hash style navigation and global services. platformBrowserDynamic().bootstrapModule(AppModule);
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/en/angular/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <!-- Polyfills --> <script src="$DEMOROOT$/en/angular/node_modules/core-js/client/shim.min.js"></script> <script src="$DEMOROOT$/en/angular/node_modules/zone.js/fesm2015/zone.min.js"></script> <!-- SystemJS --> <script src="$DEMOROOT$/en/angular/node_modules/systemjs/dist/system.js"></script> <script src="systemjs.config.js"></script> <script> // workaround to load 'rxjs/operators' from the rxjs bundle System.import('rxjs').then(function (m) { System.import('@angular/compiler'); System.set(SystemJS.resolveSync('rxjs/operators'), System.newModule(m.operators)); System.import('$DEMOROOT$/en/lib/angular/license.ts'); System.import('./src/app.component'); }); </script> </head> <body> <app-component></app-component> </body> </html>
<div class="sample-tutorial"> <gc-spread-sheets [hostStyle]="hostStyle" (workbookInitialized)="initSpread($event)"> </gc-spread-sheets> <div class="options-container"> <div style="float: right;"> <!-- change indicator options --> <div> <div> <div> <div> <label for="color">Color</label> <input id="color" [(ngModel)]="color"> <input type="button" id="setColor" value="Set Comment Indicator Color" (click)="setColor()"> </div> </div> <div style="height: 30px;"></div> <div> <div> <label for="size">Size</label> <input type="number" id="size" [(ngModel)]="size"> <input type="button" id="setSize" value="Set Comment Indicator Size" (click)="setSize()"> </div> </div> <div style="height: 30px;"></div> </div> </div> </div> </div> </div>
.sample-tutorial { position: relative; height: 100%; overflow: hidden; } .sample-spreadsheets { width: calc(100% - 280px); height: 100%; overflow: hidden; float: left; } .options-container { float: right; width: 280px; padding: 12px; height: 100%; box-sizing: border-box; background: #fbfbfb; overflow: auto; } .option-row { font-size: 14px; padding: 5px; } .option-row { padding-bottom: 5px; } label { display:inline-block; } input{ width: 100%; padding: 4px 0; margin-top: 4px; box-sizing: border-box; } select{ width: 100%; } input[type=checkbox] { display: inline-block; width: auto; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; }
(function (global) { System.config({ transpiler: 'ts', typescriptOptions: { tsconfig: true }, meta: { 'typescript': { "exports": "ts" }, '*.css': { loader: 'css' } }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, // map tells the System loader where to look for things map: { 'core-js': 'npm:core-js/client/shim.min.js', 'zone': 'npm:zone.js/fesm2015/zone.min.js', 'rxjs': 'npm:rxjs/dist/bundles/rxjs.umd.min.js', '@angular/core': 'npm:@angular/core/fesm2022', '@angular/common': 'npm:@angular/common/fesm2022/common.mjs', '@angular/compiler': 'npm:@angular/compiler/fesm2022/compiler.mjs', '@angular/platform-browser': 'npm:@angular/platform-browser/fesm2022/platform-browser.mjs', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/fesm2022/platform-browser-dynamic.mjs', '@angular/common/http': 'npm:@angular/common/fesm2022/http.mjs', '@angular/router': 'npm:@angular/router/fesm2022/router.mjs', '@angular/forms': 'npm:@angular/forms/fesm2022/forms.mjs', 'jszip': 'npm:jszip/dist/jszip.min.js', 'typescript': 'npm:typescript/lib/typescript.js', 'ts': './plugin.js', 'tslib':'npm:tslib/tslib.js', 'css': 'npm:systemjs-plugin-css/css.js', 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', 'systemjs-babel-build':'npm:systemjs-plugin-babel/systemjs-babel-browser.js', '@mescius/spread-sheets-shapes': 'npm:@mescius/spread-sheets-shapes/index.js', '@mescius/spread-sheets-charts': 'npm:@mescius/spread-sheets-charts/index.js', '@mescius/spread-sheets': 'npm:@mescius/spread-sheets/index.js', '@mescius/spread-sheets-angular': 'npm:@mescius/spread-sheets-angular/fesm2020/mescius-spread-sheets-angular.mjs', '@grapecity/jsob-test-dependency-package/react-components': 'npm:@grapecity/jsob-test-dependency-package/react-components/index.js' }, // packages tells the System loader how to load when no filename and/or no extension packages: { src: { defaultExtension: 'ts' }, rxjs: { defaultExtension: 'js' }, "node_modules": { defaultExtension: 'js' }, "node_modules/@angular": { defaultExtension: 'mjs' }, "@mescius/spread-sheets-angular": { defaultExtension: 'mjs' }, '@angular/core': { defaultExtension: 'mjs', main: 'core.mjs' } } }); })(this);