npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ng-athena-web

v0.0.2

Published

1. clone 时需点击 “递归子模块”选项 2. 执行命令: `git submodule add http://47.102.222.172:22691/agile-interaction/ng-dynamic-core.git projects/ng-dynamic-forms/ng-dynamic-core`; [submodule "application-plugin-package"] path = src/assets/plugins url = http://47.10

Downloads

6

Readme

ng-dynamic-core 子模块加载

  1. clone 时需点击 “递归子模块”选项
  2. 执行命令: git submodule add http://47.102.222.172:22691/agile-interaction/ng-dynamic-core.git projects/ng-dynamic-forms/ng-dynamic-core; [submodule "application-plugin-package"] path = src/assets/plugins url = http://47.102.222.172:22691/agile-interaction/application-plugin-package.git git submodule add http://47.102.222.172:22691/agile-interaction/application-plugin-package.git src/assets/plugins;
  3. 其他命令 git submodule init git submodule update

1.基本校验规则

必填校验规则

{
    "key": "required",
    "condition": "true",
    "errorMessage": "xxx字段必填" // 默认值 "必填"
}

最大值 / 最小值 校验规则

{
    "key": "max",
    "condition": "true",
    "value": 999,
    "errorMessage": "xxx字段不能超过999" // 默认值 "不能超过{value}值"
},
{
    "key": "min",
    "condition": "true",
    "value": 20
	"errorMessage": "xxx字段不能小于20" // 默认值 "不能小于20"
}

长度校验规则

{
    "key": "maxLength",
    "condition": "true",
    "value": 40,
    "errorMessage": "xxx字段的长度不能超过40" // 默认值: "长度不能超过40"
},
{
    "key": "minLength",
    "condition": "true",
    "value": 2
	"errorMessage": "xxx字段的长度不能小于2" // 默认值: "长度不能小于2"
}

正则表达式校验规则

{
    "key": "pattern",
    "condition": "true",
    "value": "^[1][1-9]{2}[1-9]{4}[1-9]{4}$",
	"errorMessage": "xxx字段需要符合手机号格式"	// 默认值: "格式错误"
}

动态校验规则

适用于当前字段的校验规则与表单其他字段的值的关系。ex.当新建产品时,当产品分类是app的时候,品号必填。

{
    "key": "required",
    "condition": "good.category ==='app'",
    "errorMessage": "xxx 字段必填"	// 默认值: "必填"
}

自定义校验规则

适用于自定义表单值得关系,比如密码一致那种,不符合angular的内置校验就需要适用这种。

{
	"key": "custom",
    "condition": "register.confirmPassword === register.password",
    "errorMessage": "密码输入不一致"
}

服务端校验规则

适用于当前字段需要连接服务器进行校验

{
    "key": "server",
    "condition": "true",
    "serverUrl": "http://xxx.com/api/xxx"
}

服务端需返回以下格式的数据:

{
	"success": true,
	"message": "名字唯一"
}
或者
{
    "success": false,
	"message": "用户名称不唯一"
}

2. 数据计算规则

适用于当前字段与表单其他字段的计算关系,比如总价 = 单价 * 数量。

{
    "key": "value",
    "condition": "good.price * good.count"
}

再举一个复杂的例子:默认值的设定。 商品的价格单位 [0, 1, 2] 与 续约周期 [0,1, 2] 的关系。

{
	"key": "value",
    "condition": "good.paymentType === 0 ? 1: (good.paymentType === 1 ? 0: (good.paymentType === 2?2: null))"
}

3. 样式规则

隐藏规则

ex1: 默认隐藏

{
	"key": "hidden",
	"condition": "true"
}

ex2. 当contact表单没有值 或者 contact的 是否增加备注的 checkbox 为 false 时,备注字段是隐藏的。也就是说,只有用户点击了 “增加备注” 复选框,备注框才出现。

{
    "key": "hidden",
    "condition": "typeof contact !== 'object' || (contact && contact.addComments !== true)"
}

只读规则

ex1. 默认只读

{
	"key": "readonly",
	"condition": "true"
}

ex2. 当 商品分类没有填入值的时候,商品栏位只读

{
    "key": "readonly",
	"condition": "!good.category"
}

自定义控件样式

{
    "key": "style",
    "condition": "good.category === 'app' ? 'className2': 'className2'"
}

自定义主题

生成自定义文件

  • 所有自定义主题文件放置于app/theme文件夹下,并在angular.json文件的styles列表加入该文件。

    命名规则:theme-主题名称.less

    如:theme-red.less

引入

在app/styles.less中定义主题的className,并引入对应的主题文件

命名规则:theme-主题名称.less

如:

.red-theme {

​ @import "./theme/theme-red.less";

}

常用变量

1.ng-zorro-design

@primary-color: 基础色调

@success-color:警报-成功色调

@processing-color:进度条色调

@error-color: 警报-错误提示色调

@highlight-color:高亮色调

@warning-color:警报-警告色调

@normal-color:正常色调

更多变量名请参考https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/components/style/themes/default.less

2.自定义变量

.card-bg-normal:正常卡片背景色

athena-web
├─ .angular-cli.json.bak
├─ .editorconfig
├─ .git
├─ .gitignore
├─ .gitlab-ci.yml
├─ .gitmodules
├─ .npmrc
├─ .prettierrc
├─ angular.json
├─ e2e
├─ karma.conf.js
├─ license.txt
├─ package.json
├─ projects
│  ├─ ng-dynamic-forms
│  │  ├─ ng-dynamic-core
│  │  │  ├─ .git
│  │  │  ├─ karma.conf.js
│  │  │  ├─ LICENSE
│  │  │  ├─ ng-package.json
│  │  │  ├─ package.json
│  │  │  ├─ README.md
│  │  │  ├─ src
│  │  │  │  ├─ lib
│  │  │  │  │  ├─ component
│  │  │  │  │  │  ├─ dynamic-form-array.component.ts
│  │  │  │  │  │  ├─ dynamic-form-control-container.component.ts
│  │  │  │  │  │  ├─ dynamic-form-control-event.ts
│  │  │  │  │  │  ├─ dynamic-form-control-interface.ts
│  │  │  │  │  │  ├─ dynamic-form-control-with-template-interface.ts
│  │  │  │  │  │  ├─ dynamic-form-control-with-template.component.ts
│  │  │  │  │  │  ├─ dynamic-form-control.component.ts
│  │  │  │  │  │  ├─ dynamic-form-group.component.ts
│  │  │  │  │  │  ├─ dynamic-form-table.component.ts
│  │  │  │  │  │  ├─ dynamic-form.component.ts
│  │  │  │  │  │  └─ dynamic-group.component.ts
│  │  │  │  │  ├─ core.module.ts
│  │  │  │  │  ├─ core.ts
│  │  │  │  │  ├─ decorator
│  │  │  │  │  │  └─ serializable.decorator.ts
│  │  │  │  │  ├─ directive
│  │  │  │  │  │  ├─ dynamic-list.directive.spec.ts
│  │  │  │  │  │  ├─ dynamic-list.directive.ts
│  │  │  │  │  │  ├─ dynamic-template.directive.spec.ts
│  │  │  │  │  │  └─ dynamic-template.directive.ts
│  │  │  │  │  ├─ model
│  │  │  │  │  │  ├─ address
│  │  │  │  │  │  │  └─ dynamic-address.model.ts
│  │  │  │  │  │  ├─ business
│  │  │  │  │  │  │  ├─ activity-description
│  │  │  │  │  │  │  │  └─ dynamic-activity-description.model.ts
│  │  │  │  │  │  │  ├─ activity-title
│  │  │  │  │  │  │  │  └─ dynamic-activity-title.model.ts
│  │  │  │  │  │  │  ├─ approval-description
│  │  │  │  │  │  │  │  └─ dynamic-approval-description.model.ts
│  │  │  │  │  │  │  ├─ area
│  │  │  │  │  │  │  │  └─ dynamic-area.model.ts
│  │  │  │  │  │  │  ├─ attachment
│  │  │  │  │  │  │  │  └─ dynamic-attachment.model.ts
│  │  │  │  │  │  │  ├─ collapse-and-expand
│  │  │  │  │  │  │  │  └─ dynamic-collapse-and-expand.model.ts
│  │  │  │  │  │  │  ├─ count-down
│  │  │  │  │  │  │  │  └─ dynamic-count-down.model.ts
│  │  │  │  │  │  │  ├─ d-array
│  │  │  │  │  │  │  │  └─ dynamic-d-array.model.ts
│  │  │  │  │  │  │  ├─ delivery-reply
│  │  │  │  │  │  │  │  ├─ description
│  │  │  │  │  │  │  │  │  └─ dynamic-description.model.ts
│  │  │  │  │  │  │  │  └─ title
│  │  │  │  │  │  │  │     └─ dynamic-title.model.ts
│  │  │  │  │  │  │  ├─ flow
│  │  │  │  │  │  │  │  └─ dynamic-flow.model.ts
│  │  │  │  │  │  │  ├─ line-table
│  │  │  │  │  │  │  │  └─ dynamic-line-table.model.ts
│  │  │  │  │  │  │  ├─ mechanism_adjustment
│  │  │  │  │  │  │  │  ├─ dynamic-mechanism-adjustment-formula-comparsion.model.ts
│  │  │  │  │  │  │  │  └─ dynamic-mechanism-adjustment-title.model.ts
│  │  │  │  │  │  │  ├─ operation-editor
│  │  │  │  │  │  │  │  └─ operation-editor.model.ts
│  │  │  │  │  │  │  ├─ read-times
│  │  │  │  │  │  │  │  └─ dynamic-read-times.model.ts
│  │  │  │  │  │  │  └─ results-of-quality
│  │  │  │  │  │  │     └─ results-of-quality.model.ts
│  │  │  │  │  │  ├─ card
│  │  │  │  │  │  │  ├─ dynamic-card.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-card.model.ts
│  │  │  │  │  │  ├─ charts
│  │  │  │  │  │  │  └─ dynamic-charts.model.ts
│  │  │  │  │  │  ├─ checkbox
│  │  │  │  │  │  │  ├─ dynamic-checkbox-group.model.spec.ts
│  │  │  │  │  │  │  ├─ dynamic-checkbox-group.model.ts
│  │  │  │  │  │  │  ├─ dynamic-checkbox.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-checkbox.model.ts
│  │  │  │  │  │  ├─ colorpicker
│  │  │  │  │  │  │  ├─ dynamic-colorpicker.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-colorpicker.model.ts
│  │  │  │  │  │  ├─ contact
│  │  │  │  │  │  │  └─ dynamic-contact.model.ts
│  │  │  │  │  │  ├─ datepicker
│  │  │  │  │  │  │  ├─ dynamic-datepicker.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-datepicker.model.ts
│  │  │  │  │  │  ├─ dynamic-binding.model.ts
│  │  │  │  │  │  ├─ dynamic-check-control.model.ts
│  │  │  │  │  │  ├─ dynamic-date-control.model.ts
│  │  │  │  │  │  ├─ dynamic-file-control.model.ts
│  │  │  │  │  │  ├─ dynamic-form-control.model.ts
│  │  │  │  │  │  ├─ dynamic-form-value-control.model.ts
│  │  │  │  │  │  ├─ dynamic-form.model.ts
│  │  │  │  │  │  ├─ dynamic-input-control.model.ts
│  │  │  │  │  │  ├─ dynamic-option-control.model.ts
│  │  │  │  │  │  ├─ dynamic-rule.model.ts
│  │  │  │  │  │  ├─ editor
│  │  │  │  │  │  │  ├─ dynamic-editor.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-editor.model.ts
│  │  │  │  │  │  ├─ file-upload
│  │  │  │  │  │  │  ├─ dynamic-file-upload.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-file-upload.model.ts
│  │  │  │  │  │  ├─ form-array
│  │  │  │  │  │  │  ├─ dynamic-form-array.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-form-array.model.ts
│  │  │  │  │  │  ├─ form-group
│  │  │  │  │  │  │  ├─ dynamic-form-group.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-form-group.model.ts
│  │  │  │  │  │  ├─ grid
│  │  │  │  │  │  │  └─ dynamic-grid.model.ts
│  │  │  │  │  │  ├─ group
│  │  │  │  │  │  │  └─ dynamic-group.model.ts
│  │  │  │  │  │  ├─ img
│  │  │  │  │  │  │  └─ dynamic-img.model.ts
│  │  │  │  │  │  ├─ input
│  │  │  │  │  │  │  ├─ dynamic-input.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-input.model.ts
│  │  │  │  │  │  ├─ label
│  │  │  │  │  │  │  └─ dynamic-label.model.ts
│  │  │  │  │  │  ├─ misc
│  │  │  │  │  │  │  ├─ dynamic-form-control-layout.model.ts
│  │  │  │  │  │  │  ├─ dynamic-form-control-path.model.ts
│  │  │  │  │  │  │  ├─ dynamic-form-control-relation.model.ts
│  │  │  │  │  │  │  └─ dynamic-form-control-validation.model.ts
│  │  │  │  │  │  ├─ mobile
│  │  │  │  │  │  │  └─ group-list.model.ts
│  │  │  │  │  │  ├─ open-window
│  │  │  │  │  │  │  └─ dynamic-open-window.model.ts
│  │  │  │  │  │  ├─ placeholder
│  │  │  │  │  │  │  └─ dynamic-placeholder.model.ts
│  │  │  │  │  │  ├─ radio
│  │  │  │  │  │  │  ├─ dynamic-radio-group.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-radio-group.model.ts
│  │  │  │  │  │  ├─ rating
│  │  │  │  │  │  │  ├─ dynamic-rating.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-rating.model.ts
│  │  │  │  │  │  ├─ select
│  │  │  │  │  │  │  ├─ dynamic-select.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-select.model.ts
│  │  │  │  │  │  ├─ select-api
│  │  │  │  │  │  │  └─ select-api.model.ts
│  │  │  │  │  │  ├─ slider
│  │  │  │  │  │  │  ├─ dynamic-slider.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-slider.model.ts
│  │  │  │  │  │  ├─ split-row
│  │  │  │  │  │  │  └─ split-row.model.ts
│  │  │  │  │  │  ├─ switch
│  │  │  │  │  │  │  ├─ dynamic-switch.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-switch.model.ts
│  │  │  │  │  │  ├─ table
│  │  │  │  │  │  │  └─ dynamic-table.model.ts
│  │  │  │  │  │  ├─ test
│  │  │  │  │  │  ├─ textarea
│  │  │  │  │  │  │  ├─ dynamic-textarea.model.spec.ts
│  │  │  │  │  │  │  └─ dynamic-textarea.model.ts
│  │  │  │  │  │  └─ timepicker
│  │  │  │  │  │     ├─ dynamic-timepicker.model.spec.ts
│  │  │  │  │  │     └─ dynamic-timepicker.model.ts
│  │  │  │  │  ├─ service
│  │  │  │  │  │  ├─ dynamic-form-builder.service.ts
│  │  │  │  │  │  ├─ dynamic-form-component.service.ts
│  │  │  │  │  │  ├─ dynamic-form-data-snapshot.service.ts
│  │  │  │  │  │  ├─ dynamic-form-data.service.ts
│  │  │  │  │  │  ├─ dynamic-form-default-errors.ts
│  │  │  │  │  │  ├─ dynamic-form-layout.service.ts
│  │  │  │  │  │  ├─ dynamic-form-model.service.ts
│  │  │  │  │  │  ├─ dynamic-form-not-required-model.ts
│  │  │  │  │  │  ├─ dynamic-form-relation-matchers.ts
│  │  │  │  │  │  ├─ dynamic-form-relation.service.ts
│  │  │  │  │  │  ├─ dynamic-form-validation.service.ts
│  │  │  │  │  │  ├─ dynamic-form-validators.ts
│  │  │  │  │  │  └─ dynamic-form.service.ts
│  │  │  │  │  └─ utils
│  │  │  │  │     ├─ autofill.utils.spec.ts
│  │  │  │  │     ├─ autofill.utils.ts
│  │  │  │  │     ├─ core.utils.spec.ts
│  │  │  │  │     ├─ core.utils.ts
│  │  │  │  │     ├─ json.utils.spec.ts
│  │  │  │  │     └─ json.utils.ts
│  │  │  │  ├─ public-api.ts
│  │  │  │  └─ test.ts
│  │  │  ├─ tsconfig.lib.json
│  │  │  ├─ tsconfig.spec.json
│  │  │  └─ tslint.json
│  │  └─ ui-ant-web
│  │     ├─ karma.conf.js
│  │     ├─ LICENSE
│  │     ├─ ng-package.json
│  │     ├─ package.json
│  │     ├─ README.md
│  │     ├─ src
│  │     │  ├─ lib
│  │     │  │  ├─ address
│  │     │  │  │  ├─ dynamic-ant-address.component.html
│  │     │  │  │  ├─ dynamic-ant-address.component.ts
│  │     │  │  │  └─ dynamic-ant-address.less
│  │     │  │  ├─ buiness
│  │     │  │  │  ├─ collapse-and-expand
│  │     │  │  │  ├─ d-array
│  │     │  │  │  │  ├─ d-array.component.html
│  │     │  │  │  │  ├─ d-array.component.less
│  │     │  │  │  │  └─ d-array.component.ts
│  │     │  │  │  ├─ delivery-reply
│  │     │  │  │  │  ├─ description
│  │     │  │  │  │  │  ├─ dynamic-description.component.html
│  │     │  │  │  │  │  ├─ dynamic-description.component.less
│  │     │  │  │  │  │  └─ dynamic-description.component.ts
│  │     │  │  │  │  └─ title
│  │     │  │  │  │     ├─ dynamic-title.component.html
│  │     │  │  │  │     ├─ dynamic-title.component.less
│  │     │  │  │  │     └─ dynamic-title.component.ts
│  │     │  │  │  ├─ dynamic-activity-description
│  │     │  │  │  │  ├─ dynamic-activity-description.component.html
│  │     │  │  │  │  ├─ dynamic-activity-description.component.less
│  │     │  │  │  │  └─ dynamic-activity-description.component.ts
│  │     │  │  │  ├─ dynamic-activity-title
│  │     │  │  │  │  ├─ dynamic-activity-title.component.html
│  │     │  │  │  │  ├─ dynamic-activity-title.component.less
│  │     │  │  │  │  └─ dynamic-activity-title.component.ts
│  │     │  │  │  ├─ dynamic-approval-description
│  │     │  │  │  │  ├─ dynamic-approval-description.component.html
│  │     │  │  │  │  ├─ dynamic-approval-description.component.less
│  │     │  │  │  │  └─ dynamic-approval-description.component.ts
│  │     │  │  │  ├─ dynamic-area
│  │     │  │  │  │  ├─ dynamic-area.component.html
│  │     │  │  │  │  ├─ dynamic-area.component.less
│  │     │  │  │  │  └─ dynamic-area.component.ts
│  │     │  │  │  ├─ dynamic-attachment
│  │     │  │  │  │  ├─ dynamic-attachment.component.html
│  │     │  │  │  │  ├─ dynamic-attachment.component.less
│  │     │  │  │  │  └─ dynamic-attachment.component.ts
│  │     │  │  │  ├─ dynamic-countdown
│  │     │  │  │  │  ├─ dynamic-countdown.component.html
│  │     │  │  │  │  ├─ dynamic-countdown.component.less
│  │     │  │  │  │  └─ dynamic-countdown.component.ts
│  │     │  │  │  ├─ dynamic-line-table
│  │     │  │  │  │  ├─ dynamic-line-table.component.html
│  │     │  │  │  │  ├─ dynamic-line-table.component.less
│  │     │  │  │  │  └─ dynamic-line-table.component.ts
│  │     │  │  │  ├─ dynamic-read-times
│  │     │  │  │  │  ├─ dynamic-read-times.component.html
│  │     │  │  │  │  ├─ dynamic-read-times.component.less
│  │     │  │  │  │  └─ dynamic-read-times.component.ts
│  │     │  │  │  ├─ dynamic-result-of-quality
│  │     │  │  │  │  ├─ dynamic-result-of-quality.component.html
│  │     │  │  │  │  ├─ dynamic-result-of-quality.component.less
│  │     │  │  │  │  └─ dynamic-result-of-quality.component.ts
│  │     │  │  │  ├─ flow
│  │     │  │  │  │  ├─ dynamic-flow.component.html
│  │     │  │  │  │  ├─ dynamic-flow.component.less
│  │     │  │  │  │  └─ dynamic-flow.component.ts
│  │     │  │  │  ├─ mechanism_adjustment
│  │     │  │  │  │  ├─ dynamic-mechanism-adjustment-formula-comparerison
│  │     │  │  │  │  │  ├─ dynamic-mechanism-adjustment-formula-comparerison.component.html
│  │     │  │  │  │  │  ├─ dynamic-mechanism-adjustment-formula-comparerison.component.less
│  │     │  │  │  │  │  ├─ dynamic-mechanism-adjustment-formula-comparerison.component.ts
│  │     │  │  │  │  │  └─ percent-input
│  │     │  │  │  │  │     ├─ percent-input.component.html
│  │     │  │  │  │  │     ├─ percent-input.component.less
│  │     │  │  │  │  │     └─ percent-input.component.ts
│  │     │  │  │  │  └─ dynamic-mechanism-adjustment-title
│  │     │  │  │  │     ├─ dynamic-mechanism-adjustment-title.component.html
│  │     │  │  │  │     ├─ dynamic-mechanism-adjustment-title.component.less
│  │     │  │  │  │     └─ dynamic-mechanism-adjustment-title.component.ts
│  │     │  │  │  └─ operation-editor
│  │     │  │  │     ├─ dynamic-operation-editor.component.html
│  │     │  │  │     ├─ dynamic-operation-editor.component.less
│  │     │  │  │     ├─ dynamic-operation-editor.component.ts
│  │     │  │  │     └─ validate.directive.ts
│  │     │  │  ├─ card
│  │     │  │  │  ├─ dynamic-ant-card.component.html
│  │     │  │  │  ├─ dynamic-ant-card.component.less
│  │     │  │  │  └─ dynamic-ant-card.component.ts
│  │     │  │  ├─ charts
│  │     │  │  │  ├─ basic.js
│  │     │  │  │  ├─ dynamic-charts.component.html
│  │     │  │  │  ├─ dynamic-charts.component.less
│  │     │  │  │  └─ dynamic-charts.component.ts
│  │     │  │  ├─ checkbox
│  │     │  │  │  ├─ dynamic-ant-checkbox.component.html
│  │     │  │  │  └─ dynamic-ant-checkbox.component.ts
│  │     │  │  ├─ contact
│  │     │  │  │  ├─ dynamic-ant-contact.component.html
│  │     │  │  │  ├─ dynamic-ant-contact.component.less
│  │     │  │  │  └─ dynamic-ant-contact.component.ts
│  │     │  │  ├─ datepicker
│  │     │  │  │  ├─ dynamic-ant-datepicker.component.html
│  │     │  │  │  └─ dynamic-ant-datepicker.component.ts
│  │     │  │  ├─ directive
│  │     │  │  │  └─ number-style.directive.ts
│  │     │  │  ├─ dynamic-ant-form-control-container.component.html
│  │     │  │  ├─ dynamic-ant-form-control-container.component.less
│  │     │  │  ├─ dynamic-ant-form-control-container.component.ts
│  │     │  │  ├─ dynamic-ant-form-ui.module.ts
│  │     │  │  ├─ dynamic-ant-form.component.html
│  │     │  │  ├─ dynamic-ant-form.component.ts
│  │     │  │  ├─ editor
│  │     │  │  │  ├─ dynamic-ant-editor.component.html
│  │     │  │  │  ├─ dynamic-ant-editor.component.less
│  │     │  │  │  └─ dynamic-ant-editor.component.ts
│  │     │  │  ├─ form-array
│  │     │  │  │  ├─ dynamic-ant-form-array.component.html
│  │     │  │  │  ├─ dynamic-ant-form-array.component.less
│  │     │  │  │  └─ dynamic-ant-form-array.component.ts
│  │     │  │  ├─ form-group
│  │     │  │  │  ├─ dynamic-ant-form-group.component.html
│  │     │  │  │  ├─ dynamic-ant-form-group.component.less
│  │     │  │  │  └─ dynamic-ant-form-group.component.ts
│  │     │  │  ├─ group
│  │     │  │  │  ├─ dynamic-ant-group.component.html
│  │     │  │  │  ├─ dynamic-ant-group.component.less
│  │     │  │  │  └─ dynamic-ant-group.component.ts
│  │     │  │  ├─ group-list
│  │     │  │  │  ├─ dynamic-group-list.component.html
│  │     │  │  │  ├─ dynamic-group-list.component.less
│  │     │  │  │  └─ dynamic-group-list.component.ts
│  │     │  │  ├─ img
│  │     │  │  │  ├─ dynamic-ant-img.component.html
│  │     │  │  │  └─ dynamic-ant-img.component.ts
│  │     │  │  ├─ index.ts
│  │     │  │  ├─ input
│  │     │  │  │  ├─ dynamic-ant-input.component.html
│  │     │  │  │  ├─ dynamic-ant-input.component.less
│  │     │  │  │  └─ dynamic-ant-input.component.ts
│  │     │  │  ├─ label
│  │     │  │  │  ├─ dynamic-ant-label.component.html
│  │     │  │  │  ├─ dynamic-ant-label.component.less
│  │     │  │  │  └─ dynamic-ant-label.component.ts
│  │     │  │  ├─ open-window
│  │     │  │  │  ├─ dynamic-ant-open-window.component.html
│  │     │  │  │  ├─ dynamic-ant-open-window.component.less
│  │     │  │  │  └─ dynamic-ant-open-window.component.ts
│  │     │  │  ├─ placeholder
│  │     │  │  │  ├─ dynamic-ant-placeholder.component.html
│  │     │  │  │  └─ dynamic-ant-placeholder.component.ts
│  │     │  │  ├─ radio-group
│  │     │  │  │  ├─ dynamic-ant-radio-group.component.html
│  │     │  │  │  └─ dynamic-ant-radio-group.component.ts
│  │     │  │  ├─ select
│  │     │  │  │  ├─ dynamic-ant-select.component.html
│  │     │  │  │  └─ dynamic-ant-select.component.ts
│  │     │  │  ├─ select-api
│  │     │  │  │  ├─ dynamic-select-api.component.html
│  │     │  │  │  ├─ dynamic-select-api.component.less
│  │     │  │  │  └─ dynamic-select-api.component.ts
│  │     │  │  ├─ service
│  │     │  │  │  ├─ ant-form-submit.service.ts
│  │     │  │  │  └─ dynamci-ant-form-control-map.ts
│  │     │  │  ├─ special-components
│  │     │  │  │  └─ transfer
│  │     │  │  │     ├─ transfer.component.html
│  │     │  │  │     ├─ transfer.component.less
│  │     │  │  │     ├─ transfer.component.ts
│  │     │  │  │     └─ transfer.service.ts
│  │     │  │  ├─ split-row
│  │     │  │  │  ├─ dynamic-split-row.component.html
│  │     │  │  │  ├─ dynamic-split-row.component.less
│  │     │  │  │  └─ dynamic-split-row.component.ts
│  │     │  │  ├─ table
│  │     │  │  │  ├─ dynamic-ant-table.component.html
│  │     │  │  │  ├─ dynamic-ant-table.component.less
│  │     │  │  │  ├─ dynamic-ant-table.component.ts
│  │     │  │  │  └─ tile-table
│  │     │  │  │     ├─ dynamic-tile-table.component.html
│  │     │  │  │     └─ dynamic-tile-table.component.ts
│  │     │  │  └─ textarea
│  │     │  │     ├─ dynamic-ant-textarea.component.html
│  │     │  │     └─ dynamic-ant-textarea.component.ts
│  │     │  ├─ public-api.ts
│  │     │  └─ test.ts
│  │     ├─ tsconfig.lib.json
│  │     ├─ tsconfig.spec.json
│  │     └─ tslint.json
│  └─ webdpt
│     ├─ analytics
│     │  ├─ index.ts
│     │  ├─ karma.conf.js
│     │  ├─ ng-package.json
│     │  ├─ package.json
│     │  ├─ src
│     │  │  ├─ lib
│     │  │  │  ├─ core
│     │  │  │  ├─ providers
│     │  │  │  ├─ routerlessmodule
│     │  │  │  │  ├─ package.json
│     │  │  │  │  ├─ routerless.module.ts
│     │  │  │  │  ├─ tsconfig-build.json
│     │  │  │  │  └─ tsconfig-esm.json
│     │  │  │  ├─ test.mocks.ts
│     │  │  │  └─ uiroutermodule
│     │  │  │     ├─ package.json
│     │  │  │     ├─ public_api.ts
│     │  │  │     ├─ tsconfig-build.json
│     │  │  │     ├─ tsconfig-esm.json
│     │  │  │     ├─ uirouter.module.ts
│     │  │  │     └─ uirouter.ts
│     │  │  └─ test.ts
│     │  ├─ tsconfig.lib.json
│     │  ├─ tsconfig.spec.json
│     │  └─ tslint.json
│     ├─ builds
│     │  ├─ dw-release.js
│     │  └─ rewrite-package.js
│     ├─ framework
│     │  ├─ account
│     │  ├─ app-title
│     │  ├─ assets
│     │  │  └─ i18n
│     │  │     ├─ en_US
│     │  │     │  └─ dw-basic.d.ts
│     │  │     ├─ zh_CN
│     │  │     │  └─ dw-basic.d.ts
│     │  │     └─ zh_TW
│     │  │        └─ dw-basic.d.ts
│     │  ├─ auth
│     │  │  ├─ action-authorized.service.d.ts
│     │  │  ├─ auth-guard.service.d.ts
│     │  │  ├─ auth-permission-info.service.d.ts
│     │  │  ├─ auth.module.d.ts
│     │  │  ├─ auth.service.d.ts
│     │  │  ├─ authorized.service.d.ts
│     │  │  ├─ interface
│     │  │  │  ├─ action-authorized-service.interface.d.ts
│     │  │  │  ├─ action-authorized.interface.d.ts
│     │  │  │  ├─ auth-function-permission-repository.interface.d.ts
│     │  │  │  ├─ auth.interface.d.ts
│     │  │  │  └─ authorized-service.interface.d.ts
│     │  │  ├─ model
│     │  │  │  └─ authorized.model.d.ts
│     │  │  ├─ public-api.d.ts
│     │  │  ├─ repository
│     │  │  │  └─ auth-function-permission-repository.d.ts
│     │  │  ├─ tenant.service.d.ts
│     │  │  ├─ user-storage.d.ts
│     │  │  └─ user.service.d.ts
│     │  ├─ bundles
│     │  ├─ cmc
│     │  │  ├─ cmc-http-client.d.ts
│     │  │  ├─ cmc-http-error-handler.d.ts
│     │  │  ├─ cmc.module.d.ts
│     │  │  └─ public-api.d.ts
│     │  ├─ components
│     │  ├─ index.ts
│     │  ├─ ng-package.json
│     │  ├─ ng-package.prod.json
│     │  ├─ package.json
│     │  ├─ programs.module.spec.ts
│     │  ├─ programs.module.ts
│     │  ├─ style
│     │  │  └─ index.less
│     │  ├─ tsconfig.lib.json
│     │  └─ tslint.json
│     └─ style
│        ├─ index.less
│        └─ variable.less
├─ protractor.conf.js
├─ proxy.config.json
├─ README.md
├─ src
│  ├─ app
│  │  ├─ app-routing.module.ts
│  │  ├─ app.component.css
│  │  ├─ app.component.ts
│  │  ├─ app.module.ts
│  │  ├─ config
│  │  │  ├─ app-auth-token.ts
│  │  │  ├─ system-config.ts
│  │  │  └─ system.module.ts
│  │  ├─ customization
│  │  │  ├─ customization-routes.ts
│  │  │  ├─ customization-routing.module.ts
│  │  │  ├─ customization.module.ts
│  │  │  └─ style
│  │  │     └─ index.less
│  │  ├─ implementation
│  │  │  ├─ auth
│  │  │  │  ├─ forget
│  │  │  │  │  ├─ forget-routing.module.ts
│  │  │  │  │  ├─ forget.component.css
│  │  │  │  │  ├─ forget.component.html
│  │  │  │  │  ├─ forget.component.spec.ts
│  │  │  │  │  ├─ forget.component.ts
│  │  │  │  │  └─ forget.module.ts
│  │  │  │  ├─ login
│  │  │  │  │  ├─ login.component.html
│  │  │  │  │  ├─ login.component.less
│  │  │  │  │  ├─ login.component.spec.ts
│  │  │  │  │  └─ login.component.ts
│  │  │  │  ├─ login-routing.module.ts
│  │  │  │  └─ login.module.ts
│  │  │  ├─ home
│  │  │  │  ├─ activity-card
│  │  │  │  │  ├─ activity-card.component.html
│  │  │  │  │  ├─ activity-card.component.less
│  │  │  │  │  └─ project-card-list.component.ts
│  │  │  │  ├─ card
│  │  │  │  │  ├─ activity-card-list
│  │  │  │  │  │  ├─ activity-card-list.component.html
│  │  │  │  │  │  ├─ activity-card-list.component.less
│  │  │  │  │  │  └─ project-card-list.component.ts
│  │  │  │  │  ├─ card-category
│  │  │  │  │  │  ├─ card-category.component.html
│  │  │  │  │  │  ├─ card-category.component.less
│  │  │  │  │  │  └─ card-category.component.ts
│  │  │  │  │  └─ task-card-list
│  │  │  │  │     ├─ task-card-list.component.html
│  │  │  │  │     ├─ task-card-list.component.less
│  │  │  │  │     └─ task-card-list.component.ts
│  │  │  │  ├─ home-routing.module.ts
│  │  │  │  ├─ home.component.html
│  │  │  │  ├─ home.component.less
│  │  │  │  ├─ home.component.ts
│  │  │  │  ├─ home.module.ts
│  │  │  │  ├─ service
│  │  │  │  │  ├─ project.service.ts
│  │  │  │  │  ├─ event-log.service.ts
│  │  │  │  │  ├─ search.service.ts
│  │  │  │  │  ├─ task-and-activity-shared.service.ts
│  │  │  │  │  ├─ task-panel.service.ts
│  │  │  │  │  └─ task.service.ts
│  │  │  │  ├─ task-card
│  │  │  │  │  ├─ task-card.component.html
│  │  │  │  │  ├─ task-card.component.less
│  │  │  │  │  └─ task-card-list.component.ts
│  │  │  │  └─ task-time
│  │  │  │     ├─ task-time.component.html
│  │  │  │     ├─ task-time.component.less
│  │  │  │     └─ task-time.component.ts
│  │  │  ├─ http-error-handle.service.ts
│  │  │  ├─ http-interceptor.service.ts
│  │  │  ├─ implementation-routes.ts
│  │  │  ├─ implementation-routing.module.ts
│  │  │  ├─ implementation.module.ts
│  │  │  ├─ language
│  │  │  │  └─ model
│  │  │  │     └─ language.config.ts
│  │  │  ├─ layout
│  │  │  │  ├─ default-layout
│  │  │  │  │  ├─ default-layout.component.html
│  │  │  │  │  ├─ default-layout.component.less
│  │  │  │  │  └─ default-layout.component.ts
│  │  │  │  └─ menu-bar
│  │  │  │     ├─ menu-bar.component.html
│  │  │  │     ├─ menu-bar.component.less
│  │  │  │     └─ menu-bar.component.ts
│  │  │  ├─ menu
│  │  │  │  └─ model
│  │  │  │     ├─ menu.config.ts
│  │  │  │     └─ menu.model.ts
│  │  │  ├─ message
│  │  │  │  ├─ message-center
│  │  │  │  │  ├─ badge-custom
│  │  │  │  │  │  ├─ badge-custom.component.html
│  │  │  │  │  │  ├─ badge-custom.component.less
│  │  │  │  │  │  └─ badge-custom.component.ts
│  │  │  │  │  ├─ message-center.component.html
│  │  │  │  │  ├─ message-center.component.less
│  │  │  │  │  ├─ message-center.component.ts
│  │  │  │  │  ├─ message-list
│  │  │  │  │  │  ├─ message-list.component.html
│  │  │  │  │  │  ├─ message-list.component.less
│  │  │  │  │  │  └─ message-list.component.ts
│  │  │  │  │  ├─ message-time
│  │  │  │  │  │  ├─ message-time.component.html
│  │  │  │  │  │  ├─ message-time.component.less
│  │  │  │  │  │  └─ message-time.component.ts
│  │  │  │  │  ├─ second-level-message
│  │  │  │  │  │  ├─ second-level-message.component.html
│  │  │  │  │  │  ├─ second-level-message.component.less
│  │  │  │  │  │  └─ second-level-message.component.ts
│  │  │  │  │  └─ top-level-message
│  │  │  │  │     ├─ top-level-message.component.html
│  │  │  │  │     ├─ top-level-message.component.less
│  │  │  │  │     └─ top-level-message.component.ts
│  │  │  │  ├─ message-center.service.ts
│  │  │  │  └─ message.service.ts
│  │  │  ├─ program-info
│  │  │  │  └─ model
│  │  │  │     ├─ program-action.config.ts
│  │  │  │     ├─ program-action.model.ts
│  │  │  │     ├─ program-page.config.ts
│  │  │  │     ├─ program-page.model.ts
│  │  │  │     ├─ program.config.ts
│  │  │  │     └─ program.model.ts
│  │  │  ├─ programs
│  │  │  │  ├─ add-task
│  │  │  │  │  ├─ add-task.component.html
│  │  │  │  │  ├─ add-task.component.less
│  │  │  │  │  ├─ add-task.component.ts
│  │  │  │  │  └─ add-task.service.ts
│  │  │  │  ├─ email-layout
│  │  │  │  │  ├─ email-layout.component.html
│  │  │  │  │  ├─ email-layout.component.less
│  │  │  │  │  ├─ email-layout.component.spec.ts
│  │  │  │  │  ├─ email-layout.component.ts
│  │  │  │  │  ├─ email.model.ts
│  │  │  │  │  └─ email.service.ts
│  │  │  │  ├─ open-window
│  │  │  │  │  ├─ open-window.component.html
│  │  │  │  │  ├─ open-window.component.less
│  │  │  │  │  ├─ open-window.component.spec.ts
│  │  │  │  │  ├─ open-window.component.ts
│  │  │  │  │  └─ open-window.service.ts
│  │  │  │  ├─ panel-layout
│  │  │  │  │  ├─ activity-panel
│  │  │  │  │  │  ├─ activity-panel.component.html
│  │  │  │  │  │  ├─ activity-panel.component.less
│  │  │  │  │  │  └─ activity-panel.component.ts
│  │  │  │  │  ├─ common-activity-panel
│  │  │  │  │  │  ├─ activity-panel.service.ts
│  │  │  │  │  │  ├─ common-activity-panel.component.html
│  │  │  │  │  │  ├─ common-activity-panel.component.less
│  │  │  │  │  │  └─ common-activity-panel.component.ts
│  │  │  │  │  ├─ panel-layout.component.html
│  │  │  │  │  ├─ panel-layout.component.less
│  │  │  │  │  ├─ panel-layout.component.ts
│  │  │  │  │  ├─ process
│  │  │  │  │  │  ├─ process.component.html
│  │  │  │  │  │  ├─ process.component.less
│  │  │  │  │  │  └─ process.component.ts
│  │  │  │  │  ├─ sub-project-list
│  │  │  │  │  │  ├─ sub-project-list.component.html
│  │  │  │  │  │  ├─ sub-project-list.component.less
│  │  │  │  │  │  ├─ sub-project-list.component.ts
│  │  │  │  │  │  └─ sub-project-list.service.ts
│  │  │  │  │  └─ task-panel
│  │  │  │  │     ├─ task-panel.component.html
│  │  │  │  │     ├─ task-panel.component.less
│  │  │  │  │     └─ task-panel.component.ts
│  │  │  │  ├─ share
│  │  │  │  │  ├─ activity-share
│  │  │  │  │  │  ├─ activity-share.component.html
│  │  │  │  │  │  └─ activity-share.component.ts
│  │  │  │  │  └─ task-share
│  │  │  │  │     ├─ task-share.component.html
│  │  │  │  │     └─ task-share.component.ts
│  │  │  │  ├─ task-report
│  │  │  │  │  ├─ task-report.component.html
│  │  │  │  │  ├─ task-report.component.less
│  │  │  │  │  ├─ task-report.component.ts
│  │  │  │  │  └─ task-report.service.ts
│  │  │  │  └─ user-setting
│  │  │  │     ├─ user-setting.component.html
│  │  │  │     ├─ user-setting.component.less
│  │  │  │     ├─ user-setting.component.ts
│  │  │  │     └─ user-setting.service.ts
│  │  │  ├─ shared
│  │  │  │  ├─ components
│  │  │  │  │  ├─ message-center
│  │  │  │  │  └─ submit-spin
│  │  │  │  │     ├─ submit-spin.component.html
│  │  │  │  │     ├─ submit-spin.component.less
│  │  │  │  │     ├─ submit-spin.component.ts
│  │  │  │  │     └─ submit-spin.service.ts
│  │  │  │  ├─ directive
│  │  │  │  │  ├─ click-out-side.directive.ts
│  │  │  │  │  └─ number-style.directive.ts
│  │  │  │  ├─ organize-tree-modal
│  │  │  │  │  └─ default.ts
│  │  │  │  ├─ select-modal
│  │  │  │  │  └─ default.ts
│  │  │  │  └─ shared.module.ts
│  │  │  ├─ tab-route
│  │  │  │  └─ model
│  │  │  │     └─ tab-route-config.ts
│  │  │  └─ tools-routing-wrapper.module.ts
│  │  ├─ page-not-found.component.ts
│  │  └─ routes.ts
│  ├─ assets
│  │  ├─ api.dev.json
│  │  ├─ api.json
│  │  ├─ i18n
│  │  │  ├─ en_US
│  │  │  │  ├─ ant-components.json
│  │  │  │  ├─ basic.json
│  │  │  │  ├─ default.json
│  │  │  │  ├─ home.json
│  │  │  │  └─ login.json
│  │  │  ├─ zh_CN
│  │  │  │  ├─ ant-components.json
│  │  │  │  ├─ basic.json
│  │  │  │  ├─ default.json
│  │  │  │  ├─ home.json
│  │  │  │  └─ login.json
│  │  │  └─ zh_TW
│  │  │     ├─ ant-components.json
│  │  │     ├─ basic.json
│  │  │     ├─ default.json
│  │  │     ├─ home.json
│  │  │     └─ login.json
│  │  ├─ icons
│  │  │  ├─ icon-128x128.png
│  │  │  ├─ icon-144x144.png
│  │  │  ├─ icon-152x152.png
│  │  │  ├─ ...
│  │  ├─ img
│  │  │  ├─ activity
│  │  │  │  ├─ agree.png
│  │  │  │  ├─ executeActivity.png
│  │  │  │  ├─ inProgress.png
│  │  │  │  ├─ ...
│  │  │  ├─ dwLogo.svg
│  │  │  ├─ ...
│  ├─ css
│  │  ├─ bootstrap-grid.css
│  │  ├─ global.less
│  │  ├─ index.less
│  │  ├─ reboot.less
│  │  └─ variable.less
│  ├─ environments
│  │  ├─ environment.prod.ts
│  │  └─ environment.ts
│  ├─ favicon.ico
│  ├─ index.html
│  ├─ main.ts
│  ├─ manifest.webmanifest
│  ├─ mock-data
│  │  └─ index.ts
│  ├─ ngsw-config.json
│  ├─ polyfills.ts
│  ├─ test.ts
│  ├─ theme
│  │  └─ theme-default.less
│  ├─ tsconfig.app.json
│  └─ tsconfig.spec.json
├─ themeCssBuild.js
├─ tsconfig.json
└─ tslint.json