thinksboard新建table表格

html文件

<div fxFlex fxLayoutAlign="left top" style="display: block">
<!--  <mat-card appearance="raised" style="max-height: 80vh; overflow-y: auto;">--><div><button mat-raised-button (click)="addColumn()"> Add</button><button mat-raised-button (click)="removeColumn()"> Remove </button><button mat-raised-button (click)="shuffle()"> Shuffle </button></div><table mat-table [dataSource]="data" class="mat-elevation-z8"><ng-container [matColumnDef]="column" *ngFor="let column of displayedColumns"><th mat-header-cell *matHeaderCellDef> {{column}} </th><td mat-cell *matCellDef="let element"> {{element[column]}} </td></ng-container><tr mat-header-row *matHeaderRowDef="columnsToDisplay"></tr><tr mat-row *matRowDef="let row; columns: columnsToDisplay;"></tr></table>
</div>

ts文件

import { Component, OnInit } from '@angular/core';
import { UserService } from '@core/http/user.service';
import { AuthUser, User } from '@shared/models/user.model';
import { Authority } from '@shared/models/authority.enum';
import { PageComponent } from '@shared/components/page.component';
import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { HasConfirmForm } from '@core/guards/confirm-on-exit.guard';
import { ActionAuthUpdateUserDetails } from '@core/auth/auth.actions';
import { environment as env } from '@env/environment';
import { TranslateService } from '@ngx-translate/core';
import { ActionSettingsChangeLanguage } from '@core/settings/settings.actions';
import { ActivatedRoute } from '@angular/router';
import { isDefinedAndNotNull } from '@core/utils';
import { getCurrentAuthUser } from '@core/auth/auth.selectors';
import { AuthService } from '@core/auth/auth.service';export interface PeriodicElement {name: string;position: number;weight: number;symbol: string;
}const ELEMENT_DATA: PeriodicElement[] = [{position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'},{position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'},{position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'},{position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'},{position: 5, name: 'Boron', weight: 10.811, symbol: 'B'},{position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'},{position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'},{position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'},{position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'},{position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'},
];@Component({selector: 'tb-bz',templateUrl: './bz.component.html',styleUrls: ['./bz.component.scss']
})
export class bzComponent extends PageComponent implements OnInit, HasConfirmForm {authorities = Authority;profile: UntypedFormGroup;user: User;languageList = env.supportedLangs;displayedColumns: string[] = ['name', 'weight', 'symbol', 'position'];columnsToDisplay: string[] = this.displayedColumns.slice();data: PeriodicElement[] = [{position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'},{position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'},{position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'},{position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'},{position: 5, name: 'Boron', weight: 10.811, symbol: 'B'},{position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'},{position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'},{position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'},{position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'},{position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'},];private readonly authUser: AuthUser;constructor(protected store: Store<AppState>,private route: ActivatedRoute,private userService: UserService,private authService: AuthService,private translate: TranslateService,public fb: UntypedFormBuilder) {super(store);this.authUser = getCurrentAuthUser(this.store);}ngOnInit() {// this.buildProfileForm();// this.userLoaded(this.route.snapshot.data.user);}addColumn() {console.log(this.data)// const randomColumn = Math.floor(Math.random() * this.displayedColumns.length);let arr = this.dataarr.push({position: this.data.length+1, name: 'Neon', weight: 20.1797, symbol: 'Ne'})this.data = arr.slice();}removeColumn() {if (this.data.length) {this.data.pop();}}shuffle() {let currentIndex = this.columnsToDisplay.length;while (0 !== currentIndex) {let randomIndex = Math.floor(Math.random() * currentIndex);currentIndex -= 1;// Swaplet temp = this.columnsToDisplay[currentIndex];this.columnsToDisplay[currentIndex] = this.columnsToDisplay[randomIndex];this.columnsToDisplay[randomIndex] = temp;}}private buildProfileForm() {this.profile = this.fb.group({email: ['', [Validators.required, Validators.email]],firstName: [''],lastName: [''],phone: [''],language: [''],homeDashboardId: [null],homeDashboardHideToolbar: [true]});}save(): void {this.user = {...this.user, ...this.profile.value};if (!this.user.additionalInfo) {this.user.additionalInfo = {};}this.user.additionalInfo.lang = this.profile.get('language').value;this.user.additionalInfo.homeDashboardId = this.profile.get('homeDashboardId').value;this.user.additionalInfo.homeDashboardHideToolbar = this.profile.get('homeDashboardHideToolbar').value;this.userService.saveUser(this.user).subscribe((user) => {this.userLoaded(user);this.store.dispatch(new ActionAuthUpdateUserDetails({ userDetails: {additionalInfo: {...user.additionalInfo},authority: user.authority,createdTime: user.createdTime,tenantId: user.tenantId,customerId: user.customerId,email: user.email,phone: user.phone,firstName: user.firstName,id: user.id,lastName: user.lastName,} }));this.store.dispatch(new ActionSettingsChangeLanguage({ userLang: user.additionalInfo.lang }));this.authService.refreshJwtToken(false);});}private userLoaded(user: User) {this.user = user;this.profile.reset(user);let lang;let homeDashboardId;let homeDashboardHideToolbar = true;if (user.additionalInfo) {if (user.additionalInfo.lang) {lang = user.additionalInfo.lang;}homeDashboardId = user.additionalInfo.homeDashboardId;if (isDefinedAndNotNull(user.additionalInfo.homeDashboardHideToolbar)) {homeDashboardHideToolbar = user.additionalInfo.homeDashboardHideToolbar;}}if (!lang) {lang = this.translate.currentLang;}this.profile.get('language').setValue(lang);this.profile.get('homeDashboardId').setValue(homeDashboardId);this.profile.get('homeDashboardHideToolbar').setValue(homeDashboardHideToolbar);}confirmForm(): UntypedFormGroup {return this.profile;}isSysAdmin(): boolean {return this.authUser.authority === Authority.SYS_ADMIN;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/39274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6个操作简单又好用的实用办公工具

分享6个操作简单又好用的实用办公工具&#xff0c;手机和电脑上的都有&#xff0c;好好使用可以让工作效率翻倍&#xff01; 1.方方格子 一个大型的的【Excel工具箱】&#xff0c;支持32位和64位Office&#xff0c;可直接作为插件使用&#xff0c;功能覆盖非常全面&#xff0c…

Jmeter 入门指南:从零开始学习

JMeter 是一个非常流行的开源工具&#xff0c;用于进行负载测试。它支持多种网络协议&#xff0c;包括 HTTP、FTP、SMTP、JMS、SOAP、JDBC 等&#xff0c;使其成为在多种应用环境中检测性能瓶颈的理想选择。本文将详细介绍如何利用 JMeter 进行高效的接口自动化测试。 创建和执…

黄金小程序开发的市场分析

在当今数字化时代&#xff0c;互联网技术与传统行业的深度融合正催生出一系列新兴商业模式和市场机遇。黄金行业&#xff0c;作为传统贵金属市场的代表&#xff0c;也在这场变革中迎来了新的发展机遇。黄金小程序的开发&#xff0c;正是这一趋势下的重要产物&#xff0c;它不仅…

Wireshark抓包工具使用

Wireshark抓包工具使用 1. Wireshark工具下载2. Wireshark工具基本配置3. Wireshark过滤语法3.1. 根据源IP过滤3.2. 针对特定的域名进行包过滤3.3. 针对特定的图片格式进行包过滤3.4. 针对特定的Host字段进行过滤4. Wireshark抓包文件保存1. Wireshark工具下载 Windows系统下载…

echarts用pictorialBar实现3D柱状图

先看下效果 实现思路 描绘一个普通的柱状图通过象形柱图&#xff08;pictorialBar&#xff09;在柱状图的顶部添加一个图形类型&#xff08;symbol&#xff09;菱形 代码实现 <template><div id"symbolBar"></div> </template> <scrip…

chunk-vendors.js 优化

问题背景 在 App.vue 加入 web-vitals 性能监控指标并打印 import {onLCP, onINP, onCLS, onTTFB} from web-vitals/attribution;// Measure and log LCP as soon as its available. onLCP(console.log); onINP(console.log); onCLS(console.log); onTTFB(console.log);网页的…

Redis 7.x 系列【14】数据类型之流(Stream)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 XADD2.2 XRANGE2.3 XREVRANGE2.4 XDEL2.5 XLEN2.6 XREAD2.7 XG…

【自用】CentOS7.6 安装 node-RED 4.0.2 教程(各种坑都摆脱的版本)

步骤总览 1.下载安装 nodejs 2.安装并配置 node-RED 3.重启服务器&#xff0c;验证 node-RED 是否安装 and 配置成功 一、下载安装 nodejs 1.下载 nodejs 18 为什么要下载 nodejs 18 呢&#xff1f; 因为 node-RED 4.0.1 支持的最低 nodejs 版本就是 nodejs 18。 当然了&a…

实在智能对话钉钉:宜搭+实在Agent,AI时代的工作方式

比起一个需求需要等产品、技术排期&#xff0c;越来越多的人开始追求把自己武装成「全能战士」&#xff0c;通过低代码工具一搭&#xff0c;一个高效的工作平台便产生了。 宜搭是钉钉自研的低代码应用构建平台&#xff0c;无论是专业开发者还是没有代码基础的业务人员&#xf…

不知几DAY的Symfony---RCE复现

感谢红队大佬老流氓的供稿&#xff0c;此篇文章是针对Symfony框架的一个RCE漏洞复现 ​框架简介 Symfony是一个开源的PHP Web框架&#xff0c;它现在是许多知名 CMS 的核心组件&#xff0c;例如Drupal、Joomla!、eZPlatform&#xff08;以前称为 eZPublish&#xff09;或Bolt。…

和鲸“101”计划领航!和鲸科技携手北中医,共话医学+AI 实验室建设及创新人才培养

为进一步加强医学院校大数据管理与应用、信息管理与信息系统&#xff0c;医学信息工程等专业建设&#xff0c;交流实验室建设、专业发展与人才培养经验&#xff0c;6 月 22 日&#xff0c;由北京中医药大学&#xff08;简称“北中医”&#xff09;主办&#xff0c;上海和今信息…

短剧系统开发:如何让你的创意变成现实

短剧系统开发是一个将创意转化为现实的过程&#xff0c;它涉及多个方面&#xff0c;包括需求分析、系统设计、开发环境搭建、前后端开发、测试与发布等。 1. 需求分析 &#xff08;1&#xff09;明确目标&#xff1a;首先&#xff0c;明确短剧系统的目标和定位&#xff0c;包括…

APP逆向 day9 安卓开发基础1

一.前言 app逆向当然要学安卓基础啦&#xff01;今天我们来教安卓基础当然&#xff0c;安卓基础不会教的很多&#xff0c;比java还要少&#xff0c;还是那句话&#xff0c;了解就好。 二.安卓环境搭建 2.1 安卓介绍 如果做安卓开发 需要会java代码安卓SDK(安卓提供的内置…

Hack The Box-Blazorized

总体思路 Blazor JWT->SPN劫持->登录脚本劫持->DCSync 信息收集&端口利用 nmap -sSVC blazorized.htbStarting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-01 02:37 EDT Nmap scan report for blazorized.htb (10.10.11.22) Host is up (0.30s latency). N…

编译调试swift5.7源码

环境&#xff1a; 电脑&#xff1a;apple m1 pro系统&#xff1a;macOS13Xcode: 14.2Cmake: 3.25.1Ninja: 1.11.1sccache: 0.3.3python: 3.10 (如果你的mac不是这个版本&#xff0c;可以通过 brew install python3.10下载&#xff0c;然后看这篇文章切换到该python版本)swift代…

RK3568驱动指南|第十五篇 I2C-第176章 通过逻辑分析仪认识I2C波形

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

甄选版“论软件系统架构评估”,软考高级论文,系统架构设计师论文

论文真题 对于软件系统,尤其是大规模的复杂软件系统来说,软件的系统架构对于确保最终系统的质量具有十分重要的意义,不恰当的系统架构将给项目开发带来高昂的代价和难以避免的灾难。对一个系统架构进行评估,是为了:分析现有架构存在的潜在风险,检验设计中提出的质量需求,…

mac软件卸载后的残留文件删除 mac如何卸载应用程序

很多人都不知道&#xff0c;mac使用系统方式卸载后会有残留文件未被删除&#xff0c;久而久之就会占用大量的磁盘空间。今天小编就来教大家如何删除mac软件卸载后的残留文件&#xff0c;如果你想不留痕迹的删除&#xff0c;mac又该如何正确卸载应用程序&#xff0c;本文将一一为…

Python 获取字典中的值(八种方法)

Python 字典(dictionary)是一种可变容器模型&#xff0c;可以存储任意数量的任意类型的数据。字典通常用于存储键值对&#xff0c;每个元素由一个键&#xff08;key&#xff09;和一个值(value&#xff09;组成&#xff0c;键和值之间用冒号分隔。 以下是 Python 字典取值的几…

嵌入式软件工程应该学些什么?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;毕业后相当嵌入式软件工程…