ค้นหาเว็บไซต์

วิธีการวาดแถบข้อมูลสไตล์ Excel ใน Angular?


ฉันต้องการเพิ่มแถบข้อมูลด้านหลังค่าต่าง ๆ ในคอลัมน์ที่เลือกในกริดของฉันเหมือนกับตัวเลือกการจัดรูปแบบตามเงื่อนไขแถบข้อมูลใน Excel

คำตอบนี้แสดงให้ฉันเห็นสิ่งที่ใช้ตารางข้อมูล jquery มีใครสามารถให้แนวคิดสำหรับเรื่องนี้ใน Angular 6 บ้าง

หมายเหตุ: ฉันไม่ได้ใช้กริดของบุคคลที่สามใด ๆ ฉันได้สร้างกริดนี้ขึ้นเอง

มันควรจะดูประมาณแบบนี้

คำตอบ #1

ไม่แน่ใจว่าสถานการณ์ใดที่คุณต้องการเพิ่มสิ่งนี้ แต่ลองดูนี่: https://css-tricks.com/css3-progress-bars/

นี่คือเทคนิค HTML และ CSS แบบคลาสสิกในการสร้างแถบที่คุณสามารถกำหนดความยาวได้

พื้นฐานของมันคือคุณมีองค์ประกอบ "wrapper" ที่กำหนดความยาวสูงสุด และมีองค์ประกอบ "bar" อยู่ภายในที่คุณตั้งค่า width: [0-100]% และสีพื้นหลังของมัน

นี่จะเป็นตัวอย่างเกี่ยวกับวิธีสร้างแถบสีน้ำเงินกว้าง 50%

.wrapper {
    width: 100%;
}

.bar {
    background: blue;
    height: 5px;
}

<div class="wrapper">
    <div class="bar" style="width: 50%"></div>
</div>

ใช้สิ่งนั้นเพื่อสร้างคอมโพเนนต์ Angular ที่คุณสามารถส่งความกว้างของคุณไปให้ได้ ประมาณนี้:

import { Component, Input } from '@angular/core';

@Component({
    selector: 'app-bar',
    template: `
      <div class="wrapper">
          <div class="bar" [style.width]="width"></div>
      </div>
    `,
    styles: [`
    .wrapper {
        width: 100%;
    }
    .bar {
        background: blue;
        height: 5px;
    }
    `]
})

export class BarComponent {
    @Input() width: number;
}

คำตอบ #2

นี่จะทำงานได้

@Component({
  selector: 'my-app',
  template: `
  <div class="holder">
    <div class="bar" *ngFor="let item of data">
      <div #bar class="{{item >= 0 ? 'positive' : 'negative'}}">
        <div class="size" [style.width.px]="getWidth(item, bar)">
          {{item}}
        </div>
      </div>
    </div>
  </div>
  `
})
class AppComponent {  
  maxValue = 100;  
  data: Number[] = [
    10,20,30,-45,90,-90,-80,50,100
  ]

  getWidth(dataItem: number, bar: HTMLElement):number {
    return (parseInt(bar.offsetWidth) / this.maxValue)  * Math.abs(dataItem);
  }
}

CSS :

.holder {
  border: 1px solid black;
  margin: 10px;
  padding: 5px;
  width: 200px;
}

.bar {
  border: 1px solid grey;
  padding: 3px;
  margin: 10px 5px;
  text-align: center;
}

.positive {
  color: blue;
  width: 90px;
  margin-left: 90px;
}

.negative {
  color: red;
  width: 90px;
  margin-right: 90px;

  .size {
    margin-left: auto
  }
}

.size {
  background: green;
}

บทความที่เกี่ยวข้อง