26 files renamed
4 files deleted
23 files added
33 files modified
New file |
| | |
| | | node_modules |
| | | npm-debug.log |
| | | Dockerfile* |
| | | docker-compose* |
| | | .dockerignore |
| | | .git |
| | | .gitignore |
| | | README.md |
| | | LICENSE |
| | | .vscode |
| | | _screenshot |
| | | _documents |
| | |
| | | [*] |
| | | charset = utf-8 |
| | | indent_style = space |
| | | indent_size = 2 |
| | | indent_size = 4 |
| | | insert_final_newline = true |
| | | trim_trailing_whitespace = true |
| | | |
| | |
| | | Thumbs.db |
| | | .angulardoc.json |
| | | yarn.lock |
| | | /_nginx/* |
| | | .github/* |
| | | |
New file |
| | |
| | | .github |
| | | _screenshot |
| | | node_modules |
| | | |
| | | dist |
| | | tmp |
New file |
| | |
| | | { |
| | | "extends": "stylelint-config-standard", |
| | | "rules": { |
| | | "comment-empty-line-before": null, |
| | | "declaration-empty-line-before": null, |
| | | "function-comma-newline-after": null, |
| | | "function-name-case": null, |
| | | "function-parentheses-newline-inside": null, |
| | | "function-max-empty-lines": null, |
| | | "function-whitespace-after": null, |
| | | "indentation": null, |
| | | "number-leading-zero": null, |
| | | "number-no-trailing-zeros": null, |
| | | "rule-empty-line-before": null, |
| | | "selector-combinator-space-after": null, |
| | | "selector-list-comma-newline-after": null, |
| | | "selector-pseudo-element-colon-notation": null, |
| | | "unit-no-unknown": null, |
| | | "value-list-max-empty-lines": null, |
| | | "selector-type-no-unknown": null, |
| | | "selector-pseudo-element-no-unknown": [ |
| | | true, |
| | | { |
| | | "ignorePseudoElements": [ |
| | | "ng-deep" |
| | | ] |
| | | } |
| | | ] |
| | | } |
| | | } |
New file |
| | |
| | | sudo: false |
| | | language: node_js |
| | | node_js: |
| | | - "8.5.0" |
| | | |
| | | addons: |
| | | chrome: stable |
| | | |
| | | git: |
| | | depth: 1 |
| | | |
| | | before_install: |
| | | - export CHROME_BIN=chromium-browser |
| | | - export DISPLAY=:99.0 |
| | | - sh -e /etc/init.d/xvfb start |
| | | - npm install -g npm@~5.3.0 |
| | | |
| | | install: |
| | | - npm install |
| | | |
| | | script: |
| | | - npm run test |
| | | - npm run test-coverage |
| | | |
| | | after_success: |
| | | - ./node_modules/.bin/codecov |
| | | |
New file |
| | |
| | | # update no more, please to [release](https://github.com/cipchk/ng-alain/releases) page. |
| | | |
| | | ------------------- |
| | | |
| | | # 0.1.2-beta.10 |
| | | |
| | | + ng-zorro-antd 0.6.x 由于[#504](https://github.com/NG-ZORRO/ng-zorro-antd/issues/504)的原因回滚至最低版本,本次只对 ng-zorro-antd 组件国际化产生影响。 |
| | | |
| | | # 0.1.2-beta.9 |
| | | |
| | | + 新增 ng-zorro-antd 组件的国际化,见 [translator.service](./src/app/core/translator/translator.service.ts) |
| | | + 当前 ng-zorro-antd 为 `rc` 版本,若遇到构建当中存在 `@angular/cdk` 问题,请手动安装。 |
| | | |
| | | > 下周末将发布正式版,这段时间将不会再新增任何功能。 |
| | | |
| | | # 0.1.2-beta.8 |
| | | |
| | | + 增加快捷菜单,见 [menu.service.ts](./src/app/core/services/menu.service.ts) |
| | | + 修复菜单小三角与菜单文本垂直问题 |
| | | + 移除 ng-zorro-antd 已知问题且修复的 bug 链接地址 `header.component.ts`。 |
| | | |
| | | # 0.1.2-beta.7 |
| | | |
| | | + 增加Docker部署 |
| | | + 增加 `.dockerignore`、`docker-compose.yml`、`docker-compose.debug.yml`、`Dockerfile` 文件 |
| | | + 增加 `_nginx` 目录 |
| | | |
| | | # 0.1.2-beta.6 |
| | | |
| | | + 增加全屏布局,见[用户关系图](https://cipchk.github.io/ng-alain/#/data-v/relation) |
| | | + 侧边栏主菜单链接支持 `target` 属性 |
| | | + 基于Front-End-Checklist优化 `index.html` |
| | | |
| | | # 0.1.2-beta.5 |
| | | |
| | | + 新增 `[_src]` 指令,包括以下特性: |
| | | + 支持微信、qq头像规则缩略图规则 |
| | | + 支持移除http&https协议http |
| | | + 支持增加onerror事件 |
| | | + 样式相关: |
| | | + 移除 `text-truncate` 的 `!important`。 |
| | | + 调整 `.simple-table` 的 `img` 边距由 `padding-left` 改变成 `margin-left` 更为合理。 |
| | | + 修复用户EMAIL无法缩短问题,closes [#35](https://github.com/cipchk/ng-alain/issues/35) |
| | | + 修复注册、找回、屏幕页面密码框类型问题,closes [#34](https://github.com/cipchk/ng-alain/issues/34) |
| | | + 调整 `sparkline.directive.ts` 目录。 |
| | | + 调整tsline规则:`curly: false`。 |
| | | |
| | | # 0.1.2-beta.4 |
| | | |
| | | + 修复分页当前页hover文字颜色问题,closes [#31](https://github.com/cipchk/ng-alain/issues/31) |
| | | |
| | | # 0.1.2-beta.3 |
| | | |
| | | + 修复 `file-upload` 按钮由于 `span` 样式关系导致元素无法触发问题,closes [#27](https://github.com/cipchk/ng-alain/issues/27) |
| | | |
| | | # 0.1.2-beta.2 |
| | | |
| | | + 新增 `TitleService` 用于设置页面标题 |
| | | |
| | | # 0.1.2-beta.1 |
| | | |
| | | + 为了更好支持 git-subtree 调整 `styles` 目录位置至 `src/styles/alain/`(以及 `themes.service.ts` 变更) |
| | | |
| | | # 0.1.1-beta.2 |
| | | |
| | | + 支持 `ng-zorro-antd` 部分组件换肤 |
| | | + 修复若干样式细节 |
| | | |
| | | # 0.1.1-beta.1 |
| | | |
| | | 为了 ng-alain 更好的发展(主要是 alain 在其他框架中做准备),最后还是决定由 scss 转为 less,虽然 scss 更优雅这也是当初选择的原因: |
| | | |
| | | + scss 转 less 升级要点 |
| | | + `.angular-cli.json` 中 `styles`、`styleExt` 变更为 `.less` |
| | | + `themes.service.ts` 修改为 `.less` |
| | | + 对所有 `.scss` 文件后缀换成 `.less` |
| | | + **注:** 根据团队反馈,去掉所有业务的 `.less` 文件,这是因为作为后台管理绝大多数页面中无须编写样式,去掉可以提升编译速度。 |
| | | + 新增 `down-file` 指令。 |
| | | + 升级 `ng-zorro-antd` 至最新版本,并移除已经修复BUG的部分样式代码。 |
| | | |
| | | # 0.1.0-beta.1 |
| | | |
| | | **0.1.0版本说明:** |
| | | |
| | | 由于 `nz-menu` 很难满足 ng-alain 的需求,这包括换肤、收缩等问题,因此重写菜单;并且不兼容 `0.0.x` 的版本(已将独立另一分支);主要改变: |
| | | |
| | | + `0.1.0` 影响到整个 `layout`(结构发生改变)、`styles` 文件夹,因此升级时最好移除并重新添加。 |
| | | + 原10套颜色主题,保留5个主要色,且每一色系包括:菜单栏黑、白两色系,新依然保持10个主题色。 |
| | | + 菜单默认 `14px` 字号。 |
| | | + 优化框架样式属性参数化,允许通过 `_alain-custom-variables.scss` 改变主题基本配置;主要是ng-alain,对于 `ng-zorro-antd` 组件(如:字号、间距等)并不支持,这一点我一直在尝试,但成本太高! |
| | | + 顶部快捷菜单与搜索框由改成左中右布局 |
| | | + **实验性功能** 支持自定义 ng-zorro-antd 所有组件字号 |
| | | + closes [#6](https://github.com/cipchk/ng-alain/issues/6) [#12](https://github.com/cipchk/ng-alain/issues/12) [#13](https://github.com/cipchk/ng-alain/issues/13) [#14](https://github.com/cipchk/ng-alain/issues/14) [#23](https://github.com/cipchk/ng-alain/issues/23) |
| | | |
| | | **其他** |
| | | |
| | | + 支持 `ng lint` |
| | | + 从 `app.component.ts` 中移除非必选 `nz-root` |
| | | + 样式: |
| | | + 新增 `badge-dot` 小红点。 |
| | | + 新增 `nz-table` 单元格与文本垂直居中 |
| | | + 新增 `unwrap` 样式,使内容区域与header、aside 无缝 |
| | | + 优化 `width-*`、`modal-*` |
| | | + 默认开启支持IE版本(可通过 `polyfills.ts` 自行关闭) |
| | | + 新 Logo |
| | | + 升级 `angular`、`angular-cli`、`ng-zorro-antd` 至最新版本 |
| | | + 之前有过一个版本回退,以及 `licenses` BUG问题都已经修复。 |
| | | + close [#15](https://github.com/cipchk/ng-alain/issues/15) |
| | | |
| | | # 0.1.0-beta.1 |
| | | |
| | | + 增加 `.simple-table`、`.search-form`、`.fixed-btns` 样式,效果见[门店页](https://cipchk.github.io/ng-alain/#/extras/poi) |
| | | + 增加HTML模板驱动表单视觉反馈,默认未开启,可以在 `_alain-custom-variables.scss` 增加 `$form-state-visual-feedback-enabled: true;` |
| | | + 增加门店页 |
| | | + 增加 `_HttpClient`、`ModalHelper` 类 |
| | | + `_HttpClient` 简化请求以及更好的与 `[nzLoading]` 属性相配合 |
| | | + `ModalHelper` 简化打开与回调处理 |
| | | + 增加Modal相关样式,更便于自定义组件,见[CSS组件补丁类](./_documents/component-patch.md) |
| | | |
| | | # 0.0.1-beta.3 |
| | | |
| | | + **注** 允许通过 `_alain-custom-variables.scss` 覆盖 `styles` 属性值,例如:将内容区域背景色为白色。见 [升级目录结构](./_documents/upgrade.md)。 |
| | | + 增加 `yn`、`keys` 管道,见 [pipe文档](./_documents/pipe.md) |
| | | + 增加 `badge` 样式 |
| | | + 升级 `angular-cli@4.4.1`、`ng-zorro-antd@0.5.1` |
| | | |
| | | # 0.0.1-beta.2 |
| | | |
| | | + 增加 `tree`、`sortable`、`sweetalert` 示例 |
| | | |
| | | # 0.0.1-beta.1 |
| | | |
| | | + 增加顶部左右结构布局(替换 `header-left-right.component` 模板可以体验),新增 `.top-nav-wrap` 样式 |
| | | + 增加自定义样式风格目录结构 |
| | | + 增加利用 `environments` 使开发、生产设置不同参数(例如:后端地址) |
| | | + 修复 `TokenService` 循环依赖问题 |
| | | + 重写模态框示例 |
| | | + 重写 `StartupService` 解决状态码处理BUG |
| | | + 更新 `@angular/cli` 至最新版本,当前版本可能会存在 `licenses` BUG,可增加 ` --extract-licenses=false` 解决,抑或不升级 |
| | | + 优化样式目录结构 |
| | | |
| | | # 0.0.1-beta |
| | | |
| | | + 增加 `core`、`shared` 别名,允许通过 `@shared/shared.module` 访问 `SharedModule` |
| | | + 增加顶部菜单栏 `.full` 样式,方便去掉搜索框菜单右对齐。 |
| | | + 修复首次加载菜单无法选中问题 |
| | | + 优化源代码包体大小,去掉 `ueditor` 示例、清除无效图像资源 |
| | | + 优化首次加载速度方法,仪表盘去掉延迟加载 |
| | | + 优化 `core/services` 目录结构 |
| | | |
| | | # 0.0.1-alpha.7 |
| | | |
| | | + 增加TOKEN拦截器示例 |
| | | + 修复菜单有时出现重复选择问题,closes #8 |
| | | + 升级 `angular-cli`、`ng-zorro-antd` 至最新版本 |
| | | + 由于新版 `angular-cli` 对commonjs都必须指定一个名称,因此重写 `preloader` ( 并在 `main.ts` 中导入它)。 |
| | | |
| | | # 0.0.1-alpha.6 |
| | | |
| | | + 新增应用启动,基础、菜单、用户数据由远程获取。 |
| | | + 新增ACL |
| | | + 修复测试用例 |
| | | + 关闭 #6 #7 |
| | | |
| | | # 0.0.1-alpha.5 |
| | | |
| | | + 新增若干小部件 |
| | | + 新增 `algin`、`img` 相关CSS工具类 |
| | | + 新增10*10种颜色CSS工具类 |
| | | + 升级 `ng-zorro-antd` 至最新版本 |
| | | |
| | | # 0.0.1-alpha.4 |
| | | |
| | | + 新增G2图表 |
| | | + 移除未发布 `nz-avatar` antd补丁样式 |
| | | + 升级 `ng-zorro-antd` 至最新版本 |
| | | + 修复 [#1](https://github.com/cipchk/ng-alain/issues/1) |
| | | |
| | | # 0.0.1-alpha.3 |
| | | |
| | | + 新增路由守卫DEMO |
| | | + 新增设置快捷入口 |
| | | + 新增 `nz-carousel` 指示点颜色补丁 |
| | | + 新增若干小部件 |
| | | |
| | | # 0.0.1-alpha.2 |
| | | |
| | | + 新增 `.list-group` CSS组件 |
| | | + 新增 `_date`、`_currenty` Pipe |
| | | + 新增扩展页:帮助中心、个人设置 |
| | | + 新增 component-patch.md pipe.md 说明 |
| | | |
| | | + 修复顶部搜索框的 `nzFocus`、`nzBlur` 问题。 |
| | | + 调整 `color.service`、`scroll.service` 至 services 目录。 |
New file |
| | |
| | | # Contributing to ng-alain |
| | | |
| | | We would love for you to contribute to ng-alain and help make it even better than it is |
| | | today! As a contributor, here are the guidelines we would like you to follow: |
| | | |
| | | - [Issues and Bugs](#issue) |
| | | - [Feature Requests](#feature) |
| | | - [Submission Guidelines](#submit) |
| | | - [Coding Rules](#rules) |
| | | - [Commit Message Guidelines](#commit) |
| | | |
| | | ## <a name="issue"></a> Found a Bug? |
| | | If you find a bug in the source code, you can help us by |
| | | [submitting an issue](#submit-issue) to our [GitHub Repository][github]. Even better, you can |
| | | [submit a Pull Request](#submit-pr) with a fix. |
| | | |
| | | ## <a name="feature"></a> Missing a Feature? |
| | | You can *request* a new feature by [submitting an issue](#submit-issue) to our GitHub |
| | | Repository. If you would like to *implement* a new feature, please submit an issue with |
| | | a for your work first, to be sure that we can use it. |
| | | Please consider what kind of change it is: |
| | | |
| | | * For a **Major Feature**, first open an issue and outline your proposal so that it can be |
| | | discussed. This will also allow us to better coordinate our efforts, prevent duplication of work, |
| | | and help you to craft the change so that it is successfully accepted into the project. |
| | | * **Small Features** can be crafted and directly [submitted as a Pull Request](#submit-pr). |
| | | |
| | | ## <a name="submit"></a> Submission Guidelines |
| | | |
| | | ### <a name="submit-issue"></a> Submitting an Issue |
| | | |
| | | Before you submit an issue, please search the issue tracker, maybe an issue for your problem already exists and the discussion might inform you of workarounds readily available. |
| | | |
| | | We want to fix all the issues as soon as possible, but before fixing a bug we need to reproduce and confirm it. In order to reproduce bugs we will systematically ask you to provide a minimal reproduction scenario using http://plnkr.co. Having a live, reproducible scenario gives us wealth of important information without going back & forth to you with additional questions like: |
| | | |
| | | - version of ng-alain used |
| | | - 3rd-party libraries and their versions |
| | | - and most importantly - a use-case that fails |
| | | |
| | | A minimal reproduce scenario using http://plnkr.co/ allows us to quickly confirm a bug (or point out coding problem) as well as confirm that we are fixing the right problem. If plunker is not a suitable way to demonstrate the problem (for example for issues related to our npm packaging), please create a standalone git repository demonstrating the problem. |
| | | |
| | | We will be insisting on a minimal reproduce scenario in order to save maintainers time and ultimately be able to fix more bugs. Interestingly, from our experience users often find coding problems themselves while preparing a minimal plunk. We understand that sometimes it might be hard to extract essentials bits of code from a larger code-base but we really need to isolate the problem before we can fix it. |
| | | |
| | | Unfortunately we are not able to investigate / fix bugs without a minimal reproduction, so if we don't hear back from you we are going to close an issue that don't have enough info to be reproduced. |
| | | |
| | | You can file new issues by filling out our [new issue form](https://github.com/cipchk/ng-alain/issues/new). |
| | | |
| | | |
| | | ### <a name="submit-pr"></a> Submitting a Pull Request (PR) |
| | | Before you submit your Pull Request (PR) consider the following guidelines: |
| | | |
| | | * Search [GitHub](https://github.com/cipchk/ng-alain/pulls) for an open or closed PR |
| | | that relates to your submission. You don't want to duplicate effort. |
| | | * Make your changes in a new git branch: |
| | | |
| | | ```shell |
| | | git checkout -b my-fix-branch master |
| | | ``` |
| | | |
| | | * Create your patch, **including appropriate test cases**. |
| | | * Follow our [Coding Rules](#rules). |
| | | * Run the full ng-alain test suite <!-- , as described in the [developer documentation][dev-doc] -->, and ensure that all tests pass. |
| | | * Commit your changes using a descriptive commit message that follows our |
| | | [commit message conventions](#commit). Adherence to these conventions |
| | | is necessary because release notes are automatically generated from these messages. |
| | | |
| | | ```shell |
| | | git commit -a |
| | | ``` |
| | | Note: the optional commit `-a` command line option will automatically "add" and "rm" edited files. |
| | | |
| | | * Push your branch to GitHub: |
| | | |
| | | ```shell |
| | | git push origin my-fix-branch |
| | | ``` |
| | | |
| | | * In GitHub, send a pull request to `ng-alain:master`. |
| | | * If we suggest changes then: |
| | | * Make the required updates. |
| | | * Re-run the ng-alain test suites to ensure tests are still passing. |
| | | * Rebase your branch and force push to your GitHub repository (this will update your Pull Request): |
| | | |
| | | ```shell |
| | | git rebase master -i |
| | | git push -f |
| | | ``` |
| | | |
| | | That's it! Thank you for your contribution! |
| | | |
| | | #### After your pull request is merged |
| | | |
| | | After your pull request is merged, you can safely delete your branch and pull the changes |
| | | from the main (upstream) repository: |
| | | |
| | | * Delete the remote branch on GitHub either through the GitHub web UI or your local shell as follows: |
| | | |
| | | ```shell |
| | | git push origin --delete my-fix-branch |
| | | ``` |
| | | |
| | | * Check out the master branch: |
| | | |
| | | ```shell |
| | | git checkout master -f |
| | | ``` |
| | | |
| | | * Delete the local branch: |
| | | |
| | | ```shell |
| | | git branch -D my-fix-branch |
| | | ``` |
| | | |
| | | * Update your master with the latest upstream version: |
| | | |
| | | ```shell |
| | | git pull --ff upstream master |
| | | ``` |
| | | |
| | | ## <a name="rules"></a> Coding Rules |
| | | To ensure consistency throughout the source code, keep these rules in mind as you are working: |
| | | |
| | | * All features or bug fixes **must be tested** by one or more specs (unit-tests). |
| | | * All public API methods **must be documented**. |
| | | |
| | | ## <a name="commit"></a> Commit Message Guidelines |
| | | |
| | | We have very precise rules over how our git commit messages can be formatted. This leads to **more |
| | | readable messages** that are easy to follow when looking through the **project history**. But also, |
| | | we use the git commit messages to **generate the ng-alain change log**. |
| | | |
| | | ### Commit Message Format |
| | | Each commit message consists of a **header**, a **body** and a **footer**. The header has a special |
| | | format that includes a **type**, a **scope** and a **subject**: |
| | | |
| | | ``` |
| | | <type>(<scope>): <subject> |
| | | <BLANK LINE> |
| | | <body> |
| | | <BLANK LINE> |
| | | <footer> |
| | | ``` |
| | | |
| | | The **header** is mandatory and the **scope** of the header is optional. |
| | | |
| | | Any line of the commit message cannot be longer 100 characters! This allows the message to be easier |
| | | to read on GitHub as well as in various git tools. |
| | | |
| | | Footer should contain a [closing reference to an issue](https://help.github.com/articles/closing-issues-via-commit-messages/) if any. |
| | | |
| | | Samples: (even more [samples](https://github.com/cipchk/ng-alain/commits/master)) |
| | | |
| | | ``` |
| | | docs(changelog): update change log to beta.5 |
| | | ``` |
| | | ``` |
| | | fix(release): need to depend on latest rxjs and zone.js |
| | | |
| | | The version in our package.json gets copied to the one we publish, and users need the latest of these. |
| | | ``` |
| | | |
| | | ### Revert |
| | | If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. In the body it should say: `This reverts commit <hash>.`, where the hash is the SHA of the commit being reverted. |
| | | |
| | | ### Type |
| | | Must be one of the following: |
| | | |
| | | * **build**: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) |
| | | * **ci**: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs) |
| | | * **docs**: Documentation only changes |
| | | * **feat**: A new feature |
| | | * **fix**: A bug fix |
| | | * **perf**: A code change that improves performance |
| | | * **refactor**: A code change that neither fixes a bug nor adds a feature |
| | | * **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) |
| | | * **test**: Adding missing tests or correcting existing tests |
| | | |
| | | ### Subject |
| | | The subject contains succinct description of the change: |
| | | |
| | | * use the imperative, present tense: "change" not "changed" nor "changes" |
| | | * don't capitalize first letter |
| | | * no dot (.) at the end |
| | | |
| | | ### Body |
| | | Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes". |
| | | The body should include the motivation for the change and contrast this with previous behavior. |
| | | |
| | | ### Footer |
| | | The footer should contain any information about **Breaking Changes** and is also the place to |
| | | reference GitHub issues that this commit **Closes**. |
| | | |
| | | **Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this. |
| | | |
| | | A detailed explanation can be found in this [document][commit-message-format]. |
| | | |
| | | |
| | | [commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit# |
| | | [github]: https://github.com/cipchk/ng-alain |
| | | [plunker]: http://plnkr.co/edit |
New file |
| | |
| | | # STEP 1: Build |
| | | FROM node:8-alpine as builder |
| | | |
| | | LABEL authors="cipchk <cipchk@qq.com>" |
| | | |
| | | COPY package.json package-lock.json ./ |
| | | |
| | | RUN npm set progress=false && npm config set depth 0 && npm cache clean --force |
| | | RUN npm i && mkdir /ng-alain && cp -R ./node_modules ./ng-alain |
| | | |
| | | WORKDIR /ng-alain |
| | | |
| | | COPY . . |
| | | |
| | | RUN npm run build |
| | | |
| | | # STEP 2: Setup |
| | | FROM nginx:1.13.5-alpine |
| | | |
| | | COPY --from=builder /ng-alain/_nginx/default.conf /etc/nginx/conf.d/default.conf |
| | | COPY --from=builder /ng-alain/_nginx/ssl/* /etc/nginx/ssl/ |
| | | |
| | | RUN rm -rf /usr/share/nginx/html/* |
| | | |
| | | COPY --from=builder /ng-alain/dist /usr/share/nginx/html |
| | | |
| | | CMD [ "nginx", "-g", "daemon off;"] |
New file |
| | |
| | | MIT License |
| | | |
| | | Copyright (c) 2017 卡色 |
| | | |
| | | Permission is hereby granted, free of charge, to any person obtaining a copy |
| | | of this software and associated documentation files (the "Software"), to deal |
| | | in the Software without restriction, including without limitation the rights |
| | | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| | | copies of the Software, and to permit persons to whom the Software is |
| | | furnished to do so, subject to the following conditions: |
| | | |
| | | The above copyright notice and this permission notice shall be included in all |
| | | copies or substantial portions of the Software. |
| | | |
| | | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| | | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| | | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| | | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| | | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| | | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| | | SOFTWARE. |
New file |
| | |
| | | [](https://travis-ci.org/cipchk/ng-alain) |
| | | [](https://david-dm.org/cipchk/ng-alain) |
| | | [](https://www.npmjs.com/package/ng-alain) |
| | | |
| | | # ng-alain |
| | | |
| | | 一套基于 [Ng-zorro-antd](https://github.com/NG-ZORRO/ng-zorro-antd)【ANT DESIGN】 的企业后台模板。 |
| | | |
| | | [README in English](README.md) |
| | | |
| | | [DEMO](https://cipchk.github.io/ng-alain/) |
| | | |
| | | ## 快速入门 |
| | | |
| | | 确保 `node` 版本 >= 6.9.0 且 `npm` 版本 >= 3 以上。 |
| | | |
| | | `ng-alain` 本身并非组件库,只是一个单纯的企业后台模板,你可以**直接克隆**到你的本地,然后立即进入实际开发。 |
| | | |
| | | ```bash |
| | | # clone a blank ng-alain repo, just only basic function |
| | | # --depth 1 removes all but one .git commit history |
| | | git clone -b blank --depth 1 https://github.com/cipchk/ng-alain.git |
| | | # or full master branch |
| | | git clone --depth 1 https://github.com/cipchk/ng-alain.git |
| | | |
| | | # change directory |
| | | cd ng-alain |
| | | |
| | | # install npm package |
| | | npm install |
| | | # in china please use cnpm (https://github.com/cnpm/cnpm) |
| | | # cnpm install |
| | | |
| | | # start the serve |
| | | npm start |
| | | |
| | | # use HMR |
| | | npm run serve:hmr |
| | | ``` |
| | | |
| | | > [vscode] 建议安装 [ng-zorro-vscode](https://marketplace.visualstudio.com/items?itemName=cipchk.ng-zorro-vscode) 插件,含 `nz-alain-*` 代码片断。 |
| | | |
| | | |
| | | ## Links |
| | | |
| | | + [文档](http://ng-alain.com) |
| | | + [@delon](https://github.com/cipchk/delon) |
| | | + [DEMO](https://cipchk.github.io/ng-alain/) |
| | | |
| | | ## Delon |
| | | |
| | | [delong](https://github.com/cipchk/delon) 是基于 Ant Design 设计理念的企业级中后台前端业务型组件库。 |
| | | |
| | | [](https://travis-ci.org/cipchk/delon) |
| | | [](https://david-dm.org/cipchk/delon) |
| | | [](https://david-dm.org/cipchk/delon?type=dev) |
| | | |
| | | [](https://www.npmjs.com/package/@delon/theme) |
| | | [](https://www.npmjs.com/package/@delon/theme) |
| | | |
| | | | package name | version | next version | |
| | | | ------------ |:-----:|:----------:| |
| | | | @delon/theme | [](https://www.npmjs.com/package/@delon/theme) | [](https://www.npmjs.com/package/@delon/theme) | |
| | | | @delon/abc | [](https://www.npmjs.com/package/@delon/abc) | [](https://www.npmjs.com/package/@delon/abc) | |
| | | | @delon/acl | [](https://www.npmjs.com/package/@delon/acl) | [](https://www.npmjs.com/package/@delon/acl) | |
| | | | @delon/auth | [](https://www.npmjs.com/package/@delon/auth) | [](https://www.npmjs.com/package/@delon/auth) | |
| | | | @delon/mock | [](https://www.npmjs.com/package/@delon/mock) | [](https://www.npmjs.com/package/@delon/mock) | |
| | | | @delon/cache | - | [](https://www.npmjs.com/package/@delon/cache) | |
| | | | @delon/cli | - | [](https://www.npmjs.com/package/@delon/cli) | |
| | | |
| | | ## Architecture |
| | | |
| | |  |
| | | |
| | | ## 特性 |
| | | |
| | | + 基于 `ng-zorro-antd` |
| | | + 响应式 |
| | | + 国际化 |
| | | + ACL访问控制 |
| | | + 延迟加载及良好的启用画面 |
| | | + 良好的UI路由设计 |
| | | + 十种颜色版本 |
| | | + Less预编译 |
| | | + 良好的目录组织结构 |
| | | + 简单升级 |
| | | + 模块热替换 |
| | | + 支持[Docker](_documents/docker.md)部署 |
| | | |
| | | ## 应用截图 |
| | | |
| | |  |
| | |  |
| | |  |
| | | |
| | | ## Troubleshooting |
| | | |
| | | Please follow this guidelines when reporting bugs and feature requests: |
| | | |
| | | 1. Use [GitHub Issues](https://github.com/cipchk/ng-alain/issues) board to report bugs and feature requests (not our email address) |
| | | 2. Please **always** write steps to reproduce the error. That way we can focus on fixing the bug, not scratching our heads trying to reproduce it. |
| | | |
| | | Thanks for understanding! |
| | | |
| | | ### License |
| | | |
| | | The MIT License (see the [LICENSE](https://github.com/cipchk/ng-alain/blob/master/LICENSE) file for the full text) |
| | |
| | | # ScreenFrontend |
| | | [](https://travis-ci.org/cipchk/ng-alain) |
| | | [](https://david-dm.org/cipchk/ng-alain) |
| | | [](https://www.npmjs.com/package/ng-alain) |
| | | |
| | | This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.6.0. |
| | | # ng-alain |
| | | |
| | | ## Development server |
| | | [Ng-zorro-antd](https://github.com/NG-ZORRO/ng-zorro-antd) admin panel front-end framework. |
| | | |
| | | Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. |
| | | 更多信息见[中文 README](README-zh_CN.md) |
| | | |
| | | ## Code scaffolding |
| | | [DEMO](https://cipchk.github.io/ng-alain/) |
| | | |
| | | Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. |
| | | ## Quick start |
| | | |
| | | ## Build |
| | | Make sure you have Node version >= 6.9.0 and NPM >= 3 or higher. |
| | | |
| | | Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. |
| | | ```bash |
| | | # clone a blank ng-alain repo, just only basic function |
| | | # --depth 1 removes all but one .git commit history |
| | | git clone -b blank --depth 1 https://github.com/cipchk/ng-alain.git |
| | | # or full master branch |
| | | git clone --depth 1 https://github.com/cipchk/ng-alain.git |
| | | |
| | | ## Running unit tests |
| | | # change directory |
| | | cd ng-alain |
| | | |
| | | Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). |
| | | # install npm package |
| | | npm install |
| | | # in china please use cnpm (https://github.com/cnpm/cnpm) |
| | | # cnpm install |
| | | |
| | | ## Running end-to-end tests |
| | | # start the serve |
| | | npm start |
| | | |
| | | Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). |
| | | # use HMR |
| | | npm run serve:hmr |
| | | ``` |
| | | |
| | | ## Further help |
| | | > [vscode] recommended install [ng-zorro-vscode](https://marketplace.visualstudio.com/items?itemName=cipchk.ng-zorro-vscode) plugins, that includes `nz-alain-*` snippets. |
| | | |
| | | To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). |
| | | ## Links |
| | | |
| | | + [Document](http://ng-alain.com) |
| | | + [@delon](https://github.com/cipchk/delon) |
| | | + [DEMO](https://cipchk.github.io/ng-alain/) |
| | | |
| | | ## Delon |
| | | |
| | | [delong](https://github.com/cipchk/delon) is a production-ready solution for admin business components packages, Built on the design principles developed by Ant Design. |
| | | |
| | | [](https://travis-ci.org/cipchk/delon) |
| | | [](https://david-dm.org/cipchk/delon) |
| | | [](https://david-dm.org/cipchk/delon?type=dev) |
| | | |
| | | [](https://www.npmjs.com/package/@delon/theme) |
| | | [](https://www.npmjs.com/package/@delon/theme) |
| | | |
| | | | package name | version | next version | |
| | | | ------------ |:-----:|:----------:| |
| | | | @delon/theme | [](https://www.npmjs.com/package/@delon/theme) | [](https://www.npmjs.com/package/@delon/theme) | |
| | | | @delon/abc | [](https://www.npmjs.com/package/@delon/abc) | [](https://www.npmjs.com/package/@delon/abc) | |
| | | | @delon/acl | [](https://www.npmjs.com/package/@delon/acl) | [](https://www.npmjs.com/package/@delon/acl) | |
| | | | @delon/auth | [](https://www.npmjs.com/package/@delon/auth) | [](https://www.npmjs.com/package/@delon/auth) | |
| | | | @delon/mock | [](https://www.npmjs.com/package/@delon/mock) | [](https://www.npmjs.com/package/@delon/mock) | |
| | | | @delon/cache | - | [](https://www.npmjs.com/package/@delon/cache) | |
| | | | @delon/cli | - | [](https://www.npmjs.com/package/@delon/cli) | |
| | | |
| | | ## Architecture |
| | | |
| | |  |
| | | |
| | | ## Features |
| | | |
| | | + `ng-zorro-antd` based |
| | | + Responsive Layout |
| | | + I18n |
| | | + ACL |
| | | + Lazy load Assets |
| | | + UI Router States |
| | | + Multiple color options |
| | | + Less preprocessor |
| | | + Well organized & commented code |
| | | + Simple upgrade |
| | | + Hot Module Replacement |
| | | + Support [Docker](_documents/docker.md) deploy |
| | | |
| | | ## App Shots |
| | | |
| | |  |
| | |  |
| | |  |
| | | |
| | | ## Troubleshooting |
| | | |
| | | Please follow this guidelines when reporting bugs and feature requests: |
| | | |
| | | 1. Use [GitHub Issues](https://github.com/cipchk/ng-alain/issues) board to report bugs and feature requests (not our email address) |
| | | 2. Please **always** write steps to reproduce the error. That way we can focus on fixing the bug, not scratching our heads trying to reproduce it. |
| | | |
| | | Thanks for understanding! |
| | | |
| | | ### License |
| | | |
| | | The MIT License (see the [LICENSE](https://github.com/cipchk/ng-alain/blob/master/LICENSE) file for the full text) |
New file |
| | |
| | | [Document](http://ng-alain.com/docs/mock) |
File was renamed from _mock/api.service.ts |
| | |
| | | import { MockRequest } from '@delon/mock'; |
| | | // region: mock data |
| | | |
| | | const titles = [ |
| | | 'Alipay', |
| | | 'Angular', |
| | |
| | | '仲尼' |
| | | ]; |
| | | |
| | | export function getFakeList(count: number = 20): any[] { |
| | | // endregion |
| | | |
| | | function getFakeList(count: number = 20): any[] { |
| | | const list = []; |
| | | for (let i = 0; i < count; i += 1) { |
| | | list.push({ |
| | |
| | | return list; |
| | | } |
| | | |
| | | export function getNotice(): any[] { |
| | | function getNotice(): any[] { |
| | | return [ |
| | | { |
| | | id: 'xxx1', |
| | |
| | | ]; |
| | | } |
| | | |
| | | export function getActivities(): any[] { |
| | | function getActivities(): any[] { |
| | | return [ |
| | | { |
| | | id: 'trend-1', |
| | |
| | | }, |
| | | ]; |
| | | } |
| | | |
| | | export const APIS = { |
| | | '/api/list': (req: MockRequest) => getFakeList(req.queryString.count), |
| | | '/api/notice': () => getNotice(), |
| | | '/api/activities': () => getActivities() |
| | | }; |
File was renamed from _mock/chart.service.ts |
| | |
| | | // tslint:disable |
| | | |
| | | import * as Mock from 'mockjs'; |
| | | import * as moment from "moment"; |
| | | |
| | | // mock data |
| | | // region: mock data |
| | | |
| | | const visitData = []; |
| | | const beginDay = new Date().getTime(); |
| | | |
| | |
| | | }); |
| | | }); |
| | | |
| | | export const getFakeChartData = { |
| | | visitData, |
| | | visitData2, |
| | | salesData, |
| | | searchData, |
| | | offlineData, |
| | | offlineChartData, |
| | | salesTypeData, |
| | | salesTypeDataOnline, |
| | | salesTypeDataOffline, |
| | | radarData |
| | | }; |
| | | // endregion |
| | | |
| | | export default { |
| | | getFakeChartData |
| | | export const CHARTS = { |
| | | '/chart': Object.assign({}, { |
| | | visitData, |
| | | visitData2, |
| | | salesData, |
| | | searchData, |
| | | offlineData, |
| | | offlineChartData, |
| | | salesTypeData, |
| | | salesTypeDataOnline, |
| | | salesTypeDataOffline, |
| | | radarData |
| | | }), |
| | | '/chart/visit': Object.assign([], visitData), |
| | | '/chart/tags': Mock.mock({ |
| | | 'list|100': [{ name: '@city', 'value|1-100': 150, 'type|0-2': 1 }] |
| | | }) |
| | | }; |
File was renamed from _mock/profile.service.ts |
| | |
| | | }, |
| | | ]; |
| | | |
| | | export function getProfileBasicData() { |
| | | return { |
| | | basicGoods: basicGoods, |
| | | basicProgress: basicProgress |
| | | }; |
| | | } |
| | | |
| | | export function getProfileAdvancedData() { |
| | | return { |
| | | advancedOperation1: advancedOperation1, |
| | | advancedOperation2: advancedOperation2, |
| | | advancedOperation3: advancedOperation3 |
| | | }; |
| | | } |
| | | |
| | | export function getProfileDefault() { |
| | | return { |
| | | getProfileBasicData: getProfileBasicData, |
| | | getProfileAdvancedData: getProfileAdvancedData |
| | | }; |
| | | } |
| | | export const PROFILES = { |
| | | 'GET /profile/progress': basicProgress, |
| | | 'GET /profile/goods': basicGoods, |
| | | 'GET /profile/advanced': { advancedOperation1, advancedOperation2, advancedOperation3 } |
| | | }; |
File was renamed from _mock/rule.service.ts |
| | |
| | | import { HttpRequest } from '@angular/common/http'; |
| | | import { MockRequest } from '@delon/mock'; |
| | | |
| | | const list = []; |
| | | |
| | | for (let i = 0; i < 46; i += 1) { |
| | |
| | | }); |
| | | } |
| | | |
| | | export function getRule(params: any) { |
| | | function getRule(params: any) { |
| | | let ret = [...list]; |
| | | if (params.sorter) { |
| | | const s = params.sorter.split('_'); |
| | |
| | | return ret; |
| | | } |
| | | |
| | | export function removeRule(no: string): boolean { |
| | | const idx = list.findIndex(w => w.no === no); |
| | | if (idx !== -1) { |
| | | list.splice(idx, 1); |
| | | return true; |
| | | } |
| | | return false; |
| | | function removeRule(nos: string): boolean { |
| | | nos.split(',').forEach(no => { |
| | | const idx = list.findIndex(w => w.no === no); |
| | | if (idx !== -1) list.splice(idx, 1); |
| | | }); |
| | | return true; |
| | | } |
| | | |
| | | export function saveRule(description: string) { |
| | | function saveRule(description: string) { |
| | | const i = Math.ceil(Math.random() * 10000); |
| | | list.unshift({ |
| | | key: i, |
| | |
| | | progress: Math.ceil(Math.random() * 100), |
| | | }); |
| | | } |
| | | |
| | | export const RULES = { |
| | | '/rule': (req: MockRequest) => getRule(req.queryString), |
| | | 'DELETE /rule': (req: MockRequest) => removeRule(req.queryString.nos), |
| | | 'POST /rule': (req: MockRequest) => saveRule(req.body.description) |
| | | }; |
New file |
| | |
| | | export * from './_profile'; |
| | | export * from './_rule'; |
| | | export * from './_api'; |
| | | export * from './_chart'; |
New file |
| | |
| | | version: '2.1' |
| | | |
| | | services: |
| | | ng-alain: |
| | | image: ng-alain |
| | | build: . |
| | | environment: |
| | | NODE_ENV: development |
| | | ports: |
| | | - 80:80 |
| | | - 9229:9229 |
| | | ## set your startup file here |
| | | command: node --inspect app.js |
New file |
| | |
| | | version: '2.1' |
| | | |
| | | services: |
| | | ng-alain: |
| | | image: ng-alain |
| | | build: . |
| | | environment: |
| | | NODE_ENV: production |
| | | ports: |
| | | - 80:80 |
| | |
| | | import { AppPage } from './app.po'; |
| | | |
| | | describe('screen-frontend App', () => { |
| | | describe('ng-alain App', () => { |
| | | let page: AppPage; |
| | | |
| | | beforeEach(() => { |
| | |
| | | { |
| | | "name": "screen-frontend", |
| | | "version": "1.0.0", |
| | | "name": "ng-alain", |
| | | "version": "0.6.0-rc.2", |
| | | "description": "ng-zorro-antd admin panel front-end framework", |
| | | "author": "cipchk", |
| | | "homepage": "https://cipchk.github.io/ng-alain/", |
| | |
| | | "lint:style": "stylelint \"{src}/**/*.less\" --syntax less", |
| | | "lint-staged": "lint-staged", |
| | | "e2e": "ng e2e", |
| | | "test": "ng test -sr", |
| | | "test-coverage": "ng test -sr -cc" |
| | | "test": "ng test -sr -sm=false", |
| | | "test-coverage": "ng test -sr -cc -sm=false" |
| | | }, |
| | | "dependencies": { |
| | | "@angular/animations": "^5.0.0", |
| | |
| | | "@angular/platform-browser": "^5.0.0", |
| | | "@angular/platform-browser-dynamic": "^5.0.0", |
| | | "@angular/router": "^5.0.0", |
| | | "@antv/data-set": "^0.7.0", |
| | | "@antv/data-set": "^0.8.3", |
| | | "@antv/g2": "^3.0.1", |
| | | "@antv/g2-plugin-slider": "^2.0.0", |
| | | "@delon/abc": "^0.3.0-rc.1", |
| | | "@delon/acl": "^0.3.0-rc.1", |
| | | "@delon/theme": "^0.3.0-rc.1", |
| | | "@delon/auth": "^0.3.0-rc.1", |
| | | "@delon/abc": "^0.6.0-rc.2", |
| | | "@delon/acl": "^0.6.0-rc.2", |
| | | "@delon/auth": "^0.6.0-rc.2", |
| | | "@delon/theme": "^0.6.0-rc.2", |
| | | "@delon/mock": "^0.6.0-rc.2", |
| | | "@delon/cache": "^0.6.0-rc.2", |
| | | "@ngx-translate/core": "^9.0.0", |
| | | "@ngx-translate/http-loader": "^2.0.0", |
| | | "angular-baidu-maps": "^1.0.1", |
| | | "angular-qq-maps": "^1.0.1", |
| | | "angular-tree-component": "^6.1.0", |
| | | "angular-split": "^1.0.0-rc.0", |
| | | "angular-tree-component": "^7.0.1", |
| | | "core-js": "^2.5.1", |
| | | "file-saver": "^1.3.3", |
| | | "font-awesome": "^4.7.0", |
| | | "moment": "^2.19.3", |
| | | "ng-clipboard-antd": "^2.0.1", |
| | | "ng-tree-antd": "^2.0.0", |
| | | "ng-zorro-antd": "^0.6.5", |
| | | "ng-zorro-antd-extra": "^1.1.3", |
| | | "ng-zorro-antd-extra": "^1.1.6", |
| | | "ng2-dnd": "^5.0.0", |
| | | "ng2-file-upload": "^1.2.1", |
| | | "ng2-img-cropper": "^0.9.0", |
| | | "ngx-color-picker": "^5.0.0", |
| | | "ngx-countdown": "^2.0.0", |
| | | "ngx-tinymce": "^1.0.1", |
| | | "ngx-ueditor": "^1.1.0", |
| | | "rxjs": "^5.5.5", |
| | | "screenfull": "^3.3.1", |
| | | "simple-line-icons": "^2.4.1", |
| | |
| | | "@angularclass/hmr-loader": "^3.0.4", |
| | | "@types/jasmine": "~2.6.0", |
| | | "@types/jasminewd2": "~2.0.3", |
| | | "@types/jszip": "^3.1.2", |
| | | "@types/node": "~6.0.60", |
| | | "codecov": "^3.0.0", |
| | | "codelyzer": "~4.0.1", |
| | |
| | | "ts-node": "~3.2.0", |
| | | "tslint": "~5.7.0", |
| | | "typescript": "~2.5.0", |
| | | "webpack-bundle-analyzer": "^2.9.0" |
| | | "webpack-bundle-analyzer": "^2.9.0", |
| | | "mockjs": "^1.0.1-beta3", |
| | | "@types/mockjs": "^1.0.0", |
| | | "xlsx": "^0.11.16" |
| | | }, |
| | | "lint-staged": { |
| | | "src/**/*.ts": "lint:ts", |
| | |
| | | import { TestBed, TestModuleMetadata } from '@angular/core/testing'; |
| | | import { setUpTestBed } from '../testing/common.spec'; |
| | | import { APP_BASE_HREF } from '@angular/common'; |
| | | import { setUpTestBed } from '@testing/common.spec'; |
| | | |
| | | import { AppComponent } from './app.component'; |
| | | import { APP_BASE_HREF } from '@angular/common'; |
| | | import { ThemesService, TitleService } from '@delon/theme'; |
| | | |
| | | describe('Component: App', () => { |
| | | setUpTestBed(<TestModuleMetadata>{ |
| | | declarations: [ AppComponent ], |
| | | providers: [ |
| | | ThemesService, TitleService, |
| | | { provide: APP_BASE_HREF, useValue: '/' } |
| | | ] |
| | | }); |
| | |
| | | import { DateService } from '@business/services/util/date.service'; |
| | | import { BrowserModule } from '@angular/platform-browser'; |
| | | import { NgModule, LOCALE_ID, APP_INITIALIZER, Injector } from '@angular/core'; |
| | | import { HttpClient, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; |
| | | import { BrowserModule } from '@angular/platform-browser'; |
| | | import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; |
| | | import { TranslateModule, TranslateLoader, TranslateService } from '@ngx-translate/core'; |
| | | import { TranslateHttpLoader } from '@ngx-translate/http-loader'; |
| | | import { HttpClient, HTTP_INTERCEPTORS } from '@angular/common/http'; |
| | | |
| | | import { DelonModule } from './delon.module'; |
| | | import { CoreModule } from './core/core.module'; |
| | | import { SharedModule } from './shared/shared.module'; |
| | | import { AppComponent } from './app.component'; |
| | | import { RoutesModule } from './routes/routes.module'; |
| | | import { LayoutModule } from './layout/layout.module'; |
| | | import { StartupService } from './core/services/startup.service'; |
| | | import { StartupService } from '@core/startup/startup.service'; |
| | | import { DefaultInterceptor } from '@core/net/default.interceptor'; |
| | | import { AlainAuthModule, SimpleInterceptor } from '@delon/auth'; |
| | | |
| | | // i18n |
| | | import { I18NService } from './core/i18n/i18n.service'; |
| | | import { ALAIN_I18N_TOKEN } from '@delon/theme'; |
| | | |
| | | import { SimpleInterceptor } from '@delon/auth'; |
| | | // angular i18n |
| | | import { registerLocaleData } from '@angular/common'; |
| | | import localeZhHans from '@angular/common/locales/zh-Hans'; |
| | | |
| | | registerLocaleData(localeZhHans); |
| | | // i18n |
| | | import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; |
| | | import { TranslateHttpLoader } from '@ngx-translate/http-loader'; |
| | | import { ALAIN_I18N_TOKEN } from '@delon/theme'; |
| | | import { I18NService } from '@core/i18n/i18n.service'; |
| | | |
| | | // AoT requires an exported function for factories |
| | | export function HttpLoaderFactory(http: HttpClient) { |
| | |
| | | imports: [ |
| | | BrowserModule, |
| | | BrowserAnimationsModule, |
| | | SharedModule.forRoot(), |
| | | HttpClientModule, |
| | | DelonModule, |
| | | CoreModule, |
| | | SharedModule, |
| | | LayoutModule, |
| | | RoutesModule, |
| | | // auth |
| | | AlainAuthModule.forRoot({ |
| | | login_url: `/pro/user/login` |
| | | }), |
| | | // i18n |
| | | TranslateModule.forRoot({ |
| | | loader: { |
| | |
| | | }) |
| | | ], |
| | | providers: [ |
| | | { provide: LOCALE_ID, useValue: 'zh-Hans' }, |
| | | { provide: HTTP_INTERCEPTORS, useClass: SimpleInterceptor, multi: true}, |
| | | { provide: HTTP_INTERCEPTORS, useClass: DefaultInterceptor, multi: true}, |
| | | { provide: LOCALE_ID, useValue: 'zh-Hans' }, |
| | | // TODO 暂时关闭登陆验证 |
| | | //{ provide: HTTP_INTERCEPTORS, useClass: SimpleInterceptor, multi: true}, |
| | | { provide: HTTP_INTERCEPTORS, useClass: DefaultInterceptor, multi: true}, |
| | | { provide: ALAIN_I18N_TOKEN, useClass: I18NService, multi: false }, |
| | | DateService, |
| | | StartupService, |
| | | { |
| | | provide: APP_INITIALIZER, |
New file |
| | |
| | | ### CoreModule |
| | | |
| | | **应** 仅只留 `providers` 属性。 |
| | | |
| | | **作用:** 一些通用服务,例如:用户消息、HTTP数据访问。 |
| | |
| | | import { NgModule, Optional, SkipSelf } from '@angular/core'; |
| | | import { throwIfAlreadyLoaded } from './module-import-guard'; |
| | | import { AlainThemeModule } from '@delon/theme'; |
| | | |
| | | import { I18NService } from './i18n/i18n.service'; |
| | | import { _HttpClient } from '@delon/theme/services/http/http.client'; |
| | | |
| | | @NgModule({ |
| | | imports: [ |
| | | AlainThemeModule.forRoot() |
| | | ], |
| | | providers: [ |
| | | I18NService, _HttpClient |
| | | I18NService |
| | | ] |
| | | }) |
| | | export class CoreModule { |
| | |
| | | import { SharedModule } from '@shared/shared.module'; |
| | | import { TestBed, async, inject } from '@angular/core/testing'; |
| | | import { TranslateService, TranslateModule, TranslateLoader } from '@ngx-translate/core'; |
| | | import { HttpClient, HttpClientModule } from '@angular/common/http'; |
| | |
| | | import { I18NService } from './i18n.service'; |
| | | import { HttpLoaderFactory } from '../../app.module'; |
| | | import { SettingsService } from '@delon/theme'; |
| | | import { DelonModule } from '../../delon.module'; |
| | | import { SharedModule } from '@shared/shared.module'; |
| | | |
| | | describe('Service: I18n', () => { |
| | | beforeEach(() => { |
| | | TestBed.configureTestingModule({ |
| | | imports: [ |
| | | HttpClientModule, |
| | | SharedModule.forRoot(), |
| | | DelonModule, |
| | | SharedModule, |
| | | TranslateModule.forRoot({ |
| | | loader: { |
| | | provide: TranslateLoader, |
| | |
| | | @Injectable() |
| | | export class I18NService implements AlainI18NService { |
| | | |
| | | private _default = 'en'; |
| | | private _default = 'zh-CN'; |
| | | |
| | | private _langs = [ |
| | | { code: 'zh-CN', text: '中文' }, |
| | | { code: 'en', text: 'English' } |
| | | ]; |
| | | |
| | | constructor(settings: SettingsService, |
| | | constructor( |
| | | settings: SettingsService, |
| | | private nzLocalService: NzLocaleService, |
| | | private translate: TranslateService, |
| | | private injector: Injector) { |
| | | private injector: Injector |
| | | ) { |
| | | this._default = settings.layout.lang || translate.getBrowserLang(); |
| | | const lans = this._langs.map(item => item.code); |
| | | if (!lans.includes(this._default)) { |
| | | this._default = lans[0]; |
| | | } |
| | | translate.addLangs(lans); |
| | | translate.setDefaultLang(this._default); |
| | | } |
| | | |
| | | use(lang: string = null, firstLoad = true): Observable<any> { |
| | |
| | | if (!firstLoad) this.injector.get(Router).navigate([ '/' ]); |
| | | return this.translate.use(lang); |
| | | } |
| | | |
| | | /** 获取语言列表 */ |
| | | getLangs() { |
| | | return this._langs; |
| | | } |
| | | |
| | | /** 翻译 */ |
| | | fanyi(key: string) { |
| | | return this.translate.instant(key); |
| | | } |
| | | |
| | | /** 默认语言 */ |
| | | get defaultLang() { |
| | | return this._default; |
| | | } |
| | | /** 当前语言 */ |
| | | get currentLang() { |
| | | return this.translate.currentLang || this.translate.getDefaultLang() || this._default; |
| | | } |
| | | } |
| | |
| | | import { ErrorObservable } from 'rxjs/observable/ErrorObservable'; |
| | | import { catchError } from 'rxjs/operators'; |
| | | import { map, mergeMap } from 'rxjs/operators'; |
| | | |
| | | import { environment } from '../../../environments/environment'; |
| | | import { environment } from '@env/environment'; |
| | | |
| | | /** |
| | | * 默认HTTP拦截器,其注册细节见 `app.module.ts` |
| | |
| | | |
| | | // TIPS:原TOKEN信息已交由 `@delon/auth` 处理 |
| | | // Document: http://ng-alain.com/docs/auth |
| | | |
| | | // 统一加上服务端前缀 |
| | | let url = req.url; |
| | | |
| | | if (!url.startsWith('https://') && !url.startsWith('http://')) { |
| | | url = environment.SERVER_URL + url; |
| | | } |
| | | |
| | | const newReq = req.clone({ |
| | | url: url |
| | | }); |
New file |
| | |
| | | import { Injectable, Injector } from '@angular/core'; |
| | | import { Router } from '@angular/router'; |
| | | import { HttpClient, HttpErrorResponse } from '@angular/common/http'; |
| | | import { zip } from 'rxjs/observable/zip'; |
| | | import { TranslateService } from '@ngx-translate/core'; |
| | | import { MenuService, SettingsService, TitleService } from '@delon/theme'; |
| | | import { ACLService } from '@delon/acl'; |
| | | import { I18NService } from '../i18n/i18n.service'; |
| | | |
| | | /** |
| | | * 用于应用启动时 |
| | | * 一般用来获取应用所需要的基础数据等 |
| | | */ |
| | | @Injectable() |
| | | export class StartupService { |
| | | constructor( |
| | | private menuService: MenuService, |
| | | private translate: TranslateService, |
| | | private i18n: I18NService, |
| | | private settingService: SettingsService, |
| | | private aclService: ACLService, |
| | | private titleService: TitleService, |
| | | private httpClient: HttpClient, |
| | | private injector: Injector) { } |
| | | |
| | | load(): Promise<any> { |
| | | // only works with promises |
| | | // https://github.com/angular/angular/issues/15088 |
| | | return new Promise((resolve, reject) => { |
| | | zip( |
| | | this.httpClient.get(`assets/i18n/${this.i18n.defaultLang}.json`), |
| | | this.httpClient.get('assets/app-data.json'), |
| | | ).subscribe(([langData, appData]) => { |
| | | // setting language data |
| | | this.translate.setTranslation(this.i18n.defaultLang, langData); |
| | | this.translate.setDefaultLang(this.i18n.defaultLang); |
| | | |
| | | // application data |
| | | const res: any = appData; |
| | | // 应用信息:包括站点名、描述、年份 |
| | | this.settingService.setApp(res.app); |
| | | // 用户信息:包括姓名、头像、邮箱地址 |
| | | this.settingService.setUser(res.user); |
| | | // ACL:设置权限为全量 |
| | | this.aclService.setFull(true); |
| | | // 初始化菜单 |
| | | this.menuService.add(res.menu); |
| | | // 设置页面标题的后缀 |
| | | this.titleService.suffix = res.app.name; |
| | | |
| | | resolve(res); |
| | | }, (err: HttpErrorResponse) => { |
| | | resolve(null); |
| | | }); |
| | | }); |
| | | } |
| | | } |
New file |
| | |
| | | /** |
| | | * 进一步对基础模块的导入提炼 |
| | | * 有关模块注册指导原则请参考:https://github.com/cipchk/ng-alain/issues/180 |
| | | */ |
| | | import { NgModule, Optional, SkipSelf } from '@angular/core'; |
| | | import { throwIfAlreadyLoaded } from '@core/module-import-guard'; |
| | | |
| | | // region: zorro modules |
| | | |
| | | import { |
| | | // LoggerModule, |
| | | // NzLocaleModule, |
| | | NzButtonModule, |
| | | NzAlertModule, |
| | | NzBadgeModule, |
| | | // NzCalendarModule, |
| | | NzCascaderModule, |
| | | NzCheckboxModule, |
| | | NzDatePickerModule, |
| | | NzFormModule, |
| | | NzInputModule, |
| | | NzInputNumberModule, |
| | | NzGridModule, |
| | | NzMessageModule, |
| | | NzModalModule, |
| | | NzNotificationModule, |
| | | NzPaginationModule, |
| | | NzPopconfirmModule, |
| | | NzPopoverModule, |
| | | NzRadioModule, |
| | | NzRateModule, |
| | | NzSelectModule, |
| | | NzSpinModule, |
| | | NzSliderModule, |
| | | NzSwitchModule, |
| | | NzProgressModule, |
| | | NzTableModule, |
| | | NzTabsModule, |
| | | NzTagModule, |
| | | NzTimePickerModule, |
| | | NzUtilModule, |
| | | NzStepsModule, |
| | | NzDropDownModule, |
| | | NzMenuModule, |
| | | NzBreadCrumbModule, |
| | | NzLayoutModule, |
| | | NzRootModule, |
| | | NzCarouselModule, |
| | | // NzCardModule, |
| | | NzCollapseModule, |
| | | NzTimelineModule, |
| | | NzToolTipModule, |
| | | // NzBackTopModule, |
| | | // NzAffixModule, |
| | | // NzAnchorModule, |
| | | NzAvatarModule, |
| | | // SERVICES |
| | | NzNotificationService, |
| | | NzMessageService |
| | | } from 'ng-zorro-antd'; |
| | | export const ZORROMODULES = [ |
| | | // LoggerModule, |
| | | // NzLocaleModule, |
| | | NzButtonModule, |
| | | NzAlertModule, |
| | | NzBadgeModule, |
| | | // NzCalendarModule, |
| | | NzCascaderModule, |
| | | NzCheckboxModule, |
| | | NzDatePickerModule, |
| | | NzFormModule, |
| | | NzInputModule, |
| | | NzInputNumberModule, |
| | | NzGridModule, |
| | | NzMessageModule, |
| | | NzModalModule, |
| | | NzNotificationModule, |
| | | NzPaginationModule, |
| | | NzPopconfirmModule, |
| | | NzPopoverModule, |
| | | NzRadioModule, |
| | | NzRateModule, |
| | | NzSelectModule, |
| | | NzSpinModule, |
| | | NzSliderModule, |
| | | NzSwitchModule, |
| | | NzProgressModule, |
| | | NzTableModule, |
| | | NzTabsModule, |
| | | NzTagModule, |
| | | NzTimePickerModule, |
| | | NzUtilModule, |
| | | NzStepsModule, |
| | | NzDropDownModule, |
| | | NzMenuModule, |
| | | NzBreadCrumbModule, |
| | | NzLayoutModule, |
| | | NzRootModule, |
| | | NzCarouselModule, |
| | | // NzCardModule, |
| | | NzCollapseModule, |
| | | NzTimelineModule, |
| | | NzToolTipModule, |
| | | // NzBackTopModule, |
| | | // NzAffixModule, |
| | | // NzAnchorModule, |
| | | NzAvatarModule |
| | | ]; |
| | | // endregion |
| | | |
| | | // region: @delon/abc modules |
| | | import { |
| | | AdSimpleTableModule, |
| | | AdReuseTabModule, |
| | | AdAvatarListModule, |
| | | AdChartsModule, |
| | | AdCountDownModule, |
| | | AdDescListModule, |
| | | AdEllipsisModule, |
| | | AdErrorCollectModule, |
| | | AdExceptionModule, |
| | | AdFooterToolbarModule, |
| | | AdGlobalFooterModule, |
| | | AdNoticeIconModule, |
| | | AdNumberInfoModule, |
| | | AdProHeaderModule, |
| | | AdResultModule, |
| | | AdSidebarNavModule, |
| | | AdStandardFormRowModule, |
| | | AdTagSelectModule, |
| | | AdTrendModule, |
| | | AdDownFileModule, |
| | | AdImageModule, |
| | | AdUtilsModule, |
| | | AdFullContentModule, |
| | | AdXlsxModule, |
| | | AdZipModule |
| | | } from '@delon/abc'; |
| | | export const ABCMODULES = [ |
| | | AdSimpleTableModule, |
| | | AdReuseTabModule, |
| | | AdAvatarListModule, |
| | | AdChartsModule, |
| | | AdCountDownModule, |
| | | AdDescListModule, |
| | | AdEllipsisModule, |
| | | AdErrorCollectModule, |
| | | AdExceptionModule, |
| | | AdFooterToolbarModule, |
| | | AdGlobalFooterModule, |
| | | AdNoticeIconModule, |
| | | AdNumberInfoModule, |
| | | AdProHeaderModule, |
| | | AdResultModule, |
| | | AdSidebarNavModule, |
| | | AdStandardFormRowModule, |
| | | AdTagSelectModule, |
| | | AdTrendModule, |
| | | AdDownFileModule, |
| | | AdImageModule, |
| | | AdUtilsModule, |
| | | AdFullContentModule, |
| | | AdXlsxModule, |
| | | AdZipModule |
| | | ]; |
| | | // endregion |
| | | |
| | | import { NgZorroAntdModule } from 'ng-zorro-antd'; |
| | | import { NgZorroAntdExtraModule } from 'ng-zorro-antd-extra'; |
| | | import { AlainThemeModule } from '@delon/theme'; |
| | | import { AlainABCModule } from '@delon/abc'; |
| | | import { AlainAuthModule } from '@delon/auth'; |
| | | import { AlainACLModule } from '@delon/acl'; |
| | | import { DelonCacheModule } from '@delon/cache'; |
| | | // mock |
| | | import { DelonMockModule } from '@delon/mock'; |
| | | import * as MOCKDATA from '../../_mock'; |
| | | import { environment } from '@env/environment'; |
| | | const MOCKMODULE = !environment.production || environment.chore === true ? |
| | | [ DelonMockModule.forRoot({ data: MOCKDATA }) ] : []; |
| | | |
| | | @NgModule({ |
| | | imports: [ |
| | | NgZorroAntdModule.forRoot(), |
| | | NgZorroAntdExtraModule.forRoot(), |
| | | // theme |
| | | AlainThemeModule.forRoot(), |
| | | // abc |
| | | AlainABCModule.forRoot(), |
| | | // auth |
| | | AlainAuthModule.forRoot({ |
| | | // ignores: [ `\\/login`, `assets\\/` ], |
| | | login_url: `/passport/login`, |
| | | allow_anonymous_key: `_allow_anonymous` |
| | | }), |
| | | // acl |
| | | AlainACLModule.forRoot(), |
| | | // cache |
| | | DelonCacheModule.forRoot(), |
| | | // mock |
| | | ...MOCKMODULE |
| | | ] |
| | | }) |
| | | export class DelonModule { |
| | | constructor( @Optional() @SkipSelf() parentModule: DelonModule) { |
| | | throwIfAlreadyLoaded(parentModule, 'DelonModule'); |
| | | } |
| | | } |
File was renamed from src/app/layout/layout.component.html |
| | |
| | | <div class="router-progress-bar" *ngIf="isFetching"></div> |
| | | <app-header class="header"></app-header> |
| | | <app-sidebar class="aside"></app-sidebar> |
| | | <section class="content"><router-outlet></router-outlet></section> |
| | | <section class="content"> |
| | | <reuse-tab></reuse-tab> |
| | | <router-outlet></router-outlet> |
| | | </section> |
| | | </div> |
New file |
| | |
| | | import { TestBed, TestModuleMetadata } from '@angular/core/testing'; |
| | | |
| | | import { setUpTestBed } from '@testing/common.spec'; |
| | | |
| | | import { LayoutDefaultComponent } from './default.component'; |
| | | |
| | | describe('Layout', () => { |
| | | setUpTestBed(<TestModuleMetadata>{ |
| | | declarations: [LayoutDefaultComponent] |
| | | }); |
| | | |
| | | it('should create an instance', () => { |
| | | const fixture = TestBed.createComponent(LayoutDefaultComponent); |
| | | const comp = fixture.debugElement.componentInstance; |
| | | expect(comp).toBeTruthy(); |
| | | }); |
| | | }); |
File was renamed from src/app/layout/layout.component.ts |
| | |
| | | import { ScrollService, MenuService, SettingsService } from '@delon/theme'; |
| | | |
| | | @Component({ |
| | | selector: 'app-layout', |
| | | templateUrl: './layout.component.html' |
| | | selector: 'layout-default', |
| | | templateUrl: './default.component.html' |
| | | }) |
| | | export class LayoutComponent { |
| | | export class LayoutDefaultComponent { |
| | | isFetching = false; |
| | | |
| | | constructor( |
File was renamed from src/app/layout/header/components/fullscreen.component.ts |
| | |
| | | selector: 'header-fullscreen', |
| | | template: ` |
| | | <i class="anticon anticon-{{status ? 'shrink' : 'arrows-alt'}}"></i> |
| | | {{status ? 'fullscreen-exit' : 'fullscreen' | translate }} |
| | | {{(status ? 'fullscreen-exit' : 'fullscreen') | translate }} |
| | | ` |
| | | }) |
| | | export class HeaderFullScreenComponent { |
File was renamed from src/app/layout/header/components/user.component.ts |
| | |
| | | this.tokenService.change().subscribe((res: any) => { |
| | | this.settings.setUser(res); |
| | | }); |
| | | // mock |
| | | const token = this.tokenService.get() || { |
| | | token: 'nothing', |
| | | name: 'Admin', |
| | |
| | | |
| | | logout() { |
| | | this.tokenService.clear(); |
| | | this.router.navigateByUrl('/pro/user/login'); |
| | | this.router.navigateByUrl(this.tokenService.login_url); |
| | | } |
| | | } |
File was renamed from src/app/layout/header/header.component.html |
| | |
| | | </li> |
| | | <!-- Lock Page --> |
| | | <li class="hidden-xs"> |
| | | <div class="item" [routerLink]="['/lock']"> |
| | | <div class="item" [routerLink]="['/pages/lock']"> |
| | | <i class="anticon anticon-lock"></i> |
| | | </div> |
| | | </li> |
File was renamed from src/app/layout/header/header.component.spec.ts |
| | |
| | | import { TestBed, TestModuleMetadata } from '@angular/core/testing'; |
| | | |
| | | import { setUpTestBed } from 'testing/common.spec'; |
| | | import { setUpTestBed } from '@testing/common.spec'; |
| | | |
| | | import { HeaderComponent } from './header.component'; |
| | | |
File was renamed from src/app/layout/sidebar/sidebar.component.spec.ts |
| | |
| | | import { TestBed, TestModuleMetadata } from '@angular/core/testing'; |
| | | import { setUpTestBed } from '../../../testing/common.spec'; |
| | | import { setUpTestBed } from '@testing/common.spec'; |
| | | |
| | | import { SidebarComponent } from './sidebar.component'; |
| | | |
| | |
| | | import { Component } from '@angular/core'; |
| | | |
| | | @Component({ |
| | | selector: 'app-layout-fullscreen', |
| | | selector: 'layout-fullscreen', |
| | | templateUrl: './fullscreen.component.html' |
| | | }) |
| | | export class LayoutFullScreenComponent { |
| | |
| | | import { NgModule } from '@angular/core'; |
| | | |
| | | import { SharedModule } from '@shared/shared.module'; |
| | | import { LayoutComponent } from './layout.component'; |
| | | |
| | | import { LayoutDefaultComponent } from './default/default.component'; |
| | | import { LayoutFullScreenComponent } from './fullscreen/fullscreen.component'; |
| | | import { HeaderComponent } from './header/header.component'; |
| | | import { SidebarComponent } from './sidebar/sidebar.component'; |
| | | import { HeaderSearchComponent } from './header/components/search.component'; |
| | | import { HeaderThemeComponent } from './header/components/theme.component'; |
| | | import { HeaderNotifyComponent } from './header/components/notify.component'; |
| | | import { HeaderTaskComponent } from './header/components/task.component'; |
| | | import { HeaderIconComponent } from './header/components/icon.component'; |
| | | import { HeaderFullScreenComponent } from './header/components/fullscreen.component'; |
| | | import { HeaderLangsComponent } from './header/components/langs.component'; |
| | | import { HeaderStorageComponent } from './header/components/storage.component'; |
| | | import { HeaderUserComponent } from './header/components/user.component'; |
| | | import { HeaderComponent } from './default/header/header.component'; |
| | | import { SidebarComponent } from './default/sidebar/sidebar.component'; |
| | | import { HeaderSearchComponent } from './default/header/components/search.component'; |
| | | import { HeaderThemeComponent } from './default/header/components/theme.component'; |
| | | import { HeaderNotifyComponent } from './default/header/components/notify.component'; |
| | | import { HeaderTaskComponent } from './default/header/components/task.component'; |
| | | import { HeaderIconComponent } from './default/header/components/icon.component'; |
| | | import { HeaderFullScreenComponent } from './default/header/components/fullscreen.component'; |
| | | import { HeaderLangsComponent } from './default/header/components/langs.component'; |
| | | import { HeaderStorageComponent } from './default/header/components/storage.component'; |
| | | import { HeaderUserComponent } from './default/header/components/user.component'; |
| | | |
| | | const COMPONENTS = [ |
| | | LayoutComponent, |
| | | LayoutDefaultComponent, |
| | | LayoutFullScreenComponent, |
| | | HeaderComponent, |
| | | SidebarComponent |
| | |
| | | HeaderUserComponent |
| | | ]; |
| | | |
| | | // pro |
| | | import { ProUserLayoutComponent } from './pro/user/user.component'; |
| | | const PRO = [ |
| | | ProUserLayoutComponent |
| | | // passport |
| | | import { LayoutPassportComponent } from './passport/passport.component'; |
| | | const PASSPORT = [ |
| | | LayoutPassportComponent |
| | | ]; |
| | | |
| | | @NgModule({ |
| | |
| | | declarations: [ |
| | | ...COMPONENTS, |
| | | ...HEADERCOMPONENTS, |
| | | ...PRO |
| | | ...PASSPORT |
| | | ], |
| | | exports: [ |
| | | ...COMPONENTS, |
| | | ...PRO |
| | | ...PASSPORT |
| | | ] |
| | | }) |
| | | export class LayoutModule { } |
File was renamed from src/app/layout/pro/user/user.component.ts |
| | |
| | | import { Component } from '@angular/core'; |
| | | |
| | | @Component({ |
| | | selector: 'pro-user-layout', |
| | | templateUrl: './user.component.html', |
| | | styleUrls: ['./user.component.less'] |
| | | selector: 'layout-passport', |
| | | templateUrl: './passport.component.html', |
| | | styleUrls: ['./passport.component.less'] |
| | | }) |
| | | export class ProUserLayoutComponent { |
| | | export class LayoutPassportComponent { |
| | | links = [ |
| | | { |
| | | title: '帮助', |
| | |
| | | import { HttpClient } from '@angular/common/http'; |
| | | import { Component, OnInit } from '@angular/core'; |
| | | import { NzMessageService } from 'ng-zorro-antd'; |
| | | import { getTimeDistance, yuan } from '@delon/abc'; |
| | | import { getFakeChartData } from '../../../../../_mock/chart.service'; |
| | | import { _HttpClient } from '@delon/theme'; |
| | | |
| | | @Component({ |
| | | selector: 'app-dashboard-analysis', |
| | |
| | | styleUrls: ['./analysis.component.less'] |
| | | }) |
| | | export class DashboardAnalysisComponent implements OnInit { |
| | | |
| | | data: any = { |
| | | salesData: [], |
| | | offlineData: [] |
| | |
| | | }; |
| | | }); |
| | | |
| | | constructor(public msg: NzMessageService) {} |
| | | constructor(private http: _HttpClient, public msg: NzMessageService, |
| | | private http2: HttpClient) {} |
| | | |
| | | ngOnInit() { |
| | | setTimeout(() => { |
| | | this.data = Object.assign({}, getFakeChartData); |
| | | this.data.offlineData.forEach((item: any) => { |
| | | item.chart = Object.assign([], getFakeChartData.offlineChartData); |
| | | this.http.get('/chart').subscribe((res: any) => { |
| | | res.offlineData.forEach((item: any) => { |
| | | item.chart = Object.assign([], res.offlineChartData); |
| | | }); |
| | | this.data = res; |
| | | this.loading = false; |
| | | this.changeSaleType(); |
| | | }, 500); |
| | | }); |
| | | } |
| | | |
| | | setDate(type: any) { |
| | |
| | | import { Component, OnInit, OnDestroy } from '@angular/core'; |
| | | import { NzMessageService } from 'ng-zorro-antd'; |
| | | import { zip } from 'rxjs/observable/zip'; |
| | | import { getTimeDistance, yuan, fixedZero } from '@delon/abc'; |
| | | import { getFakeChartData } from '../../../../../_mock/chart.service'; |
| | | import { _HttpClient } from '@delon/theme'; |
| | | |
| | | @Component({ |
| | | selector: 'app-dashboard-monitor', |
| | |
| | | styleUrls: ['./monitor.component.less'] |
| | | }) |
| | | export class DashboardMonitorComponent implements OnInit, OnDestroy { |
| | | data: any = { |
| | | }; |
| | | data: any = { }; |
| | | tags = []; |
| | | loading = true; |
| | | q: any = { |
| | | start: null, |
| | | end: null |
| | | }; |
| | | |
| | | // from [http://jsfiddle.net/uTSqT/12/] |
| | | tags = [ |
| | | { |
| | | 'name': '阿里地区', |
| | | 'value': 99, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '宝鸡市', |
| | | 'value': 17, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '阿里地区', |
| | | 'value': 92, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '七台河市', |
| | | 'value': 83, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '铜仁市', |
| | | 'value': 79, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '海南藏族自治州', |
| | | 'value': 92, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '铜仁市', |
| | | 'value': 78, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '大同市', |
| | | 'value': 86, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '九江市', |
| | | 'value': 18, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '鹤壁市', |
| | | 'value': 13, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '泸州市', |
| | | 'value': 17, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '白银市', |
| | | 'value': 52, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '南京市', |
| | | 'value': 82, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '北海市', |
| | | 'value': 3, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '清远市', |
| | | 'value': 62, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '邵阳市', |
| | | 'value': 38, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '日喀则地区', |
| | | 'value': 35, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '连云港市', |
| | | 'value': 62, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '果洛藏族自治州', |
| | | 'value': 51, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '黄南藏族自治州', |
| | | 'value': 50, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '安顺市', |
| | | 'value': 94, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '海外', |
| | | 'value': 95, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '临夏回族自治州', |
| | | 'value': 37, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '固原市', |
| | | 'value': 44, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '澎湖县', |
| | | 'value': 49, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '天津市', |
| | | 'value': 95, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '上海市', |
| | | 'value': 1050, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '湖州市', |
| | | 'value': 19, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '克孜勒苏柯尔克孜自治州', |
| | | 'value': 86, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '天津市', |
| | | 'value': 97, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '宜宾市', |
| | | 'value': 42, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '张家界市', |
| | | 'value': 11, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '乐山市', |
| | | 'value': 19, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '保定市', |
| | | 'value': 17, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '重庆市', |
| | | 'value': 16, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '海外', |
| | | 'value': 96, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '韶关市', |
| | | 'value': 94, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '嘉兴市', |
| | | 'value': 49, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '来宾市', |
| | | 'value': 72, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '晋城市', |
| | | 'value': 97, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '日喀则地区', |
| | | 'value': 39, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '哈尔滨市', |
| | | 'value': 92, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '承德市', |
| | | 'value': 66, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '临汾市', |
| | | 'value': 11, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '防城港市', |
| | | 'value': 43, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '日喀则地区', |
| | | 'value': 53, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '铜陵市', |
| | | 'value': 9, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '阳泉市', |
| | | 'value': 50, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '金昌市', |
| | | 'value': 17, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '防城港市', |
| | | 'value': 2, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '铁岭市', |
| | | 'value': 93, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '厦门市', |
| | | 'value': 3, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '石嘴山市', |
| | | 'value': 21, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '呼和浩特市', |
| | | 'value': 66, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '内江市', |
| | | 'value': 45, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '泉州市', |
| | | 'value': 36, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '固原市', |
| | | 'value': 95, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '巴音郭楞蒙古自治州', |
| | | 'value': 50, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '湖州市', |
| | | 'value': 39, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '澳门半岛', |
| | | 'value': 36, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '玉树藏族自治州', |
| | | 'value': 18, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '盐城市', |
| | | 'value': 86, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '中卫市', |
| | | 'value': 33, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '塔城地区', |
| | | 'value': 66, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '常州市', |
| | | 'value': 41, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '北京市', |
| | | 'value': 8, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '伊春市', |
| | | 'value': 38, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '信阳市', |
| | | 'value': 96, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '曲靖市', |
| | | 'value': 52, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '嘉义市', |
| | | 'value': 68, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '抚顺市', |
| | | 'value': 20, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '舟山市', |
| | | 'value': 50, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '营口市', |
| | | 'value': 41, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '屏东县', |
| | | 'value': 26, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '重庆市', |
| | | 'value': 58, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '齐齐哈尔市', |
| | | 'value': 80, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '北海市', |
| | | 'value': 70, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '双鸭山市', |
| | | 'value': 18, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '白山市', |
| | | 'value': 64, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '青岛市', |
| | | 'value': 99, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '伊春市', |
| | | 'value': 95, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '天津市', |
| | | 'value': 55, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '上饶市', |
| | | 'value': 63, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '南京市', |
| | | 'value': 32, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '九江市', |
| | | 'value': 23, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '固原市', |
| | | 'value': 30, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '阜新市', |
| | | 'value': 43, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '鹰潭市', |
| | | 'value': 86, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '开封市', |
| | | 'value': 86, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '铜陵市', |
| | | 'value': 13, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '广安市', |
| | | 'value': 40, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '吉林市', |
| | | 'value': 72, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '吴忠市', |
| | | 'value': 9, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '南平市', |
| | | 'value': 22, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '秦皇岛市', |
| | | 'value': 81, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '齐齐哈尔市', |
| | | 'value': 3, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '张家口市', |
| | | 'value': 50, |
| | | 'type': 0 |
| | | }, |
| | | { |
| | | 'name': '河池市', |
| | | 'value': 74, |
| | | 'type': 2 |
| | | }, |
| | | { |
| | | 'name': '九龙', |
| | | 'value': 50, |
| | | 'type': 1 |
| | | }, |
| | | { |
| | | 'name': '佳木斯市', |
| | | 'value': 56, |
| | | 'type': 1 |
| | | } |
| | | ]; |
| | | |
| | | constructor(public msg: NzMessageService) {} |
| | | constructor(private http: _HttpClient, public msg: NzMessageService) {} |
| | | |
| | | ngOnInit() { |
| | | setTimeout(() => { |
| | | this.data = getFakeChartData; |
| | | zip( |
| | | this.http.get('/chart'), |
| | | this.http.get('/chart/tags') |
| | | ).subscribe(([ res, tags ]) => { |
| | | this.data = res; |
| | | tags.list[Math.floor(Math.random() * tags.list.length) + 1].value = 1000; |
| | | this.tags = tags.list; |
| | | this.loading = false; |
| | | }, 500); |
| | | }); |
| | | |
| | | // active chart |
| | | this.genActiveData(); |
| | |
| | | import { NzMessageService } from 'ng-zorro-antd'; |
| | | import { Component } from '@angular/core'; |
| | | import { getFakeChartData } from '../../../../../_mock/chart.service'; |
| | | import { Component, OnInit } from '@angular/core'; |
| | | import { _HttpClient } from '@delon/theme'; |
| | | |
| | | @Component({ |
| | | selector: 'app-dashboard-v1', |
| | | templateUrl: './v1.component.html' |
| | | }) |
| | | export class DashboardV1Component { |
| | | export class DashboardV1Component implements OnInit { |
| | | |
| | | constructor(public msg: NzMessageService) { |
| | | console.log(this.offlineChartData); |
| | | } |
| | | constructor(private http: _HttpClient, public msg: NzMessageService) { } |
| | | |
| | | todoData: any[] = [ |
| | | { completed: true, avatar: '1', name: '苏先生', content: `请告诉我,我应该说点什么好?` }, |
| | |
| | | |
| | | quickMenu = false; |
| | | |
| | | webSite = [ ...getFakeChartData.visitData.slice(0, 10) ]; |
| | | salesData = [...getFakeChartData.salesData]; |
| | | offlineChartData = Object.assign([], getFakeChartData.offlineChartData); |
| | | webSite: any[] = [ ]; |
| | | salesData: any[] = [ ]; |
| | | offlineChartData: any[] = []; |
| | | |
| | | ngOnInit() { |
| | | this.http.get('/chart').subscribe((res: any) => { |
| | | this.webSite = res.visitData.slice(0, 10); |
| | | this.salesData = res.salesData; |
| | | this.offlineChartData = res.offlineChartData; |
| | | }); |
| | | } |
| | | } |
| | |
| | | @import '~@delon/theme/styles/antd/themes/default.less'; |
| | | @import '~@delon/abc/components/utils/utils.less'; |
| | | @import '~@delon/abc/utils/utils.less'; |
| | | |
| | | :host ::ng-deep { |
| | | .page-header { |
| | |
| | | import { zip } from 'rxjs/observable/zip'; |
| | | import { Component, OnInit, OnDestroy } from '@angular/core'; |
| | | import { NzMessageService } from 'ng-zorro-antd'; |
| | | import { getTimeDistance, yuan, fixedZero } from '@delon/abc'; |
| | | import { getNotice, getActivities } from '../../../../../_mock/api.service'; |
| | | import { getFakeChartData } from '../../../../../_mock/chart.service'; |
| | | import { _HttpClient } from '@delon/theme'; |
| | | |
| | | @Component({ |
| | | selector: 'app-dashboard-workplace', |
| | |
| | | ]; |
| | | // endregion |
| | | |
| | | constructor(public msg: NzMessageService) {} |
| | | constructor(private http: _HttpClient, public msg: NzMessageService) {} |
| | | |
| | | ngOnInit() { |
| | | setTimeout(() => { |
| | | this.notice = getNotice(); |
| | | this.activities = getActivities().map((item: any) => { |
| | | zip( |
| | | this.http.get('/chart'), |
| | | this.http.get('/api/notice'), |
| | | this.http.get('/api/activities') |
| | | ).subscribe(([ chart, notice, activities ]) => { |
| | | this.radarData = chart.radarData; |
| | | this.notice = notice; |
| | | this.activities = activities.map((item: any) => { |
| | | item.template = item.template.split(/@\{([^{}]*)\}/gi).map((key: string) => { |
| | | if (item[key]) return `<a>${item[key].name}</a>`; |
| | | return key; |
| | | }); |
| | | return item; |
| | | }); |
| | | this.radarData = getFakeChartData.radarData; |
| | | this.loading = false; |
| | | }, 500); |
| | | }); |
| | | } |
| | | |
| | | ngOnDestroy(): void { |
File was renamed from src/app/routes/routes.ts |
| | |
| | | import { LayoutComponent } from '../layout/layout.component'; |
| | | import { NgModule } from '@angular/core'; |
| | | import { Routes, RouterModule } from '@angular/router'; |
| | | import { environment } from '@env/environment'; |
| | | // layout |
| | | import { LayoutDefaultComponent } from '../layout/default/default.component'; |
| | | import { LayoutFullScreenComponent } from '../layout/fullscreen/fullscreen.component'; |
| | | import { LayoutPassportComponent } from '../layout/passport/passport.component'; |
| | | // dashboard pages |
| | | import { DashboardV1Component } from './dashboard/v1/v1.component'; |
| | | import { DashboardAnalysisComponent } from './dashboard/analysis/analysis.component'; |
| | | import { DashboardMonitorComponent } from './dashboard/monitor/monitor.component'; |
| | | import { DashboardWorkplaceComponent } from './dashboard/workplace/workplace.component'; |
| | | |
| | | export const routes = [ |
| | | |
| | | const routes: Routes = [ |
| | | { |
| | | path: '', |
| | | component: LayoutComponent, |
| | | component: LayoutDefaultComponent, |
| | | children: [ |
| | | { path: '', redirectTo: 'dashboard/analysis', pathMatch: 'full' }, |
| | | { path: '', redirectTo: 'dashboard/v1', pathMatch: 'full' }, |
| | | { path: 'dashboard', redirectTo: 'dashboard/v1', pathMatch: 'full' }, |
| | | { path: 'dashboard/v1', component: DashboardV1Component, data: { translate: 'dashboard_v1' } }, |
| | | { path: 'dashboard/analysis', component: DashboardAnalysisComponent, data: { translate: 'dashboard_analysis' } }, |
| | | { path: 'dashboard/monitor', component: DashboardMonitorComponent, data: { translate: 'dashboard_monitor' } }, |
| | | { path: 'dashboard/workplace', component: DashboardWorkplaceComponent, data: { translate: 'dashboard_workplace' } }, |
| | | |
| | | { path: 'users', loadChildren: './users/users.module#UsersModule' }, |
| | | { path: 'devices', loadChildren: './devices/devices.module#DevicesModule' }, |
| | | { path: 'sensors', loadChildren: './sensors/sensors.module#SensorsModule' }, |
| | | { path: 'systems', loadChildren: './systems/systems.module#SystemsModule' }, |
| | | |
| | | { path: 'dashboard/v1', component: DashboardV1Component, data: { translate: 'dashboard_v1' } }, |
| | | { path: 'dashboard/analysis', component: DashboardAnalysisComponent, data: { translate: 'dashboard_analysis' } }, |
| | | { path: 'dashboard/monitor', component: DashboardMonitorComponent, data: { translate: 'dashboard_monitor' } }, |
| | | { path: 'dashboard/workplace', component: DashboardWorkplaceComponent, data: { translate: 'dashboard_workplace' } } |
| | | ] |
| | | }, |
| | | { path: '**', redirectTo: 'dashboard' } |
| | | ]; |
| | | |
| | | @NgModule({ |
| | | imports: [RouterModule.forRoot(routes, { useHash: environment.useHash })], |
| | | exports: [RouterModule] |
| | | }) |
| | | export class RouteRoutingModule { } |
| | |
| | | import { DevicesModule } from './devices/devices.module'; |
| | | import { DateService } from '@business/services/util/date.service'; |
| | | import { _HttpClient } from '@delon/theme'; |
| | | import { NgModule } from '@angular/core'; |
| | | import { RouterModule } from '@angular/router'; |
| | | |
| | | import { SharedModule } from '@shared/shared.module'; |
| | | import { environment } from '../../environments/environment'; |
| | | import { routes } from './routes'; |
| | | import { RouteRoutingModule } from './routes-routing.module'; |
| | | import { environment } from '@env/environment'; |
| | | // dashboard pages |
| | | import { DashboardV1Component } from './dashboard/v1/v1.component'; |
| | | import { DashboardAnalysisComponent } from './dashboard/analysis/analysis.component'; |
| | | import { DashboardMonitorComponent } from './dashboard/monitor/monitor.component'; |
| | | import { DashboardWorkplaceComponent } from './dashboard/workplace/workplace.component'; |
| | | import { CoreModule } from '@core/core.module'; |
| | | // region: zorro modules |
| | | // Statics |
| | | import 'rxjs/add/observable/throw'; |
| | | |
| | |
| | | import 'rxjs/add/operator/switchMap'; |
| | | import 'rxjs/add/operator/toPromise'; |
| | | import 'rxjs/add/operator/filter'; |
| | | |
| | | @NgModule({ |
| | | imports: [ |
| | | SharedModule, |
| | | RouterModule.forRoot(routes, { useHash: environment.useHash }) |
| | | ], |
| | | imports: [ SharedModule, RouteRoutingModule ], |
| | | declarations: [ |
| | | DashboardV1Component, |
| | | DashboardAnalysisComponent, |
| | | DashboardMonitorComponent, |
| | | DashboardWorkplaceComponent |
| | | ], |
| | | exports: [ |
| | | RouterModule |
| | | DashboardWorkplaceComponent, |
| | | ], |
| | | providers: [ |
| | | _HttpClient |
| | | _HttpClient, |
| | | DateService |
| | | ] |
| | | }) |
| | | |
New file |
| | |
| | | # ShareModule |
| | | |
| | | **应** 包含定义: |
| | | |
| | | + 应用通用自定义业务组件 |
| | | |
| | | **应** 导出所有包含的模块。 |
| | | |
| | | **不应** 有 `providers` 属性。 |
| | | |
| | | ## 自定义全局组件或指令 |
| | | |
| | | 每一个组件或指令应该有一个完整的说明文件,**建议**一个合理的目录结构应该是: |
| | | |
| | | ``` |
| | | ├── components |
| | | │ ├── comp1 |
| | | │ │ ├── index.ts |
| | | │ │ ├── README.md |
| | | │ ├── comp2 |
| | | │ │ ├── index.ts |
| | | │ │ ├── README.md |
| | | ├── directives |
| | | │ ├── dire1 |
| | | │ │ ├── index.ts |
| | | │ │ ├── README.md |
| | | │ ├── dire2 |
| | | │ │ ├── index.ts |
| | | │ │ ├── README.md |
| | | ``` |
| | |
| | | import { NgModule, ModuleWithProviders } from '@angular/core'; |
| | | import { NgModule } from '@angular/core'; |
| | | import { CommonModule } from '@angular/common'; |
| | | import { ReactiveFormsModule, FormsModule } from '@angular/forms'; |
| | | import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; |
| | | import { RouterModule } from '@angular/router'; |
| | | |
| | | // delon |
| | | import { NgZorroAntdExtraModule } from 'ng-zorro-antd-extra'; |
| | | import { AlainThemeModule } from '@delon/theme'; |
| | | import { AlainABCModule } from '@delon/abc'; |
| | | import { AlainACLModule } from '@delon/acl'; |
| | | |
| | | // third libs |
| | | import { CountdownModule } from 'ngx-countdown'; |
| | | |
| | | import { ZORROMODULES, ABCMODULES } from '../delon.module'; |
| | | // i18n |
| | | import { TranslateModule } from '@ngx-translate/core'; |
| | | import { I18NService } from '@core/i18n/i18n.service'; |
| | | |
| | | import { |
| | | // LoggerModule, |
| | | // NzLocaleModule, |
| | | NzButtonModule, |
| | | NzAlertModule, |
| | | NzBadgeModule, |
| | | // NzCalendarModule, |
| | | NzCascaderModule, |
| | | NzCheckboxModule, |
| | | NzDatePickerModule, |
| | | NzFormModule, |
| | | NzInputModule, |
| | | NzInputNumberModule, |
| | | NzGridModule, |
| | | NzMessageModule, |
| | | NzModalModule, |
| | | NzNotificationModule, |
| | | NzPaginationModule, |
| | | NzPopconfirmModule, |
| | | NzPopoverModule, |
| | | NzRadioModule, |
| | | NzRateModule, |
| | | NzSelectModule, |
| | | NzSpinModule, |
| | | NzSliderModule, |
| | | NzSwitchModule, |
| | | NzProgressModule, |
| | | NzTableModule, |
| | | NzTabsModule, |
| | | NzTagModule, |
| | | NzTimePickerModule, |
| | | NzUtilModule, |
| | | NzStepsModule, |
| | | NzDropDownModule, |
| | | NzMenuModule, |
| | | NzBreadCrumbModule, |
| | | NzLayoutModule, |
| | | NzRootModule, |
| | | NzCarouselModule, |
| | | // NzCardModule, |
| | | NzCollapseModule, |
| | | NzTimelineModule, |
| | | NzToolTipModule, |
| | | // NzBackTopModule, |
| | | // NzAffixModule, |
| | | // NzAnchorModule, |
| | | NzAvatarModule, |
| | | // SERVICES |
| | | NzNotificationService, |
| | | NzMessageService |
| | | } from 'ng-zorro-antd'; |
| | | const ZORROMODULES = [ |
| | | // LoggerModule, |
| | | // NzLocaleModule, |
| | | NzButtonModule, |
| | | NzAlertModule, |
| | | NzBadgeModule, |
| | | // NzCalendarModule, |
| | | NzCascaderModule, |
| | | NzCheckboxModule, |
| | | NzDatePickerModule, |
| | | NzFormModule, |
| | | NzInputModule, |
| | | NzInputNumberModule, |
| | | NzGridModule, |
| | | NzMessageModule, |
| | | NzModalModule, |
| | | NzNotificationModule, |
| | | NzPaginationModule, |
| | | NzPopconfirmModule, |
| | | NzPopoverModule, |
| | | NzRadioModule, |
| | | NzRateModule, |
| | | NzSelectModule, |
| | | NzSpinModule, |
| | | NzSliderModule, |
| | | NzSwitchModule, |
| | | NzProgressModule, |
| | | NzTableModule, |
| | | NzTabsModule, |
| | | NzTagModule, |
| | | NzTimePickerModule, |
| | | NzUtilModule, |
| | | NzStepsModule, |
| | | NzDropDownModule, |
| | | NzMenuModule, |
| | | NzBreadCrumbModule, |
| | | NzLayoutModule, |
| | | NzRootModule, |
| | | NzCarouselModule, |
| | | // NzCardModule, |
| | | NzCollapseModule, |
| | | NzTimelineModule, |
| | | NzToolTipModule, |
| | | // NzBackTopModule, |
| | | // NzAffixModule, |
| | | // NzAnchorModule, |
| | | NzAvatarModule |
| | | ]; |
| | | // region: third libs |
| | | import { CountdownModule } from 'ngx-countdown'; |
| | | const THIRDMODULES = [ CountdownModule ]; |
| | | // endregion |
| | | |
| | | // region: @delon/abc modules |
| | | import { |
| | | AdAvatarListModule, |
| | | AdChartsModule, |
| | | AdCountDownModule, |
| | | AdDescListModule, |
| | | AdEllipsisModule, |
| | | AdErrorCollectModule, |
| | | AdExceptionModule, |
| | | AdFooterToolbarModule, |
| | | AdGlobalFooterModule, |
| | | AdNoticeIconModule, |
| | | AdNumberInfoModule, |
| | | AdProHeaderModule, |
| | | AdResultModule, |
| | | AdSidebarNavModule, |
| | | AdStandardFormRowModule, |
| | | AdTagSelectModule, |
| | | AdTrendModule, |
| | | AdDownFileModule, |
| | | AdImageModule, |
| | | AdUtilsModule |
| | | } from '@delon/abc'; |
| | | import { _HttpClient } from '@delon/theme/services/http/http.client'; |
| | | import { CoreModule } from '@core/core.module'; |
| | | const ABCMODULES = [ |
| | | AdAvatarListModule, |
| | | AdChartsModule, |
| | | AdCountDownModule, |
| | | AdDescListModule, |
| | | AdEllipsisModule, |
| | | AdErrorCollectModule, |
| | | AdExceptionModule, |
| | | AdFooterToolbarModule, |
| | | AdGlobalFooterModule, |
| | | AdNoticeIconModule, |
| | | AdNumberInfoModule, |
| | | AdProHeaderModule, |
| | | AdResultModule, |
| | | AdSidebarNavModule, |
| | | AdStandardFormRowModule, |
| | | AdTagSelectModule, |
| | | AdTrendModule, |
| | | AdDownFileModule, |
| | | AdImageModule, |
| | | AdUtilsModule |
| | | ]; |
| | | // region: your componets & directives |
| | | const COMPONENTS = []; |
| | | const DIRECTIVES = []; |
| | | // endregion |
| | | |
| | | @NgModule({ |
| | |
| | | FormsModule, |
| | | RouterModule, |
| | | ReactiveFormsModule, |
| | | HttpClientModule, |
| | | ...ZORROMODULES, |
| | | NgZorroAntdExtraModule.forRoot(), |
| | | NgZorroAntdExtraModule, |
| | | AlainThemeModule.forChild(), |
| | | ...ABCMODULES, |
| | | AlainACLModule.forRoot(), |
| | | AlainACLModule, |
| | | // third libs |
| | | CountdownModule |
| | | ...THIRDMODULES |
| | | ], |
| | | declarations: [ |
| | | // your components |
| | | ...COMPONENTS, |
| | | ...DIRECTIVES |
| | | ], |
| | | exports: [ |
| | | CommonModule, |
| | |
| | | NgZorroAntdExtraModule, |
| | | AlainThemeModule, |
| | | ...ABCMODULES, |
| | | AlainACLModule, |
| | | // i18n |
| | | TranslateModule, |
| | | // third libs |
| | | CountdownModule |
| | | ...THIRDMODULES, |
| | | // your components |
| | | ...COMPONENTS, |
| | | ...DIRECTIVES |
| | | ] |
| | | }) |
| | | export class SharedModule { |
| | | static forRoot(): ModuleWithProviders { |
| | | return { |
| | | ngModule: SharedModule, |
| | | providers: [ |
| | | // ng-zorro-antd Services |
| | | NzNotificationService, |
| | | NzMessageService |
| | | ] |
| | | }; |
| | | } |
| | | } |
| | | export class SharedModule { } |
| | |
| | | { |
| | | "app": { |
| | | "name": "监控平台", |
| | | "description": "七星博士工业级监控平台" |
| | | }, |
| | | "user": { |
| | | "name": "管理员", |
| | | "avatar": "./assets/img/zorro.svg", |
| | | "email": "23420800@qq.com" |
| | | }, |
| | | "menu": [{ |
| | | "text": "导航菜单", |
| | | "translate": "main_navigation", |
| | | "group": true, |
| | | "children": [{ |
| | | "text": "首页", |
| | | "translate": "home", |
| | | "link": "/dashboard", |
| | | "icon": "icon-cup" |
| | | }, { |
| | | "text": "用户管理", |
| | | "translate": "user_management", |
| | | "link": "/", |
| | | "icon": "icon-user", |
| | | "children": [{ |
| | | "text": "安装用户", |
| | | "link": "/users/installer", |
| | | "translate": "user_management_install" |
| | | }, { |
| | | "text": "报警用户", |
| | | "link": "/users/alarm-user", |
| | | "translate": "user_management_alarm-user" |
| | | }] |
| | | }, { |
| | | "text": "设备管理", |
| | | "translate": "device_management", |
| | | "link": "/", |
| | | "icon": "icon-grid", |
| | | "children": [{ |
| | | "text": "基本信息", |
| | | "link": "/devices/basic", |
| | | "translate": "device_management_info" |
| | | }, { |
| | | "text": "型号配置", |
| | | "link": "/devices/version", |
| | | "translate": "device_management_version" |
| | | }, { |
| | | "text": "监测区管理", |
| | | "link": "/devices/monitor-point", |
| | | "translate": "device_management_point" |
| | | }] |
| | | }, { |
| | | "text": "传感器管理", |
| | | "translate": "sensor_management", |
| | | "link": "/", |
| | | "icon": "icon-note", |
| | | "children": [{ |
| | | "text": "基本信息", |
| | | "link": "/sensors/basic", |
| | | "translate": "device_management_info" |
| | | }] |
| | | }, { |
| | | "text": "系统管理", |
| | | "translate": "system_management", |
| | | "link": "/", |
| | | "icon": "icon-note", |
| | | "children": [ |
| | | { |
| | | "text": "账户管理", |
| | | "link": "/systems/account", |
| | | "translate": "system_management_account" |
| | | }, |
| | | { |
| | | "text": "组织管理", |
| | | "link": "/systems/organization" |
| | | "app": { |
| | | "name": "Alain", |
| | | "description": "Ng-zorro admin panel front-end framework" |
| | | }, |
| | | "user": { |
| | | "name": "Admin", |
| | | "avatar": "./assets/img/zorro.svg", |
| | | "email": "cipchk@qq.com" |
| | | }, |
| | | "menu": [{ |
| | | "text": "主导航", |
| | | "translate": "main_navigation", |
| | | "group": true, |
| | | "children": [{ |
| | | "text": "仪表盘", |
| | | "link": "/dashboard", |
| | | "icon": "icon-speedometer", |
| | | "children": [{ |
| | | "text": "仪表盘V1", |
| | | "link": "/dashboard/v1", |
| | | "translate": "dashboard_v1" |
| | | }, { |
| | | "text": "分析页", |
| | | "link": "/dashboard/analysis" |
| | | }, { |
| | | "text": "Monitor", |
| | | "link": "/dashboard/monitor", |
| | | "translate": "dashboard_monitor" |
| | | }, { |
| | | "text": "Workplace", |
| | | "link": "/dashboard/workplace", |
| | | "translate": "dashboard_workplace" |
| | | }] |
| | | }, { |
| | | "text": "快捷菜单", |
| | | "translate": "shortcut", |
| | | "icon": "icon-rocket", |
| | | "shortcut_root": true, |
| | | "children": [] |
| | | }] |
| | | }, { |
| | | "text": "系统管理", |
| | | "group": true, |
| | | "children": [{ |
| | | "text": "用户管理", |
| | | "link": "/users", |
| | | "icon": "icon-user", |
| | | "children": [{ |
| | | "text": "安装用户", |
| | | "link": "/users/installer" |
| | | }, { |
| | | "text": "报警用户", |
| | | "link": "/users/alarm-user" |
| | | }] |
| | | }, { |
| | | "text": "设备管理", |
| | | "link": "/devices", |
| | | "icon": "icon-grid", |
| | | "children": [{ |
| | | "text": "基本信息", |
| | | "link": "/devices/basic" |
| | | }, { |
| | | "text": "型号配置", |
| | | "link": "/devices/version" |
| | | }, { |
| | | "text": "监测区管理", |
| | | "link": "/devices/monitor-point" |
| | | }] |
| | | }, { |
| | | "text": "传感器管理", |
| | | "link": "/sensors", |
| | | "icon": "icon-note", |
| | | "children": [{ |
| | | "text": "基本信息", |
| | | "link": "/sensors/basic" |
| | | }] |
| | | }, { |
| | | "text": "系统管理", |
| | | "link": "/systems", |
| | | "icon": "icon-note", |
| | | "children": [ |
| | | { |
| | | "text": "账户管理", |
| | | "link": "/systems/account" |
| | | }, |
| | | { |
| | | "text": "组织管理", |
| | | "link": "/systems/organization" |
| | | } |
| | | ] |
| | | } |
| | | |
| | | ] |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | ] |
| | | }] |
| | | }] |
| | | } |
| | |
| | | { |
| | | "home": "Home", |
| | | |
| | | |
| | | |
| | | "settings": "Settings", |
| | | "profile": "Profile", |
| | | "login": "Login", |
| | |
| | | "typography": "Typography", |
| | | "iconsfont": "Iconsfont", |
| | | "colors": "Colors", |
| | | "other": "Other", |
| | | "split": "Split", |
| | | "clipboard": "Clipboard", |
| | | "forms": "Forms", |
| | | "extended": "Extended", |
| | | "standard": "Standard", |
| | | "validation": "Validation", |
| | | "upload": "Upload", |
| | | "cropper": "Image Crop", |
| | | "editor": "Editor", |
| | | "charts": "Charts", |
| | | "tables": "Tables", |
| | | "fs-table": "Fullscreen Table", |
| | | "maps": "Maps", |
| | | "qq": "QQ", |
| | | "baidu": "Baidu", |
| | | "logics": "Logics", |
| | | "guard": "Route Guard", |
| | | "cache": "Cache", |
| | | "acl": "ACL", |
| | | "downfile": "Down File", |
| | | "report": "Report", |
| | |
| | | { |
| | | "home": "主页", |
| | | "user_management": "用户管理", |
| | | "user_management_install": "安装用户", |
| | | "user_management_alarm-user": "报警用户", |
| | | "device_management": "设备管理", |
| | | "device_management_info": "基本信息", |
| | | "device_management_version": "型号配置", |
| | | "device_management_point": "监测区管理", |
| | | |
| | | "sensor_management": "传感器管理", |
| | | "sensor_management_info": "基本信息", |
| | | |
| | | "system_management":"系统管理", |
| | | "system_management_account":"账户管理", |
| | | |
| | | "settings": "设置", |
| | | "profile": "个人资料", |
| | | "login": "登录", |
| | |
| | | "typography": "字体排印", |
| | | "iconsfont": "icon图标", |
| | | "colors": "色彩", |
| | | "other": "其它", |
| | | "split": "拆分视图", |
| | | "clipboard": "剪贴板", |
| | | "forms": "表单", |
| | | "standard": "标准", |
| | | "extended": "扩展", |
| | | "validation": "校验", |
| | | "upload": "上传", |
| | | "cropper": "图片裁剪", |
| | | "editor": "编辑器", |
| | | "charts": "图表", |
| | | "tables": "表格", |
| | | "fs-table": "全屏表格", |
| | | "maps": "地图", |
| | | "qq": "QQ", |
| | | "baidu": "百度", |
| | | "logics": "常用逻辑", |
| | | "guard": "路由守卫", |
| | | "cache": "字典缓存", |
| | | "acl": "基于角色访问控制", |
| | | "downfile": "下载文件", |
| | | "report": "报表", |
New file |
| | |
| | | [{ |
| | | "title": "antd: Directional Icons", |
| | | "prefix": "anticon anticon-", |
| | | "tpl": "<i class=\"anticon anticon-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "step-backward" |
| | | }, { |
| | | "k": "step-forward" |
| | | }, { |
| | | "k": "fast-backward" |
| | | }, { |
| | | "k": "fast-forward" |
| | | }, { |
| | | "k": "shrink" |
| | | }, { |
| | | "k": "arrows-alt" |
| | | }, { |
| | | "k": "down" |
| | | }, { |
| | | "k": "up" |
| | | }, { |
| | | "k": "left" |
| | | }, { |
| | | "k": "right" |
| | | }, { |
| | | "k": "caret-up" |
| | | }, { |
| | | "k": "caret-down" |
| | | }, { |
| | | "k": "caret-left" |
| | | }, { |
| | | "k": "caret-right" |
| | | }, { |
| | | "k": "up-circle" |
| | | }, { |
| | | "k": "down-circle" |
| | | }, { |
| | | "k": "left-circle" |
| | | }, { |
| | | "k": "right-circle" |
| | | }, { |
| | | "k": "up-circle-o" |
| | | }, { |
| | | "k": "down-circle-o" |
| | | }, { |
| | | "k": "right-circle-o" |
| | | }, { |
| | | "k": "left-circle-o" |
| | | }, { |
| | | "k": "double-right" |
| | | }, { |
| | | "k": "double-left" |
| | | }, { |
| | | "k": "verticle-left" |
| | | }, { |
| | | "k": "verticle-right" |
| | | }, { |
| | | "k": "forward" |
| | | }, { |
| | | "k": "backward" |
| | | }, { |
| | | "k": "rollback" |
| | | }, { |
| | | "k": "enter" |
| | | }, { |
| | | "k": "retweet" |
| | | }, { |
| | | "k": "swap" |
| | | }, { |
| | | "k": "swap-left" |
| | | }, { |
| | | "k": "swap-right" |
| | | }, { |
| | | "k": "arrow-up" |
| | | }, { |
| | | "k": "arrow-down" |
| | | }, { |
| | | "k": "arrow-left" |
| | | }, { |
| | | "k": "arrow-right" |
| | | }, { |
| | | "k": "play-circle" |
| | | }, { |
| | | "k": "play-circle-o" |
| | | }, { |
| | | "k": "up-square" |
| | | }, { |
| | | "k": "down-square" |
| | | }, { |
| | | "k": "left-square" |
| | | }, { |
| | | "k": "right-square" |
| | | }, { |
| | | "k": "up-square-o" |
| | | }, { |
| | | "k": "down-square-o" |
| | | }, { |
| | | "k": "left-square-o" |
| | | }, { |
| | | "k": "right-square-o" |
| | | }, { |
| | | "k": "login" |
| | | }, { |
| | | "k": "logout" |
| | | }, { |
| | | "k": "menu-fold" |
| | | }, { |
| | | "k": "menu-unfold" |
| | | }] |
| | | }, |
| | | { |
| | | "title": "antd: Suggested Icons", |
| | | "prefix": "anticon anticon-", |
| | | "tpl": "<i class=\"anticon anticon-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "question" |
| | | }, { |
| | | "k": "question-circle-o" |
| | | }, { |
| | | "k": "question-circle" |
| | | }, { |
| | | "k": "plus" |
| | | }, { |
| | | "k": "plus-circle-o" |
| | | }, { |
| | | "k": "plus-circle" |
| | | }, { |
| | | "k": "pause" |
| | | }, { |
| | | "k": "pause-circle-o" |
| | | }, { |
| | | "k": "pause-circle" |
| | | }, { |
| | | "k": "minus" |
| | | }, { |
| | | "k": "minus-circle-o" |
| | | }, { |
| | | "k": "minus-circle" |
| | | }, { |
| | | "k": "plus-square" |
| | | }, { |
| | | "k": "plus-square-o" |
| | | }, { |
| | | "k": "minus-square" |
| | | }, { |
| | | "k": "minus-square-o" |
| | | }, { |
| | | "k": "info" |
| | | }, { |
| | | "k": "info-circle-o" |
| | | }, { |
| | | "k": "info-circle" |
| | | }, { |
| | | "k": "exclamation" |
| | | }, { |
| | | "k": "exclamation-circle-o" |
| | | }, { |
| | | "k": "exclamation-circle" |
| | | }, { |
| | | "k": "close" |
| | | }, { |
| | | "k": "close-circle" |
| | | }, { |
| | | "k": "close-circle-o" |
| | | }, { |
| | | "k": "close-square" |
| | | }, { |
| | | "k": "close-square-o" |
| | | }, { |
| | | "k": "check" |
| | | }, { |
| | | "k": "check-circle" |
| | | }, { |
| | | "k": "check-circle-o" |
| | | }, { |
| | | "k": "check-square" |
| | | }, { |
| | | "k": "check-square-o" |
| | | }, { |
| | | "k": "clock-circle-o" |
| | | }, { |
| | | "k": "clock-circle" |
| | | }] |
| | | }, |
| | | { |
| | | "title": "antd: Application Icons", |
| | | "prefix": "anticon anticon-", |
| | | "tpl": "<i class=\"anticon anticon-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "android" |
| | | }, { |
| | | "k": "android-o" |
| | | }, { |
| | | "k": "apple" |
| | | }, { |
| | | "k": "apple-o" |
| | | }, { |
| | | "k": "windows" |
| | | }, { |
| | | "k": "windows-o" |
| | | }, { |
| | | "k": "ie" |
| | | }, { |
| | | "k": "chrome" |
| | | }, { |
| | | "k": "github" |
| | | }, { |
| | | "k": "aliwangwang" |
| | | }, { |
| | | "k": "aliwangwang-o" |
| | | }, { |
| | | "k": "dingding" |
| | | }, { |
| | | "k": "dingding-o" |
| | | }] |
| | | }, |
| | | { |
| | | "title": "antd: Application Icons", |
| | | "prefix": "anticon anticon-", |
| | | "tpl": "<i class=\"anticon anticon-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "lock" |
| | | }, { |
| | | "k": "unlock" |
| | | }, { |
| | | "k": "area-chart" |
| | | }, { |
| | | "k": "pie-chart" |
| | | }, { |
| | | "k": "bar-chart" |
| | | }, { |
| | | "k": "dot-chart" |
| | | }, { |
| | | "k": "bars" |
| | | }, { |
| | | "k": "book" |
| | | }, { |
| | | "k": "calendar" |
| | | }, { |
| | | "k": "cloud" |
| | | }, { |
| | | "k": "cloud-download" |
| | | }, { |
| | | "k": "code" |
| | | }, { |
| | | "k": "code-o" |
| | | }, { |
| | | "k": "copy" |
| | | }, { |
| | | "k": "credit-card" |
| | | }, { |
| | | "k": "delete" |
| | | }, { |
| | | "k": "desktop" |
| | | }, { |
| | | "k": "download" |
| | | }, { |
| | | "k": "edit" |
| | | }, { |
| | | "k": "ellipsis" |
| | | }, { |
| | | "k": "file" |
| | | }, { |
| | | "k": "file-text" |
| | | }, { |
| | | "k": "file-unknown" |
| | | }, { |
| | | "k": "file-pdf" |
| | | }, { |
| | | "k": "file-excel" |
| | | }, { |
| | | "k": "file-jpg" |
| | | }, { |
| | | "k": "file-ppt" |
| | | }, { |
| | | "k": "file-add" |
| | | }, { |
| | | "k": "folder" |
| | | }, { |
| | | "k": "folder-open" |
| | | }, { |
| | | "k": "folder-add" |
| | | }, { |
| | | "k": "hdd" |
| | | }, { |
| | | "k": "frown" |
| | | }, { |
| | | "k": "frown-o" |
| | | }, { |
| | | "k": "meh" |
| | | }, { |
| | | "k": "meh-o" |
| | | }, { |
| | | "k": "smile" |
| | | }, { |
| | | "k": "smile-o" |
| | | }, { |
| | | "k": "inbox" |
| | | }, { |
| | | "k": "laptop" |
| | | }, { |
| | | "k": "appstore-o" |
| | | }, { |
| | | "k": "appstore" |
| | | }, { |
| | | "k": "line-chart" |
| | | }, { |
| | | "k": "link" |
| | | }, { |
| | | "k": "mail" |
| | | }, { |
| | | "k": "mobile" |
| | | }, { |
| | | "k": "notification" |
| | | }, { |
| | | "k": "paper-clip" |
| | | }, { |
| | | "k": "picture" |
| | | }, { |
| | | "k": "poweroff" |
| | | }, { |
| | | "k": "reload" |
| | | }, { |
| | | "k": "search" |
| | | }, { |
| | | "k": "setting" |
| | | }, { |
| | | "k": "share-alt" |
| | | }, { |
| | | "k": "shopping-cart" |
| | | }, { |
| | | "k": "tablet" |
| | | }, { |
| | | "k": "tag" |
| | | }, { |
| | | "k": "tag-o" |
| | | }, { |
| | | "k": "tags" |
| | | }, { |
| | | "k": "tags-o" |
| | | }, { |
| | | "k": "to-top" |
| | | }, { |
| | | "k": "upload" |
| | | }, { |
| | | "k": "user" |
| | | }, { |
| | | "k": "video-camera" |
| | | }, { |
| | | "k": "home" |
| | | }, { |
| | | "k": "loading" |
| | | }, { |
| | | "k": "loading-3-quarters" |
| | | }, { |
| | | "k": "cloud-upload-o" |
| | | }, { |
| | | "k": "cloud-download-o" |
| | | }, { |
| | | "k": "cloud-upload" |
| | | }, { |
| | | "k": "cloud-o" |
| | | }, { |
| | | "k": "star-o" |
| | | }, { |
| | | "k": "star" |
| | | }, { |
| | | "k": "heart-o" |
| | | }, { |
| | | "k": "heart" |
| | | }, { |
| | | "k": "environment" |
| | | }, { |
| | | "k": "environment-o" |
| | | }, { |
| | | "k": "eye" |
| | | }, { |
| | | "k": "eye-o" |
| | | }, { |
| | | "k": "camera" |
| | | }, { |
| | | "k": "camera-o" |
| | | }, { |
| | | "k": "save" |
| | | }, { |
| | | "k": "team" |
| | | }, { |
| | | "k": "solution" |
| | | }, { |
| | | "k": "phone" |
| | | }, { |
| | | "k": "filter" |
| | | }, { |
| | | "k": "exception" |
| | | }, { |
| | | "k": "export" |
| | | }, { |
| | | "k": "customer-service" |
| | | }, { |
| | | "k": "qrcode" |
| | | }, { |
| | | "k": "scan" |
| | | }, { |
| | | "k": "like" |
| | | }, { |
| | | "k": "like-o" |
| | | }, { |
| | | "k": "dislike" |
| | | }, { |
| | | "k": "dislike-o" |
| | | }, { |
| | | "k": "message" |
| | | }, { |
| | | "k": "pay-circle" |
| | | }, { |
| | | "k": "pay-circle-o" |
| | | }, { |
| | | "k": "calculator" |
| | | }, { |
| | | "k": "pushpin" |
| | | }, { |
| | | "k": "pushpin-o" |
| | | }, { |
| | | "k": "bulb" |
| | | }, { |
| | | "k": "select" |
| | | }, { |
| | | "k": "switcher" |
| | | }, { |
| | | "k": "rocket" |
| | | }, { |
| | | "k": "bell" |
| | | }, { |
| | | "k": "disconnect" |
| | | }, { |
| | | "k": "database" |
| | | }, { |
| | | "k": "compass" |
| | | }, { |
| | | "k": "barcode" |
| | | }, { |
| | | "k": "hourglass" |
| | | }, { |
| | | "k": "key" |
| | | }, { |
| | | "k": "flag" |
| | | }, { |
| | | "k": "layout" |
| | | }, { |
| | | "k": "printer" |
| | | }, { |
| | | "k": "sound" |
| | | }, { |
| | | "k": "usb" |
| | | }, { |
| | | "k": "skin" |
| | | }, { |
| | | "k": "tool" |
| | | }, { |
| | | "k": "sync" |
| | | }, { |
| | | "k": "wifi" |
| | | }, { |
| | | "k": "car" |
| | | }, { |
| | | "k": "schedule" |
| | | }, { |
| | | "k": "user-add" |
| | | }, { |
| | | "k": "user-delete" |
| | | }, { |
| | | "k": "usergroup-add" |
| | | }, { |
| | | "k": "usergroup-delete" |
| | | }, { |
| | | "k": "man" |
| | | }, { |
| | | "k": "woman" |
| | | }, { |
| | | "k": "shop" |
| | | }, { |
| | | "k": "gift" |
| | | }, { |
| | | "k": "idcard" |
| | | }, { |
| | | "k": "medicine-box" |
| | | }, { |
| | | "k": "red-envelope" |
| | | }, { |
| | | "k": "coffee" |
| | | }, { |
| | | "k": "copyright" |
| | | }, { |
| | | "k": "trademark" |
| | | }, { |
| | | "k": "safety" |
| | | }, { |
| | | "k": "wallet" |
| | | }, { |
| | | "k": "bank" |
| | | }, { |
| | | "k": "trophy" |
| | | }, { |
| | | "k": "contacts" |
| | | }, { |
| | | "k": "global" |
| | | }, { |
| | | "k": "shake" |
| | | }, { |
| | | "k": "api" |
| | | }, { |
| | | "k": "fork" |
| | | }] |
| | | }, |
| | | { |
| | | "title": "antd: Brand and Logos", |
| | | "prefix": "anticon anticon-", |
| | | "tpl": "<i class=\"anticon anticon-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "android" |
| | | }, { |
| | | "k": "android-o" |
| | | }, { |
| | | "k": "apple" |
| | | }, { |
| | | "k": "apple-o" |
| | | }, { |
| | | "k": "windows" |
| | | }, { |
| | | "k": "windows-o" |
| | | }, { |
| | | "k": "ie" |
| | | }, { |
| | | "k": "chrome" |
| | | }, { |
| | | "k": "github" |
| | | }, { |
| | | "k": "aliwangwang" |
| | | }, { |
| | | "k": "aliwangwang-o" |
| | | }, { |
| | | "k": "dingding" |
| | | }, { |
| | | "k": "dingding-o" |
| | | }] |
| | | }, |
| | | { |
| | | "title": "Simple Line icons", |
| | | "prefix": "icon-", |
| | | "tpl": "<i class=\"icon-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "user" |
| | | }, { |
| | | "k": "people" |
| | | }, { |
| | | "k": "user-female" |
| | | }, { |
| | | "k": "user-follow" |
| | | }, { |
| | | "k": "user-following" |
| | | }, { |
| | | "k": "user-unfollow" |
| | | }, { |
| | | "k": "login" |
| | | }, { |
| | | "k": "logout" |
| | | }, { |
| | | "k": "emotsmile" |
| | | }, { |
| | | "k": "phone" |
| | | }, { |
| | | "k": "call-end" |
| | | }, { |
| | | "k": "call-in" |
| | | }, { |
| | | "k": "call-out" |
| | | }, { |
| | | "k": "map" |
| | | }, { |
| | | "k": "location-pin" |
| | | }, { |
| | | "k": "direction" |
| | | }, { |
| | | "k": "directions" |
| | | }, { |
| | | "k": "compass" |
| | | }, { |
| | | "k": "layers" |
| | | }, { |
| | | "k": "menu" |
| | | }, { |
| | | "k": "list" |
| | | }, { |
| | | "k": "options-vertical" |
| | | }, { |
| | | "k": "options" |
| | | }, { |
| | | "k": "arrow-down" |
| | | }, { |
| | | "k": "arrow-left" |
| | | }, { |
| | | "k": "arrow-right" |
| | | }, { |
| | | "k": "arrow-up" |
| | | }, { |
| | | "k": "arrow-up-circle" |
| | | }, { |
| | | "k": "arrow-left-circle" |
| | | }, { |
| | | "k": "arrow-right-circle" |
| | | }, { |
| | | "k": "arrow-down-circle" |
| | | }, { |
| | | "k": "check" |
| | | }, { |
| | | "k": "clock" |
| | | }, { |
| | | "k": "plus" |
| | | }, { |
| | | "k": "close" |
| | | }, { |
| | | "k": "trophy" |
| | | }, { |
| | | "k": "screen-smartphone" |
| | | }, { |
| | | "k": "screen-desktop" |
| | | }, { |
| | | "k": "plane" |
| | | }, { |
| | | "k": "notebook" |
| | | }, { |
| | | "k": "mustache" |
| | | }, { |
| | | "k": "mouse" |
| | | }, { |
| | | "k": "magnet" |
| | | }, { |
| | | "k": "energy" |
| | | }, { |
| | | "k": "disc" |
| | | }, { |
| | | "k": "cursor" |
| | | }, { |
| | | "k": "cursor-move" |
| | | }, { |
| | | "k": "crop" |
| | | }, { |
| | | "k": "chemistry" |
| | | }, { |
| | | "k": "speedometer" |
| | | }, { |
| | | "k": "shield" |
| | | }, { |
| | | "k": "screen-tablet" |
| | | }, { |
| | | "k": "magic-wand" |
| | | }, { |
| | | "k": "hourglass" |
| | | }, { |
| | | "k": "graduation" |
| | | }, { |
| | | "k": "ghost" |
| | | }, { |
| | | "k": "game-controller" |
| | | }, { |
| | | "k": "fire" |
| | | }, { |
| | | "k": "eyeglass" |
| | | }, { |
| | | "k": "envelope-open" |
| | | }, { |
| | | "k": "envelope-letter" |
| | | }, { |
| | | "k": "bell" |
| | | }, { |
| | | "k": "badge" |
| | | }, { |
| | | "k": "anchor" |
| | | }, { |
| | | "k": "wallet" |
| | | }, { |
| | | "k": "vector" |
| | | }, { |
| | | "k": "speech" |
| | | }, { |
| | | "k": "puzzle" |
| | | }, { |
| | | "k": "printer" |
| | | }, { |
| | | "k": "present" |
| | | }, { |
| | | "k": "playlist" |
| | | }, { |
| | | "k": "pin" |
| | | }, { |
| | | "k": "picture" |
| | | }, { |
| | | "k": "handbag" |
| | | }, { |
| | | "k": "globe-alt" |
| | | }, { |
| | | "k": "globe" |
| | | }, { |
| | | "k": "folder-alt" |
| | | }, { |
| | | "k": "folder" |
| | | }, { |
| | | "k": "film" |
| | | }, { |
| | | "k": "feed" |
| | | }, { |
| | | "k": "drop" |
| | | }, { |
| | | "k": "drawar" |
| | | }, { |
| | | "k": "docs" |
| | | }, { |
| | | "k": "doc" |
| | | }, { |
| | | "k": "diamond" |
| | | }, { |
| | | "k": "cup" |
| | | }, { |
| | | "k": "calculator" |
| | | }, { |
| | | "k": "bubbles" |
| | | }, { |
| | | "k": "briefcase" |
| | | }, { |
| | | "k": "book-open" |
| | | }, { |
| | | "k": "basket-loaded" |
| | | }, { |
| | | "k": "basket" |
| | | }, { |
| | | "k": "bag" |
| | | }, { |
| | | "k": "action-undo" |
| | | }, { |
| | | "k": "action-redo" |
| | | }, { |
| | | "k": "wrench" |
| | | }, { |
| | | "k": "umbrella" |
| | | }, { |
| | | "k": "trash" |
| | | }, { |
| | | "k": "tag" |
| | | }, { |
| | | "k": "support" |
| | | }, { |
| | | "k": "frame" |
| | | }, { |
| | | "k": "size-fullscreen" |
| | | }, { |
| | | "k": "size-actual" |
| | | }, { |
| | | "k": "shuffle" |
| | | }, { |
| | | "k": "share-alt" |
| | | }, { |
| | | "k": "share" |
| | | }, { |
| | | "k": "rocket" |
| | | }, { |
| | | "k": "question" |
| | | }, { |
| | | "k": "pie-chart" |
| | | }, { |
| | | "k": "pencil" |
| | | }, { |
| | | "k": "note" |
| | | }, { |
| | | "k": "loop" |
| | | }, { |
| | | "k": "home" |
| | | }, { |
| | | "k": "grid" |
| | | }, { |
| | | "k": "graph" |
| | | }, { |
| | | "k": "microphone" |
| | | }, { |
| | | "k": "music-tone-alt" |
| | | }, { |
| | | "k": "music-tone" |
| | | }, { |
| | | "k": "earphones-alt" |
| | | }, { |
| | | "k": "earphones" |
| | | }, { |
| | | "k": "equalizer" |
| | | }, { |
| | | "k": "like" |
| | | }, { |
| | | "k": "dislike" |
| | | }, { |
| | | "k": "control-start" |
| | | }, { |
| | | "k": "control-rewind" |
| | | }, { |
| | | "k": "control-play" |
| | | }, { |
| | | "k": "control-pause" |
| | | }, { |
| | | "k": "control-forward" |
| | | }, { |
| | | "k": "control-end" |
| | | }, { |
| | | "k": "volume-1" |
| | | }, { |
| | | "k": "volume-2" |
| | | }, { |
| | | "k": "volume-off" |
| | | }, { |
| | | "k": "calendar" |
| | | }, { |
| | | "k": "bulb" |
| | | }, { |
| | | "k": "chart" |
| | | }, { |
| | | "k": "ban" |
| | | }, { |
| | | "k": "bubble" |
| | | }, { |
| | | "k": "camrecorder" |
| | | }, { |
| | | "k": "camera" |
| | | }, { |
| | | "k": "cloud-download" |
| | | }, { |
| | | "k": "cloud-upload" |
| | | }, { |
| | | "k": "envelope" |
| | | }, { |
| | | "k": "eye" |
| | | }, { |
| | | "k": "flag" |
| | | }, { |
| | | "k": "heart" |
| | | }, { |
| | | "k": "info" |
| | | }, { |
| | | "k": "key" |
| | | }, { |
| | | "k": "link" |
| | | }, { |
| | | "k": "lock" |
| | | }, { |
| | | "k": "lock-open" |
| | | }, { |
| | | "k": "magnifier" |
| | | }, { |
| | | "k": "magnifier-add" |
| | | }, { |
| | | "k": "magnifier-remove" |
| | | }, { |
| | | "k": "paper-clip" |
| | | }, { |
| | | "k": "paper-plane" |
| | | }, { |
| | | "k": "power" |
| | | }, { |
| | | "k": "refresh" |
| | | }, { |
| | | "k": "reload" |
| | | }, { |
| | | "k": "settings" |
| | | }, { |
| | | "k": "star" |
| | | }, { |
| | | "k": "symble-female" |
| | | }, { |
| | | "k": "symbol-male" |
| | | }, { |
| | | "k": "target" |
| | | }, { |
| | | "k": "credit-card" |
| | | }, { |
| | | "k": "paypal" |
| | | }, { |
| | | "k": "social-tumblr" |
| | | }, { |
| | | "k": "social-twitter" |
| | | }, { |
| | | "k": "social-facebook" |
| | | }, { |
| | | "k": "social-instagram" |
| | | }, { |
| | | "k": "social-linkedin" |
| | | }, { |
| | | "k": "social-pinterest" |
| | | }, { |
| | | "k": "social-github" |
| | | }, { |
| | | "k": "social-gplus" |
| | | }, { |
| | | "k": "social-reddit" |
| | | }, { |
| | | "k": "social-skype" |
| | | }, { |
| | | "k": "social-dribbble" |
| | | }, { |
| | | "k": "social-behance" |
| | | }, { |
| | | "k": "social-foursqare" |
| | | }, { |
| | | "k": "social-soundcloud" |
| | | }, { |
| | | "k": "social-spotify" |
| | | }, { |
| | | "k": "social-stumbleupon" |
| | | }, { |
| | | "k": "social-youtube" |
| | | }, { |
| | | "k": "social-dropbox" |
| | | }] |
| | | }, |
| | | { |
| | | "title": "fa: Web Application Icons", |
| | | "prefix": "fa fa-", |
| | | "tpl": "<i class=\"fa fa-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "adjust" |
| | | }, { |
| | | "k": "anchor" |
| | | }, { |
| | | "k": "archive" |
| | | }, { |
| | | "k": "area-chart" |
| | | }, { |
| | | "k": "arrows" |
| | | }, { |
| | | "k": "arrows-h" |
| | | }, { |
| | | "k": "arrows-v" |
| | | }, { |
| | | "k": "asterisk" |
| | | }, { |
| | | "k": "at" |
| | | }, { |
| | | "k": "automobile", |
| | | "a": true |
| | | }, { |
| | | "k": "ban" |
| | | }, { |
| | | "k": "bank", |
| | | "a": true |
| | | }, { |
| | | "k": "bar-chart" |
| | | }, { |
| | | "k": "bar-chart-o", |
| | | "a": true |
| | | }, { |
| | | "k": "barcode" |
| | | }, { |
| | | "k": "bars" |
| | | }, { |
| | | "k": "beer" |
| | | }, { |
| | | "k": "bell" |
| | | }, { |
| | | "k": "bell-o" |
| | | }, { |
| | | "k": "bell-slash" |
| | | }, { |
| | | "k": "bell-slash-o" |
| | | }, { |
| | | "k": "bicycle" |
| | | }, { |
| | | "k": "binoculars" |
| | | }, { |
| | | "k": "birthday-cake" |
| | | }, { |
| | | "k": "bolt" |
| | | }, { |
| | | "k": "bomb" |
| | | }, { |
| | | "k": "book" |
| | | }, { |
| | | "k": "bookmark" |
| | | }, { |
| | | "k": "bookmark-o" |
| | | }, { |
| | | "k": "briefcase" |
| | | }, { |
| | | "k": "bug" |
| | | }, { |
| | | "k": "building" |
| | | }, { |
| | | "k": "building-o" |
| | | }, { |
| | | "k": "bullhorn" |
| | | }, { |
| | | "k": "bullseye" |
| | | }, { |
| | | "k": "bus" |
| | | }, { |
| | | "k": "cab", |
| | | "a": true |
| | | }, { |
| | | "k": "calculator" |
| | | }, { |
| | | "k": "calendar" |
| | | }, { |
| | | "k": "calendar-o" |
| | | }, { |
| | | "k": "camera" |
| | | }, { |
| | | "k": "camera-retro" |
| | | }, { |
| | | "k": "car" |
| | | }, { |
| | | "k": "caret-square-o-down" |
| | | }, { |
| | | "k": "caret-square-o-left" |
| | | }, { |
| | | "k": "caret-square-o-right" |
| | | }, { |
| | | "k": "caret-square-o-up" |
| | | }, { |
| | | "k": "cc" |
| | | }, { |
| | | "k": "certificate" |
| | | }, { |
| | | "k": "check" |
| | | }, { |
| | | "k": "check-circle" |
| | | }, { |
| | | "k": "check-circle-o" |
| | | }, { |
| | | "k": "check-square" |
| | | }, { |
| | | "k": "check-square-o" |
| | | }, { |
| | | "k": "child" |
| | | }, { |
| | | "k": "circle" |
| | | }, { |
| | | "k": "circle-o" |
| | | }, { |
| | | "k": "circle-o-notch" |
| | | }, { |
| | | "k": "circle-thin" |
| | | }, { |
| | | "k": "clock-o" |
| | | }, { |
| | | "k": "close", |
| | | "a": true |
| | | }, { |
| | | "k": "cloud" |
| | | }, { |
| | | "k": "cloud-download" |
| | | }, { |
| | | "k": "cloud-upload" |
| | | }, { |
| | | "k": "code" |
| | | }, { |
| | | "k": "code-fork" |
| | | }, { |
| | | "k": "coffee" |
| | | }, { |
| | | "k": "cog" |
| | | }, { |
| | | "k": "cogs" |
| | | }, { |
| | | "k": "comment" |
| | | }, { |
| | | "k": "comment-o" |
| | | }, { |
| | | "k": "comments" |
| | | }, { |
| | | "k": "comments-o" |
| | | }, { |
| | | "k": "compass" |
| | | }, { |
| | | "k": "copyright" |
| | | }, { |
| | | "k": "credit-card" |
| | | }, { |
| | | "k": "crop" |
| | | }, { |
| | | "k": "crosshairs" |
| | | }, { |
| | | "k": "cube" |
| | | }, { |
| | | "k": "cubes" |
| | | }, { |
| | | "k": "cutlery" |
| | | }, { |
| | | "k": "dashboard", |
| | | "a": true |
| | | }, { |
| | | "k": "database" |
| | | }, { |
| | | "k": "desktop" |
| | | }, { |
| | | "k": "dot-circle-o" |
| | | }, { |
| | | "k": "download" |
| | | }, { |
| | | "k": "edit", |
| | | "a": true |
| | | }, { |
| | | "k": "ellipsis-h" |
| | | }, { |
| | | "k": "ellipsis-v" |
| | | }, { |
| | | "k": "envelope" |
| | | }, { |
| | | "k": "envelope-o" |
| | | }, { |
| | | "k": "envelope-square" |
| | | }, { |
| | | "k": "eraser" |
| | | }, { |
| | | "k": "exchange" |
| | | }, { |
| | | "k": "exclamation" |
| | | }, { |
| | | "k": "exclamation-circle" |
| | | }, { |
| | | "k": "exclamation-triangle" |
| | | }, { |
| | | "k": "external-link" |
| | | }, { |
| | | "k": "external-link-square" |
| | | }, { |
| | | "k": "eye" |
| | | }, { |
| | | "k": "eye-slash" |
| | | }, { |
| | | "k": "eyedropper" |
| | | }, { |
| | | "k": "fax" |
| | | }, { |
| | | "k": "female" |
| | | }, { |
| | | "k": "fighter-jet" |
| | | }, { |
| | | "k": "file-archive-o" |
| | | }, { |
| | | "k": "file-audio-o" |
| | | }, { |
| | | "k": "file-code-o" |
| | | }, { |
| | | "k": "file-excel-o" |
| | | }, { |
| | | "k": "file-image-o" |
| | | }, { |
| | | "k": "file-movie-o", |
| | | "a": true |
| | | }, { |
| | | "k": "file-pdf-o" |
| | | }, { |
| | | "k": "file-photo-o", |
| | | "a": true |
| | | }, { |
| | | "k": "file-picture-o", |
| | | "a": true |
| | | }, { |
| | | "k": "file-powerpoint-o" |
| | | }, { |
| | | "k": "file-sound-o", |
| | | "a": true |
| | | }, { |
| | | "k": "file-video-o" |
| | | }, { |
| | | "k": "file-word-o" |
| | | }, { |
| | | "k": "file-zip-o", |
| | | "a": true |
| | | }, { |
| | | "k": "film" |
| | | }, { |
| | | "k": "filter" |
| | | }, { |
| | | "k": "fire" |
| | | }, { |
| | | "k": "fire-extinguisher" |
| | | }, { |
| | | "k": "flag" |
| | | }, { |
| | | "k": "flag-checkered" |
| | | }, { |
| | | "k": "flag-o" |
| | | }, { |
| | | "k": "flash", |
| | | "a": true |
| | | }, { |
| | | "k": "flask" |
| | | }, { |
| | | "k": "folder" |
| | | }, { |
| | | "k": "folder-o" |
| | | }, { |
| | | "k": "folder-open" |
| | | }, { |
| | | "k": "folder-open-o" |
| | | }, { |
| | | "k": "frown-o" |
| | | }, { |
| | | "k": "futbol-o" |
| | | }, { |
| | | "k": "gamepad" |
| | | }, { |
| | | "k": "gavel" |
| | | }, { |
| | | "k": "gear", |
| | | "a": true |
| | | }, { |
| | | "k": "gears", |
| | | "a": true |
| | | }, { |
| | | "k": "gift" |
| | | }, { |
| | | "k": "glass" |
| | | }, { |
| | | "k": "globe" |
| | | }, { |
| | | "k": "graduation-cap" |
| | | }, { |
| | | "k": "group", |
| | | "a": true |
| | | }, { |
| | | "k": "hdd-o" |
| | | }, { |
| | | "k": "headphones" |
| | | }, { |
| | | "k": "heart" |
| | | }, { |
| | | "k": "heart-o" |
| | | }, { |
| | | "k": "history" |
| | | }, { |
| | | "k": "home" |
| | | }, { |
| | | "k": "image", |
| | | "a": true |
| | | }, { |
| | | "k": "inbox" |
| | | }, { |
| | | "k": "info" |
| | | }, { |
| | | "k": "info-circle" |
| | | }, { |
| | | "k": "institution", |
| | | "a": true |
| | | }, { |
| | | "k": "key" |
| | | }, { |
| | | "k": "keyboard-o" |
| | | }, { |
| | | "k": "language" |
| | | }, { |
| | | "k": "laptop" |
| | | }, { |
| | | "k": "leaf" |
| | | }, { |
| | | "k": "legal", |
| | | "a": true |
| | | }, { |
| | | "k": "lemon-o" |
| | | }, { |
| | | "k": "level-down" |
| | | }, { |
| | | "k": "level-up" |
| | | }, { |
| | | "k": "life-bouy", |
| | | "a": true |
| | | }, { |
| | | "k": "life-buoy", |
| | | "a": true |
| | | }, { |
| | | "k": "life-ring" |
| | | }, { |
| | | "k": "life-saver", |
| | | "a": true |
| | | }, { |
| | | "k": "lightbulb-o" |
| | | }, { |
| | | "k": "line-chart" |
| | | }, { |
| | | "k": "location-arrow" |
| | | }, { |
| | | "k": "lock" |
| | | }, { |
| | | "k": "magic" |
| | | }, { |
| | | "k": "magnet" |
| | | }, { |
| | | "k": "mail-forward", |
| | | "a": true |
| | | }, { |
| | | "k": "mail-reply", |
| | | "a": true |
| | | }, { |
| | | "k": "mail-reply-all", |
| | | "a": true |
| | | }, { |
| | | "k": "male" |
| | | }, { |
| | | "k": "map-marker" |
| | | }, { |
| | | "k": "meh-o" |
| | | }, { |
| | | "k": "microphone" |
| | | }, { |
| | | "k": "microphone-slash" |
| | | }, { |
| | | "k": "minus" |
| | | }, { |
| | | "k": "minus-circle" |
| | | }, { |
| | | "k": "minus-square" |
| | | }, { |
| | | "k": "minus-square-o" |
| | | }, { |
| | | "k": "mobile" |
| | | }, { |
| | | "k": "mobile-phone", |
| | | "a": true |
| | | }, { |
| | | "k": "money" |
| | | }, { |
| | | "k": "moon-o" |
| | | }, { |
| | | "k": "mortar-board", |
| | | "a": true |
| | | }, { |
| | | "k": "music" |
| | | }, { |
| | | "k": "navicon", |
| | | "a": true |
| | | }, { |
| | | "k": "newspaper-o" |
| | | }, { |
| | | "k": "paint-brush" |
| | | }, { |
| | | "k": "paper-plane" |
| | | }, { |
| | | "k": "paper-plane-o" |
| | | }, { |
| | | "k": "paw" |
| | | }, { |
| | | "k": "pencil" |
| | | }, { |
| | | "k": "pencil-square" |
| | | }, { |
| | | "k": "pencil-square-o" |
| | | }, { |
| | | "k": "phone" |
| | | }, { |
| | | "k": "phone-square" |
| | | }, { |
| | | "k": "photo", |
| | | "a": true |
| | | }, { |
| | | "k": "picture-o" |
| | | }, { |
| | | "k": "pie-chart" |
| | | }, { |
| | | "k": "plane" |
| | | }, { |
| | | "k": "plug" |
| | | }, { |
| | | "k": "plus" |
| | | }, { |
| | | "k": "plus-circle" |
| | | }, { |
| | | "k": "plus-square" |
| | | }, { |
| | | "k": "plus-square-o" |
| | | }, { |
| | | "k": "power-off" |
| | | }, { |
| | | "k": "print" |
| | | }, { |
| | | "k": "puzzle-piece" |
| | | }, { |
| | | "k": "qrcode" |
| | | }, { |
| | | "k": "question" |
| | | }, { |
| | | "k": "question-circle" |
| | | }, { |
| | | "k": "quote-left" |
| | | }, { |
| | | "k": "quote-right" |
| | | }, { |
| | | "k": "random" |
| | | }, { |
| | | "k": "recycle" |
| | | }, { |
| | | "k": "refresh" |
| | | }, { |
| | | "k": "remove", |
| | | "a": true |
| | | }, { |
| | | "k": "reorder", |
| | | "a": true |
| | | }, { |
| | | "k": "reply" |
| | | }, { |
| | | "k": "reply-all" |
| | | }, { |
| | | "k": "retweet" |
| | | }, { |
| | | "k": "road" |
| | | }, { |
| | | "k": "rocket" |
| | | }, { |
| | | "k": "rss" |
| | | }, { |
| | | "k": "rss-square" |
| | | }, { |
| | | "k": "search" |
| | | }, { |
| | | "k": "search-minus" |
| | | }, { |
| | | "k": "search-plus" |
| | | }, { |
| | | "k": "send", |
| | | "a": true |
| | | }, { |
| | | "k": "send-o", |
| | | "a": true |
| | | }, { |
| | | "k": "share" |
| | | }, { |
| | | "k": "share-alt" |
| | | }, { |
| | | "k": "share-alt-square" |
| | | }, { |
| | | "k": "share-square" |
| | | }, { |
| | | "k": "share-square-o" |
| | | }, { |
| | | "k": "shield" |
| | | }, { |
| | | "k": "shopping-cart" |
| | | }, { |
| | | "k": "sign-in" |
| | | }, { |
| | | "k": "sign-out" |
| | | }, { |
| | | "k": "signal" |
| | | }, { |
| | | "k": "sitemap" |
| | | }, { |
| | | "k": "sliders" |
| | | }, { |
| | | "k": "smile-o" |
| | | }, { |
| | | "k": "soccer-ball-o", |
| | | "a": true |
| | | }, { |
| | | "k": "sort" |
| | | }, { |
| | | "k": "sort-alpha-asc" |
| | | }, { |
| | | "k": "sort-alpha-desc" |
| | | }, { |
| | | "k": "sort-amount-asc" |
| | | }, { |
| | | "k": "sort-amount-desc" |
| | | }, { |
| | | "k": "sort-asc" |
| | | }, { |
| | | "k": "sort-desc" |
| | | }, { |
| | | "k": "sort-down", |
| | | "a": true |
| | | }, { |
| | | "k": "sort-numeric-asc" |
| | | }, { |
| | | "k": "sort-numeric-desc" |
| | | }, { |
| | | "k": "sort-up", |
| | | "a": true |
| | | }, { |
| | | "k": "space-shuttle" |
| | | }, { |
| | | "k": "spinner" |
| | | }, { |
| | | "k": "spoon" |
| | | }, { |
| | | "k": "square" |
| | | }, { |
| | | "k": "square-o" |
| | | }, { |
| | | "k": "star" |
| | | }, { |
| | | "k": "star-half" |
| | | }, { |
| | | "k": "star-half-empty", |
| | | "a": true |
| | | }, { |
| | | "k": "star-half-full", |
| | | "a": true |
| | | }, { |
| | | "k": "star-half-o" |
| | | }, { |
| | | "k": "star-o" |
| | | }, { |
| | | "k": "suitcase" |
| | | }, { |
| | | "k": "sun-o" |
| | | }, { |
| | | "k": "support", |
| | | "a": true |
| | | }, { |
| | | "k": "tablet" |
| | | }, { |
| | | "k": "tachometer" |
| | | }, { |
| | | "k": "tag" |
| | | }, { |
| | | "k": "tags" |
| | | }, { |
| | | "k": "tasks" |
| | | }, { |
| | | "k": "taxi" |
| | | }, { |
| | | "k": "terminal" |
| | | }, { |
| | | "k": "thumb-tack" |
| | | }, { |
| | | "k": "thumbs-down" |
| | | }, { |
| | | "k": "thumbs-o-down" |
| | | }, { |
| | | "k": "thumbs-o-up" |
| | | }, { |
| | | "k": "thumbs-up" |
| | | }, { |
| | | "k": "ticket" |
| | | }, { |
| | | "k": "times" |
| | | }, { |
| | | "k": "times-circle" |
| | | }, { |
| | | "k": "times-circle-o" |
| | | }, { |
| | | "k": "tint" |
| | | }, { |
| | | "k": "toggle-down", |
| | | "a": true |
| | | }, { |
| | | "k": "toggle-left", |
| | | "a": true |
| | | }, { |
| | | "k": "toggle-off" |
| | | }, { |
| | | "k": "toggle-on" |
| | | }, { |
| | | "k": "toggle-right", |
| | | "a": true |
| | | }, { |
| | | "k": "toggle-up", |
| | | "a": true |
| | | }, { |
| | | "k": "trash" |
| | | }, { |
| | | "k": "trash-o" |
| | | }, { |
| | | "k": "tree" |
| | | }, { |
| | | "k": "trophy" |
| | | }, { |
| | | "k": "truck" |
| | | }, { |
| | | "k": "tty" |
| | | }, { |
| | | "k": "umbrella" |
| | | }, { |
| | | "k": "university" |
| | | }, { |
| | | "k": "unlock" |
| | | }, { |
| | | "k": "unlock-alt" |
| | | }, { |
| | | "k": "unsorted", |
| | | "a": true |
| | | }, { |
| | | "k": "upload" |
| | | }, { |
| | | "k": "user" |
| | | }, { |
| | | "k": "users" |
| | | }, { |
| | | "k": "video-camera" |
| | | }, { |
| | | "k": "volume-down" |
| | | }, { |
| | | "k": "volume-off" |
| | | }, { |
| | | "k": "volume-up" |
| | | }, { |
| | | "k": "warning", |
| | | "a": true |
| | | }, { |
| | | "k": "wheelchair" |
| | | }, { |
| | | "k": "wifi" |
| | | }, { |
| | | "k": "wrench" |
| | | }] |
| | | }, |
| | | { |
| | | "title": "fa: File Type Icons", |
| | | "prefix": "fa fa-", |
| | | "tpl": "<i class=\"fa fa-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "file" |
| | | }, { |
| | | "k": "file-archive-o" |
| | | }, { |
| | | "k": "file-audio-o" |
| | | }, { |
| | | "k": "file-code-o" |
| | | }, { |
| | | "k": "file-excel-o" |
| | | }, { |
| | | "k": "file-image-o" |
| | | }, { |
| | | "k": "file-movie-o", |
| | | "a": true |
| | | }, { |
| | | "k": "file-o" |
| | | }, { |
| | | "k": "file-pdf-o" |
| | | }, { |
| | | "k": "file-photo-o", |
| | | "a": true |
| | | }, { |
| | | "k": "file-picture-o", |
| | | "a": true |
| | | }, { |
| | | "k": "file-powerpoint-o" |
| | | }, { |
| | | "k": "file-sound-o", |
| | | "a": true |
| | | }, { |
| | | "k": "file-text" |
| | | }, { |
| | | "k": "file-text-o" |
| | | }, { |
| | | "k": "file-video-o" |
| | | }, { |
| | | "k": "file-word-o" |
| | | }, { |
| | | "k": "file-zip-o", |
| | | "a": true |
| | | }] |
| | | }, |
| | | { |
| | | "title": "fa: Spinner Icons", |
| | | "prefix": "fa fa-", |
| | | "tpl": "<i class=\"fa fa-{0}\"></i>", |
| | | "tip": "These icons work great with the <code>fa-spin</code> class.", |
| | | "list": [{ |
| | | "k": "circle-o-notch" |
| | | }, { |
| | | "k": "cog" |
| | | }, { |
| | | "k": "gear", |
| | | "a": true |
| | | }, { |
| | | "k": "refresh" |
| | | }, { |
| | | "k": "spinner" |
| | | }] |
| | | }, |
| | | { |
| | | "title": "fa: Form Control Icons", |
| | | "prefix": "fa fa-", |
| | | "tpl": "<i class=\"fa fa-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "check-square" |
| | | }, { |
| | | "k": "check-square-o" |
| | | }, { |
| | | "k": "circle" |
| | | }, { |
| | | "k": "circle-o" |
| | | }, { |
| | | "k": "dot-circle-o" |
| | | }, { |
| | | "k": "minus-square" |
| | | }, { |
| | | "k": "minus-square-o" |
| | | }, { |
| | | "k": "plus-square" |
| | | }, { |
| | | "k": "plus-square-o" |
| | | }, { |
| | | "k": "square" |
| | | }, { |
| | | "k": "square-o" |
| | | }] |
| | | }, |
| | | { |
| | | "title": "fa: Payment Icons", |
| | | "prefix": "fa fa-", |
| | | "tpl": "<i class=\"fa fa-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "cc-amex" |
| | | }, { |
| | | "k": "cc-discover" |
| | | }, { |
| | | "k": "cc-mastercard" |
| | | }, { |
| | | "k": "cc-paypal" |
| | | }, { |
| | | "k": "cc-stripe" |
| | | }, { |
| | | "k": "cc-visa" |
| | | }, { |
| | | "k": "credit-card" |
| | | }, { |
| | | "k": "google-wallet" |
| | | }, { |
| | | "k": "paypal" |
| | | }] |
| | | }, |
| | | { |
| | | "title": "fa: Chart Icons", |
| | | "prefix": "fa fa-", |
| | | "tpl": "<i class=\"fa fa-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "area-chart" |
| | | }, { |
| | | "k": "bar-chart" |
| | | }, { |
| | | "k": "bar-chart-o", |
| | | "a": true |
| | | }, { |
| | | "k": "line-chart" |
| | | }, { |
| | | "k": "pie-chart" |
| | | }] |
| | | }, |
| | | { |
| | | "title": "fa: Currency Icons", |
| | | "prefix": "fa fa-", |
| | | "tpl": "<i class=\"fa fa-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "bitcoin", |
| | | "a": true |
| | | }, { |
| | | "k": "btc" |
| | | }, { |
| | | "k": "cny", |
| | | "a": true |
| | | }, { |
| | | "k": "dollar", |
| | | "a": true |
| | | }, { |
| | | "k": "eur" |
| | | }, { |
| | | "k": "euro", |
| | | "a": true |
| | | }, { |
| | | "k": "gbp" |
| | | }, { |
| | | "k": "ils" |
| | | }, { |
| | | "k": "inr" |
| | | }, { |
| | | "k": "jpy" |
| | | }, { |
| | | "k": "krw" |
| | | }, { |
| | | "k": "money" |
| | | }, { |
| | | "k": "rmb", |
| | | "a": true |
| | | }, { |
| | | "k": "rouble", |
| | | "a": true |
| | | }, { |
| | | "k": "rub" |
| | | }, { |
| | | "k": "ruble", |
| | | "a": true |
| | | }, { |
| | | "k": "rupee", |
| | | "a": true |
| | | }, { |
| | | "k": "shekel", |
| | | "a": true |
| | | }, { |
| | | "k": "sheqel", |
| | | "a": true |
| | | }, { |
| | | "k": "try" |
| | | }, { |
| | | "k": "turkish-lira", |
| | | "a": true |
| | | }, { |
| | | "k": "usd" |
| | | }, { |
| | | "k": "won", |
| | | "a": true |
| | | }, { |
| | | "k": "yen", |
| | | "a": true |
| | | }] |
| | | }, |
| | | { |
| | | "title": "fa: Text Editor Icons", |
| | | "prefix": "fa fa-", |
| | | "tpl": "<i class=\"fa fa-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "align-center" |
| | | }, { |
| | | "k": "align-justify" |
| | | }, { |
| | | "k": "align-left" |
| | | }, { |
| | | "k": "align-right" |
| | | }, { |
| | | "k": "bold" |
| | | }, { |
| | | "k": "chain", |
| | | "a": true |
| | | }, { |
| | | "k": "chain-broken" |
| | | }, { |
| | | "k": "clipboard" |
| | | }, { |
| | | "k": "columns" |
| | | }, { |
| | | "k": "copy", |
| | | "a": true |
| | | }, { |
| | | "k": "cut", |
| | | "a": true |
| | | }, { |
| | | "k": "dedent", |
| | | "a": true |
| | | }, { |
| | | "k": "eraser" |
| | | }, { |
| | | "k": "file" |
| | | }, { |
| | | "k": "file-o" |
| | | }, { |
| | | "k": "file-text" |
| | | }, { |
| | | "k": "file-text-o" |
| | | }, { |
| | | "k": "files-o" |
| | | }, { |
| | | "k": "floppy-o" |
| | | }, { |
| | | "k": "font" |
| | | }, { |
| | | "k": "header" |
| | | }, { |
| | | "k": "indent" |
| | | }, { |
| | | "k": "italic" |
| | | }, { |
| | | "k": "link" |
| | | }, { |
| | | "k": "list" |
| | | }, { |
| | | "k": "list-alt" |
| | | }, { |
| | | "k": "list-ol" |
| | | }, { |
| | | "k": "list-ul" |
| | | }, { |
| | | "k": "outdent" |
| | | }, { |
| | | "k": "paperclip" |
| | | }, { |
| | | "k": "paragraph" |
| | | }, { |
| | | "k": "paste", |
| | | "a": true |
| | | }, { |
| | | "k": "repeat" |
| | | }, { |
| | | "k": "rotate-left", |
| | | "a": true |
| | | }, { |
| | | "k": "rotate-right", |
| | | "a": true |
| | | }, { |
| | | "k": "save", |
| | | "a": true |
| | | }, { |
| | | "k": "scissors" |
| | | }, { |
| | | "k": "strikethrough" |
| | | }, { |
| | | "k": "subscript" |
| | | }, { |
| | | "k": "superscript" |
| | | }, { |
| | | "k": "table" |
| | | }, { |
| | | "k": "text-height" |
| | | }, { |
| | | "k": "text-width" |
| | | }, { |
| | | "k": "th" |
| | | }, { |
| | | "k": "th-large" |
| | | }, { |
| | | "k": "th-list" |
| | | }, { |
| | | "k": "underline" |
| | | }, { |
| | | "k": "undo" |
| | | }, { |
| | | "k": "unlink", |
| | | "a": true |
| | | }] |
| | | }, |
| | | { |
| | | "title": "fa: Directional Icons", |
| | | "prefix": "fa fa-", |
| | | "tpl": "<i class=\"fa fa-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "angle-double-down" |
| | | }, { |
| | | "k": "angle-double-left" |
| | | }, { |
| | | "k": "angle-double-right" |
| | | }, { |
| | | "k": "angle-double-up" |
| | | }, { |
| | | "k": "angle-down" |
| | | }, { |
| | | "k": "angle-left" |
| | | }, { |
| | | "k": "angle-right" |
| | | }, { |
| | | "k": "angle-up" |
| | | }, { |
| | | "k": "arrow-circle-down" |
| | | }, { |
| | | "k": "arrow-circle-left" |
| | | }, { |
| | | "k": "arrow-circle-o-down" |
| | | }, { |
| | | "k": "arrow-circle-o-left" |
| | | }, { |
| | | "k": "arrow-circle-o-right" |
| | | }, { |
| | | "k": "arrow-circle-o-up" |
| | | }, { |
| | | "k": "arrow-circle-right" |
| | | }, { |
| | | "k": "arrow-circle-up" |
| | | }, { |
| | | "k": "arrow-down" |
| | | }, { |
| | | "k": "arrow-left" |
| | | }, { |
| | | "k": "arrow-right" |
| | | }, { |
| | | "k": "arrow-up" |
| | | }, { |
| | | "k": "arrows" |
| | | }, { |
| | | "k": "arrows-alt" |
| | | }, { |
| | | "k": "arrows-h" |
| | | }, { |
| | | "k": "arrows-v" |
| | | }, { |
| | | "k": "caret-down" |
| | | }, { |
| | | "k": "caret-left" |
| | | }, { |
| | | "k": "caret-right" |
| | | }, { |
| | | "k": "caret-square-o-down" |
| | | }, { |
| | | "k": "caret-square-o-left" |
| | | }, { |
| | | "k": "caret-square-o-right" |
| | | }, { |
| | | "k": "caret-square-o-up" |
| | | }, { |
| | | "k": "caret-up" |
| | | }, { |
| | | "k": "chevron-circle-down" |
| | | }, { |
| | | "k": "chevron-circle-left" |
| | | }, { |
| | | "k": "chevron-circle-right" |
| | | }, { |
| | | "k": "chevron-circle-up" |
| | | }, { |
| | | "k": "chevron-down" |
| | | }, { |
| | | "k": "chevron-left" |
| | | }, { |
| | | "k": "chevron-right" |
| | | }, { |
| | | "k": "chevron-up" |
| | | }, { |
| | | "k": "hand-o-down" |
| | | }, { |
| | | "k": "hand-o-left" |
| | | }, { |
| | | "k": "hand-o-right" |
| | | }, { |
| | | "k": "hand-o-up" |
| | | }, { |
| | | "k": "long-arrow-down" |
| | | }, { |
| | | "k": "long-arrow-left" |
| | | }, { |
| | | "k": "long-arrow-right" |
| | | }, { |
| | | "k": "long-arrow-up" |
| | | }, { |
| | | "k": "toggle-down", |
| | | "a": true |
| | | }, { |
| | | "k": "toggle-left", |
| | | "a": true |
| | | }, { |
| | | "k": "toggle-right", |
| | | "a": true |
| | | }, { |
| | | "k": "toggle-up", |
| | | "a": true |
| | | }] |
| | | }, |
| | | { |
| | | "title": "fa: Video Player Icons", |
| | | "prefix": "fa fa-", |
| | | "tpl": "<i class=\"fa fa-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "arrows-alt" |
| | | }, { |
| | | "k": "backward" |
| | | }, { |
| | | "k": "compress" |
| | | }, { |
| | | "k": "eject" |
| | | }, { |
| | | "k": "expand" |
| | | }, { |
| | | "k": "fast-backward" |
| | | }, { |
| | | "k": "fast-forward" |
| | | }, { |
| | | "k": "forward" |
| | | }, { |
| | | "k": "pause" |
| | | }, { |
| | | "k": "play" |
| | | }, { |
| | | "k": "play-circle" |
| | | }, { |
| | | "k": "play-circle-o" |
| | | }, { |
| | | "k": "step-backward" |
| | | }, { |
| | | "k": "step-forward" |
| | | }, { |
| | | "k": "stop" |
| | | }, { |
| | | "k": "youtube-play" |
| | | }] |
| | | }, |
| | | { |
| | | "title": "fa: Brand Icons", |
| | | "prefix": "fa fa-", |
| | | "tpl": "<i class=\"fa fa-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "adn" |
| | | }, { |
| | | "k": "android" |
| | | }, { |
| | | "k": "angellist" |
| | | }, { |
| | | "k": "apple" |
| | | }, { |
| | | "k": "behance" |
| | | }, { |
| | | "k": "behance-square" |
| | | }, { |
| | | "k": "bitbucket" |
| | | }, { |
| | | "k": "bitbucket-square" |
| | | }, { |
| | | "k": "bitcoin", |
| | | "a": true |
| | | }, { |
| | | "k": "btc" |
| | | }, { |
| | | "k": "cc-amex" |
| | | }, { |
| | | "k": "cc-discover" |
| | | }, { |
| | | "k": "cc-mastercard" |
| | | }, { |
| | | "k": "cc-paypal" |
| | | }, { |
| | | "k": "cc-stripe" |
| | | }, { |
| | | "k": "cc-visa" |
| | | }, { |
| | | "k": "codepen" |
| | | }, { |
| | | "k": "css3" |
| | | }, { |
| | | "k": "delicious" |
| | | }, { |
| | | "k": "deviantart" |
| | | }, { |
| | | "k": "digg" |
| | | }, { |
| | | "k": "dribbble" |
| | | }, { |
| | | "k": "dropbox" |
| | | }, { |
| | | "k": "drupal" |
| | | }, { |
| | | "k": "empire" |
| | | }, { |
| | | "k": "facebook" |
| | | }, { |
| | | "k": "facebook-square" |
| | | }, { |
| | | "k": "flickr" |
| | | }, { |
| | | "k": "foursquare" |
| | | }, { |
| | | "k": "ge", |
| | | "a": true |
| | | }, { |
| | | "k": "git" |
| | | }, { |
| | | "k": "git-square" |
| | | }, { |
| | | "k": "github" |
| | | }, { |
| | | "k": "github-alt" |
| | | }, { |
| | | "k": "github-square" |
| | | }, { |
| | | "k": "gittip" |
| | | }, { |
| | | "k": "google" |
| | | }, { |
| | | "k": "google-plus" |
| | | }, { |
| | | "k": "google-plus-square" |
| | | }, { |
| | | "k": "google-wallet" |
| | | }, { |
| | | "k": "hacker-news" |
| | | }, { |
| | | "k": "html5" |
| | | }, { |
| | | "k": "instagram" |
| | | }, { |
| | | "k": "ioxhost" |
| | | }, { |
| | | "k": "joomla" |
| | | }, { |
| | | "k": "jsfiddle" |
| | | }, { |
| | | "k": "lastfm" |
| | | }, { |
| | | "k": "lastfm-square" |
| | | }, { |
| | | "k": "linkedin" |
| | | }, { |
| | | "k": "linkedin-square" |
| | | }, { |
| | | "k": "linux" |
| | | }, { |
| | | "k": "maxcdn" |
| | | }, { |
| | | "k": "meanpath" |
| | | }, { |
| | | "k": "openid" |
| | | }, { |
| | | "k": "pagelines" |
| | | }, { |
| | | "k": "paypal" |
| | | }, { |
| | | "k": "pied-piper" |
| | | }, { |
| | | "k": "pied-piper-alt" |
| | | }, { |
| | | "k": "pinterest" |
| | | }, { |
| | | "k": "pinterest-square" |
| | | }, { |
| | | "k": "qq" |
| | | }, { |
| | | "k": "ra", |
| | | "a": true |
| | | }, { |
| | | "k": "rebel" |
| | | }, { |
| | | "k": "reddit" |
| | | }, { |
| | | "k": "reddit-square" |
| | | }, { |
| | | "k": "renren" |
| | | }, { |
| | | "k": "share-alt" |
| | | }, { |
| | | "k": "share-alt-square" |
| | | }, { |
| | | "k": "skype" |
| | | }, { |
| | | "k": "slack" |
| | | }, { |
| | | "k": "slideshare" |
| | | }, { |
| | | "k": "soundcloud" |
| | | }, { |
| | | "k": "spotify" |
| | | }, { |
| | | "k": "stack-exchange" |
| | | }, { |
| | | "k": "stack-overflow" |
| | | }, { |
| | | "k": "steam" |
| | | }, { |
| | | "k": "steam-square" |
| | | }, { |
| | | "k": "stumbleupon" |
| | | }, { |
| | | "k": "stumbleupon-circle" |
| | | }, { |
| | | "k": "tencent-weibo" |
| | | }, { |
| | | "k": "trello" |
| | | }, { |
| | | "k": "tumblr" |
| | | }, { |
| | | "k": "tumblr-square" |
| | | }, { |
| | | "k": "twitch" |
| | | }, { |
| | | "k": "twitter" |
| | | }, { |
| | | "k": "twitter-square" |
| | | }, { |
| | | "k": "vimeo-square" |
| | | }, { |
| | | "k": "vine" |
| | | }, { |
| | | "k": "vk" |
| | | }, { |
| | | "k": "wechat", |
| | | "a": true |
| | | }, { |
| | | "k": "weibo" |
| | | }, { |
| | | "k": "weixin" |
| | | }, { |
| | | "k": "windows" |
| | | }, { |
| | | "k": "wordpress" |
| | | }, { |
| | | "k": "xing" |
| | | }, { |
| | | "k": "xing-square" |
| | | }, { |
| | | "k": "yahoo" |
| | | }, { |
| | | "k": "yelp" |
| | | }, { |
| | | "k": "youtube" |
| | | }, { |
| | | "k": "youtube-play" |
| | | }, { |
| | | "k": "youtube-square" |
| | | }] |
| | | }, |
| | | { |
| | | "title": "fa: Medical Icons", |
| | | "prefix": "fa fa-", |
| | | "tpl": "<i class=\"fa fa-{0}\"></i>", |
| | | "list": [{ |
| | | "k": "ambulance" |
| | | }, { |
| | | "k": "h-square" |
| | | }, { |
| | | "k": "hospital-o" |
| | | }, { |
| | | "k": "medkit" |
| | | }, { |
| | | "k": "plus-square" |
| | | }, { |
| | | "k": "stethoscope" |
| | | }, { |
| | | "k": "user-md" |
| | | }, { |
| | | "k": "wheelchair" |
| | | }] |
| | | } |
| | | ] |
| | |
| | | export const environment = { |
| | | chore: true, |
| | | SERVER_URL: `./`, |
| | | production: true, |
| | | hmr: false, |
| | | useHash: false, |
| | | SERVER_BASH_URL: 'http://47.96.171.62:8080/screen_api_v2' |
| | | useHash: false |
| | | }; |
| | |
| | | export const environment = { |
| | | chore: false, |
| | | SERVER_URL: `./`, |
| | | production: true, |
| | | production: false, |
| | | hmr: true, |
| | | useHash: true, |
| | | SERVER_BASH_URL: 'http://47.96.171.62:8080/screen_api_v2' |
| | | useHash: true |
| | | }; |
| | |
| | | export const environment = { |
| | | chore: false, |
| | | SERVER_URL: `./`, |
| | | production: true, |
| | | hmr: false, |
| | | useHash: true, |
| | | SERVER_BASH_URL: 'http://localhost:8080' |
| | | useHash: true |
| | | }; |
| | |
| | | // The list of which env maps to which file can be found in `.angular-cli.json`. |
| | | |
| | | export const environment = { |
| | | chore: false, |
| | | SERVER_URL: `./`, |
| | | production: false, |
| | | hmr: false, |
| | | useHash: true, |
| | | SERVER_BASH_URL: 'http://47.96.171.62:8080/screen_api_v2' |
| | | SERVER_BASH_URL: `http://127.0.0.1:8001/` |
| | | }; |
| | |
| | | // This file is required by karma.conf.js and loads recursively all the .spec and framework files |
| | | |
| | | import 'zone.js/dist/long-stack-trace-zone'; |
| | | import 'zone.js/dist/proxy.js'; |
| | | import 'zone.js/dist/sync-test'; |
| | |
| | | ); |
| | | // Then we find all the tests. |
| | | const context = require.context('./', true, /\.spec\.ts$/); |
| | | // const context = require.context('./', true, /qq\.component\.spec\.ts$/); |
| | | // And load the modules. |
| | | context.keys().map(context); |
| | | // Finally, start Karma to run the tests. |
| | |
| | | |
| | | import { TestBed, async, TestModuleMetadata } from '@angular/core/testing'; |
| | | import { Type, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; |
| | | |
| | | import { CoreModule } from '@core/core.module'; |
| | | import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; |
| | | import { HttpLoaderFactory } from 'app/app.module'; |
| | | import { HttpClient } from '@angular/common/http'; |
| | | import { RouterTestingModule } from '@angular/router/testing'; |
| | | import { HttpClientModule, HttpClient } from '@angular/common/http'; |
| | | |
| | | import { ALAIN_I18N_TOKEN, ColorsService, SettingsService, MenuService, ScrollService, _HttpClient, ALAIN_THEME_OPTIONS } from '@delon/theme'; |
| | | import { I18NService } from '@core/i18n/i18n.service'; |
| | | import { RouterTestingModule } from '@angular/router/testing'; |
| | | import { CoreModule } from '@core/core.module'; |
| | | import { SharedModule } from '@shared/shared.module'; |
| | | import { DelonModule } from '../app/delon.module'; |
| | | import { AlainAuthModule } from '@delon/auth'; |
| | | import { HttpLoaderFactory } from '../app/app.module'; |
| | | |
| | | const resetTestingModule = TestBed.resetTestingModule, |
| | | preventAngularFromResetting = () => TestBed.resetTestingModule = () => TestBed; |
| | |
| | | // region: imports |
| | | if (!moduleDef.imports) moduleDef.imports = []; |
| | | moduleDef.imports.push(RouterTestingModule); |
| | | moduleDef.imports.push(SharedModule.forRoot()); |
| | | moduleDef.imports.push(HttpClientModule); |
| | | moduleDef.imports.push(DelonModule); |
| | | moduleDef.imports.push(SharedModule); |
| | | // auth |
| | | moduleDef.imports.push(AlainAuthModule.forRoot({ |
| | | login_url: `/passport/login` |
| | | })); |
| | | moduleDef.imports.push(TranslateModule.forRoot({ |
| | | loader: { |
| | | provide: TranslateLoader, |
| | |
| | | "module": "es2015", |
| | | "types": [], |
| | | "paths": { |
| | | "@shared": [ "app/shared" ], |
| | | "@shared/*": [ "app/shared/*" ], |
| | | "@core": [ "app/core/" ], |
| | | "@core/*": [ "app/core/*" ], |
| | | "@business": [ "app/business/" ], |
| | | "@business/*": [ "app/business/*" ] |
| | | "@shared": [ "app/shared" ], |
| | | "@shared/*": [ "app/shared/*" ], |
| | | "@core": [ "app/core/" ], |
| | | "@core/*": [ "app/core/*" ], |
| | | "@testing": [ "testing/" ], |
| | | "@testing/*": [ "testing/*" ], |
| | | "@env": [ "environments/" ], |
| | | "@env/*": [ "environments/*" ], |
| | | "@business": [ "app/business" ], |
| | | "@business/*": [ "app/business/*" ] |
| | | } |
| | | }, |
| | | "exclude": [ |
| | |
| | | "node" |
| | | ], |
| | | "paths": { |
| | | "@shared": [ "app/shared" ], |
| | | "@shared/*": [ "app/shared/*" ], |
| | | "@core": [ "app/core/" ], |
| | | "@core/*": [ "app/core/*" ], |
| | | "@business": [ "app/business/" ], |
| | | "@business/*": [ "app/business/*" ] |
| | | "@shared": [ "app/shared" ], |
| | | "@shared/*": [ "app/shared/*" ], |
| | | "@core": [ "app/core/" ], |
| | | "@core/*": [ "app/core/*" ], |
| | | "@testing": [ "testing/" ], |
| | | "@testing/*": [ "testing/*" ], |
| | | "@env": [ "environments/" ], |
| | | "@env/*": [ "environments/*" ], |
| | | "@business": [ "app/business" ], |
| | | "@business/*": [ "app/business/*" ] |
| | | } |
| | | }, |
| | | "files": [ |
| | |
| | | "moduleResolution": "node", |
| | | "emitDecoratorMetadata": true, |
| | | "experimentalDecorators": true, |
| | | "noUnusedLocals": false, |
| | | "noUnusedParameters": false, |
| | | "target": "es5", |
| | | "typeRoots": [ |
| | | "node_modules/@types" |
| | |
| | | "@shared/*": [ "app/shared/*" ], |
| | | "@core": [ "app/core/" ], |
| | | "@core/*": [ "app/core/*" ], |
| | | "@business": [ "app/business/" ], |
| | | "@testing": [ "testing/" ], |
| | | "@testing/*": [ "testing/*" ], |
| | | "@env": [ "environments/" ], |
| | | "@env/*": [ "environments/*" ], |
| | | "@business": [ "app/business" ], |
| | | "@business/*": [ "app/business/*" ] |
| | | } |
| | | } |
| | |
| | | version "2.1.3" |
| | | resolved "http://registry.npm.taobao.org/@angularclass/hmr/download/@angularclass/hmr-2.1.3.tgz#34e658ed3da37f23b0a200e2da5a89be92bb209f" |
| | | |
| | | "@antv/data-set@^0.7.0": |
| | | version "0.7.0" |
| | | resolved "http://registry.npm.taobao.org/@antv/data-set/download/@antv/data-set-0.7.0.tgz#0e1ab3c88abe83ad668600de4e18b1637c0621a3" |
| | | "@antv/data-set@^0.8.3": |
| | | version "0.8.3" |
| | | resolved "http://registry.npm.taobao.org/@antv/data-set/download/@antv/data-set-0.8.3.tgz#7f58207532a9de5d174b52676b876247b2acab02" |
| | | dependencies: |
| | | d3-array "^1.2.0" |
| | | d3-composite-projections "^1.2.0" |
| | | d3-dsv "^1.0.5" |
| | | d3-geo "^1.6.4" |
| | | d3-geo-projection "^2.1.2" |
| | | d3-hierarchy "^1.1.5" |
| | | d3-sankey "^0.7.1" |
| | | d3-voronoi "^1.1.2" |
| | | lodash "^4.17.4" |
| | | point-at-length "^1.0.2" |
| | | regression "^2.0.0" |
| | | simple-statistics "^4.1.0" |
| | | topojson-client "^3.0.0" |
| | | wolfy87-eventemitter "^5.1.0" |
| | | d3-array "~1.2.0" |
| | | d3-composite-projections "~1.2.0" |
| | | d3-dsv "~1.0.5" |
| | | d3-geo "~1.6.4" |
| | | d3-geo-projection "~2.1.2" |
| | | d3-hexjson "^1.0.1" |
| | | d3-hierarchy "~1.1.5" |
| | | d3-sankey "~0.7.1" |
| | | d3-voronoi "~1.1.2" |
| | | lodash "~4.17.4" |
| | | point-at-length "~1.0.2" |
| | | regression "~2.0.0" |
| | | simple-statistics "~4.1.0" |
| | | topojson-client "~3.0.0" |
| | | wolfy87-eventemitter "~5.1.0" |
| | | |
| | | "@antv/g2-plugin-slider@^2.0.0": |
| | | version "2.0.1" |
| | |
| | | lodash "^4.17.4" |
| | | wolfy87-eventemitter "^5.1.0" |
| | | |
| | | "@delon/abc@^0.3.0-rc.1": |
| | | version "0.3.2" |
| | | resolved "http://registry.npm.taobao.org/@delon/abc/download/@delon/abc-0.3.2.tgz#b0de2df6f262ae283721c40ea3806137ac172dd0" |
| | | "@delon/abc@^0.6.0-rc.2": |
| | | version "0.6.0-rc.2" |
| | | resolved "http://registry.npm.taobao.org/@delon/abc/download/@delon/abc-0.6.0-rc.2.tgz#29042b329147492d2900eff5266dce2f760118c9" |
| | | |
| | | "@delon/acl@^0.3.0-rc.1": |
| | | version "0.3.2" |
| | | resolved "http://registry.npm.taobao.org/@delon/acl/download/@delon/acl-0.3.2.tgz#f9a507cbc2acb092d35c5ec51b402b4823bed466" |
| | | "@delon/acl@^0.6.0-rc.2": |
| | | version "0.6.0-rc.2" |
| | | resolved "http://registry.npm.taobao.org/@delon/acl/download/@delon/acl-0.6.0-rc.2.tgz#3e62d7ea2b7b5faa03644354e9bc9c0e496baa8e" |
| | | |
| | | "@delon/auth@^0.3.0-rc.1": |
| | | version "0.3.2" |
| | | resolved "http://registry.npm.taobao.org/@delon/auth/download/@delon/auth-0.3.2.tgz#59b0273a8a17ad3e893633c8bd83de15d913eb9a" |
| | | "@delon/auth@^0.6.0-rc.2": |
| | | version "0.6.0-rc.2" |
| | | resolved "http://registry.npm.taobao.org/@delon/auth/download/@delon/auth-0.6.0-rc.2.tgz#2aab1245f114845b29f3d127846efa19d617ce5c" |
| | | |
| | | "@delon/theme@^0.3.0-rc.1": |
| | | version "0.3.2" |
| | | resolved "http://registry.npm.taobao.org/@delon/theme/download/@delon/theme-0.3.2.tgz#7e7924c8c7524d937171b4ea08ff74f6be950be2" |
| | | "@delon/cache@^0.6.0-rc.2": |
| | | version "0.6.0-rc.2" |
| | | resolved "http://registry.npm.taobao.org/@delon/cache/download/@delon/cache-0.6.0-rc.2.tgz#d65789d375c7939d398395e97adf66b9f87a2fa4" |
| | | |
| | | "@delon/mock@^0.6.0-rc.2": |
| | | version "0.6.0-rc.2" |
| | | resolved "http://registry.npm.taobao.org/@delon/mock/download/@delon/mock-0.6.0-rc.2.tgz#9e7b677c692241845425e82116755f3c0dfed439" |
| | | |
| | | "@delon/theme@^0.6.0-rc.2": |
| | | version "0.6.0-rc.2" |
| | | resolved "http://registry.npm.taobao.org/@delon/theme/download/@delon/theme-0.6.0-rc.2.tgz#906f81ba8fe292aa86dea2cb97f7dffff37ffef3" |
| | | |
| | | "@ngtools/json-schema@1.1.0", "@ngtools/json-schema@^1.1.0": |
| | | version "1.1.0" |
| | |
| | | resolved "http://registry.npm.taobao.org/@types/jasminewd2/download/@types/jasminewd2-2.0.3.tgz#0d2886b0cbdae4c0eeba55e30792f584bf040a95" |
| | | dependencies: |
| | | "@types/jasmine" "*" |
| | | |
| | | "@types/jszip@^3.1.2": |
| | | version "3.1.3" |
| | | resolved "http://registry.npm.taobao.org/@types/jszip/download/@types/jszip-3.1.3.tgz#5567e9f0a31012341cedcc707175f2c28a430005" |
| | | dependencies: |
| | | "@types/node" "*" |
| | | |
| | | "@types/mockjs@^1.0.0": |
| | | version "1.0.0" |
| | | resolved "http://registry.npm.taobao.org/@types/mockjs/download/@types/mockjs-1.0.0.tgz#a696e1f64c92e7bd6af6343bf8350d1b9d12b388" |
| | | |
| | | "@types/node@*": |
| | | version "9.3.0" |
| | | resolved "http://registry.npm.taobao.org/@types/node/download/@types/node-9.3.0.tgz#3a129cda7c4e5df2409702626892cb4b96546dd5" |
| | | |
| | | "@types/node@^6.0.46", "@types/node@~6.0.60": |
| | | version "6.0.96" |
| | |
| | | acorn@^5.0.0, acorn@^5.1.1: |
| | | version "5.3.0" |
| | | resolved "http://registry.npm.taobao.org/acorn/download/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822" |
| | | |
| | | adler-32@~1.1.0: |
| | | version "1.1.0" |
| | | resolved "http://registry.npm.taobao.org/adler-32/download/adler-32-1.1.0.tgz#03551a5c7f0edfbd4fc8fa12a6814978eab651c3" |
| | | dependencies: |
| | | exit-on-epipe "~1.0.1" |
| | | printj "~1.1.0" |
| | | |
| | | adm-zip@0.4.4: |
| | | version "0.4.4" |
| | |
| | | version "1.0.1" |
| | | resolved "http://registry.npm.taobao.org/angular-qq-maps/download/angular-qq-maps-1.0.1.tgz#ba4f312f501bb208837081ed9dd7e595ba53c810" |
| | | |
| | | angular-tree-component@^6.1.0: |
| | | version "6.1.0" |
| | | resolved "http://registry.npm.taobao.org/angular-tree-component/download/angular-tree-component-6.1.0.tgz#9d9a6b28a6881c2072cd6306b55229579e894071" |
| | | angular-split@^1.0.0-rc.0: |
| | | version "1.0.0-rc.0" |
| | | resolved "http://registry.npm.taobao.org/angular-split/download/angular-split-1.0.0-rc.0.tgz#d7ec2fcb2166ce0e63babe000e18126e6ee9a407" |
| | | dependencies: |
| | | tslib "^1.7.1" |
| | | |
| | | angular-tree-component@^7.0.1: |
| | | version "7.0.1" |
| | | resolved "http://registry.npm.taobao.org/angular-tree-component/download/angular-tree-component-7.0.1.tgz#fc8d0e72d8c34b87131a3ba2bd32ad20945689ac" |
| | | dependencies: |
| | | lodash "4.17.4" |
| | | mobx ">=3" |
| | |
| | | align-text "^0.1.3" |
| | | lazy-cache "^1.0.3" |
| | | |
| | | cfb@~1.0.1: |
| | | version "1.0.1" |
| | | resolved "http://registry.npm.taobao.org/cfb/download/cfb-1.0.1.tgz#557bb24f67dae78803785a1595d365bc82c5fab4" |
| | | dependencies: |
| | | commander "^2.12.1" |
| | | printj "~1.1.0" |
| | | |
| | | chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: |
| | | version "1.1.3" |
| | | resolved "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" |
| | |
| | | source-map "^0.5.6" |
| | | sprintf-js "^1.0.3" |
| | | |
| | | codepage@~1.11.0: |
| | | version "1.11.1" |
| | | resolved "http://registry.npm.taobao.org/codepage/download/codepage-1.11.1.tgz#86472397ea5b2cdbb07b77016a512477a3cb8823" |
| | | dependencies: |
| | | commander "~2.11.0" |
| | | exit-on-epipe "~1.0.1" |
| | | voc "~1.0.0" |
| | | |
| | | collapse-white-space@^1.0.2: |
| | | version "1.0.3" |
| | | resolved "http://registry.npm.taobao.org/collapse-white-space/download/collapse-white-space-1.0.3.tgz#4b906f670e5a963a87b76b0e1689643341b6023c" |
| | |
| | | dependencies: |
| | | delayed-stream "~1.0.0" |
| | | |
| | | commander@2, commander@2.12.x, commander@^2.11.0, commander@^2.9.0, commander@~2.12.1: |
| | | commander@*, commander@2, commander@2.12.x, commander@^2.11.0, commander@^2.12.1, commander@^2.9.0, commander@~2.12.1: |
| | | version "2.12.2" |
| | | resolved "http://registry.npm.taobao.org/commander/download/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" |
| | | |
| | | commander@~2.11.0: |
| | | version "2.11.0" |
| | | resolved "http://registry.npm.taobao.org/commander/download/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" |
| | | |
| | | common-tags@^1.3.1: |
| | | version "1.7.0" |
| | |
| | | js-yaml "^3.9.0" |
| | | parse-json "^3.0.0" |
| | | require-from-string "^2.0.1" |
| | | |
| | | crc-32@~1.1.1: |
| | | version "1.1.1" |
| | | resolved "http://registry.npm.taobao.org/crc-32/download/crc-32-1.1.1.tgz#5d739d5e4c6e352ad8304d73223d483fe55adb8d" |
| | | dependencies: |
| | | exit-on-epipe "~1.0.1" |
| | | printj "~1.1.0" |
| | | |
| | | crc32-stream@^2.0.0: |
| | | version "2.0.0" |
| | |
| | | version "0.2.2" |
| | | resolved "http://registry.npm.taobao.org/cyclist/download/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" |
| | | |
| | | d3-array@1, d3-array@^1.2.0: |
| | | d3-array@1, d3-array@~1.2.0: |
| | | version "1.2.1" |
| | | resolved "http://registry.npm.taobao.org/d3-array/download/d3-array-1.2.1.tgz#d1ca33de2f6ac31efadb8e050a021d7e2396d5dc" |
| | | |
| | |
| | | version "1.0.3" |
| | | resolved "http://registry.npm.taobao.org/d3-color/download/d3-color-1.0.3.tgz#bc7643fca8e53a8347e2fbdaffa236796b58509b" |
| | | |
| | | d3-composite-projections@^1.2.0: |
| | | d3-composite-projections@~1.2.0: |
| | | version "1.2.0" |
| | | resolved "http://registry.npm.taobao.org/d3-composite-projections/download/d3-composite-projections-1.2.0.tgz#fa0e6f1442f17d04643843a3a883c7d94e0c27c0" |
| | | dependencies: |
| | | d3-geo "1.2.4" |
| | | d3-path "^1.0.1" |
| | | |
| | | d3-dsv@^1.0.5: |
| | | d3-dsv@~1.0.5: |
| | | version "1.0.8" |
| | | resolved "http://registry.npm.taobao.org/d3-dsv/download/d3-dsv-1.0.8.tgz#907e240d57b386618dc56468bacfe76bf19764ae" |
| | | dependencies: |
| | |
| | | version "1.0.3" |
| | | resolved "http://registry.npm.taobao.org/d3-ease/download/d3-ease-1.0.3.tgz#68bfbc349338a380c44d8acc4fbc3304aa2d8c0e" |
| | | |
| | | d3-geo-projection@^2.1.2: |
| | | version "2.3.2" |
| | | resolved "http://registry.npm.taobao.org/d3-geo-projection/download/d3-geo-projection-2.3.2.tgz#72e559dc05d97fa9f218ccc9c537d329f4cfc474" |
| | | d3-geo-projection@~2.1.2: |
| | | version "2.1.2" |
| | | resolved "http://registry.npm.taobao.org/d3-geo-projection/download/d3-geo-projection-2.1.2.tgz#7df8e1e9d046d631c6509f7e531357d4adc24aa3" |
| | | dependencies: |
| | | commander "2" |
| | | d3-array "1" |
| | | d3-geo "^1.7.1" |
| | | d3-geo "^1.1.0" |
| | | |
| | | d3-geo@1.2.4: |
| | | version "1.2.4" |
| | |
| | | dependencies: |
| | | d3-array "1" |
| | | |
| | | d3-geo@^1.6.4, d3-geo@^1.7.1: |
| | | d3-geo@^1.1.0: |
| | | version "1.9.1" |
| | | resolved "http://registry.npm.taobao.org/d3-geo/download/d3-geo-1.9.1.tgz#157e3b0f917379d0f73bebfff3be537f49fa7356" |
| | | dependencies: |
| | | d3-array "1" |
| | | |
| | | d3-hierarchy@^1.1.5: |
| | | d3-geo@~1.6.4: |
| | | version "1.6.4" |
| | | resolved "http://registry.npm.taobao.org/d3-geo/download/d3-geo-1.6.4.tgz#f20e1e461cb1845f5a8be55ab6f876542a7e3199" |
| | | dependencies: |
| | | d3-array "1" |
| | | |
| | | d3-hexjson@^1.0.1: |
| | | version "1.0.1" |
| | | resolved "http://registry.npm.taobao.org/d3-hexjson/download/d3-hexjson-1.0.1.tgz#6a23111e8359f1e214f5d0afa379c02b2b67df0b" |
| | | dependencies: |
| | | d3-array "1" |
| | | |
| | | d3-hierarchy@~1.1.5: |
| | | version "1.1.5" |
| | | resolved "http://registry.npm.taobao.org/d3-hierarchy/download/d3-hierarchy-1.1.5.tgz#a1c845c42f84a206bcf1c01c01098ea4ddaa7a26" |
| | | |
| | |
| | | version "1.0.5" |
| | | resolved "http://registry.npm.taobao.org/d3-path/download/d3-path-1.0.5.tgz#241eb1849bd9e9e8021c0d0a799f8a0e8e441764" |
| | | |
| | | d3-sankey@^0.7.1: |
| | | d3-sankey@~0.7.1: |
| | | version "0.7.1" |
| | | resolved "http://registry.npm.taobao.org/d3-sankey/download/d3-sankey-0.7.1.tgz#d229832268fc69a7fec84803e96c2256a614c521" |
| | | dependencies: |
| | |
| | | version "1.0.7" |
| | | resolved "http://registry.npm.taobao.org/d3-timer/download/d3-timer-1.0.7.tgz#df9650ca587f6c96607ff4e60cc38229e8dd8531" |
| | | |
| | | d3-voronoi@^1.1.2: |
| | | d3-voronoi@~1.1.2: |
| | | version "1.1.2" |
| | | resolved "http://registry.npm.taobao.org/d3-voronoi/download/d3-voronoi-1.1.2.tgz#1687667e8f13a2d158c80c1480c5a29cb0d8973c" |
| | | |
| | |
| | | version "1.1.1" |
| | | resolved "http://registry.npm.taobao.org/exit-hook/download/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" |
| | | |
| | | exit-on-epipe@~1.0.1: |
| | | version "1.0.1" |
| | | resolved "http://registry.npm.taobao.org/exit-on-epipe/download/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" |
| | | |
| | | exit@^0.1.2: |
| | | version "0.1.2" |
| | | resolved "http://registry.npm.taobao.org/exit/download/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" |
| | |
| | | forwarded@~0.1.2: |
| | | version "0.1.2" |
| | | resolved "http://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" |
| | | |
| | | frac@~1.1.0: |
| | | version "1.1.0" |
| | | resolved "http://registry.npm.taobao.org/frac/download/frac-1.1.0.tgz#dc437e9c6a646b60b127d82ac4902464445cc1e3" |
| | | dependencies: |
| | | voc "~1.0.0" |
| | | |
| | | fresh@0.5.2: |
| | | version "0.5.2" |
| | |
| | | version "3.4.1" |
| | | resolved "http://registry.npm.taobao.org/mobx/download/mobx-3.4.1.tgz#37abe5ee882d401828d9f26c6c1a2f47614bbbef" |
| | | |
| | | mockjs@^1.0.1-beta3: |
| | | version "1.0.1-beta3" |
| | | resolved "http://registry.npm.taobao.org/mockjs/download/mockjs-1.0.1-beta3.tgz#d234f3c27256397564f2c955142e891909537209" |
| | | dependencies: |
| | | commander "*" |
| | | |
| | | moment@^2.18.1, moment@^2.19.3: |
| | | version "2.20.1" |
| | | resolved "http://registry.npm.taobao.org/moment/download/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd" |
| | |
| | | version "0.6.1" |
| | | resolved "http://registry.npm.taobao.org/negotiator/download/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" |
| | | |
| | | ng-clipboard-antd@^2.0.1: |
| | | version "2.0.1" |
| | | resolved "http://registry.npm.taobao.org/ng-clipboard-antd/download/ng-clipboard-antd-2.0.1.tgz#2f200b8d22ecb6d5360408d6985df3f51abd7cf6" |
| | | dependencies: |
| | | "@angular/animations" "^5.0.0" |
| | | "@angular/common" "^5.0.0" |
| | | "@angular/compiler" "^5.0.0" |
| | | "@angular/core" "^5.0.0" |
| | | "@angular/forms" "^5.0.0" |
| | | "@angular/http" "^5.0.0" |
| | | "@angular/platform-browser" "^5.0.0" |
| | | "@angular/platform-browser-dynamic" "^5.0.0" |
| | | "@angular/router" "^5.0.0" |
| | | core-js "^2.4.1" |
| | | ng-zorro-antd "^0.6.7" |
| | | ngx-highlight-js "^1.0.3" |
| | | rxjs "^5.5.2" |
| | | zone.js "^0.8.14" |
| | | |
| | | ng-tree-antd@^2.0.0: |
| | | version "2.1.0" |
| | | resolved "http://registry.npm.taobao.org/ng-tree-antd/download/ng-tree-antd-2.1.0.tgz#4cbb93ad3c7a2bddc6c329d788e767777481dcbb" |
| | |
| | | rxjs "^5.5.2" |
| | | zone.js "^0.8.14" |
| | | |
| | | ng-zorro-antd-extra@^1.1.3: |
| | | ng-zorro-antd-extra@^1.1.6: |
| | | version "1.1.6" |
| | | resolved "http://registry.npm.taobao.org/ng-zorro-antd-extra/download/ng-zorro-antd-extra-1.1.6.tgz#b69ba30603843ffd6ded09a46dd2038542251e40" |
| | | |
| | | ng-zorro-antd@^0.6.5: |
| | | ng-zorro-antd@^0.6.5, ng-zorro-antd@^0.6.7: |
| | | version "0.6.10" |
| | | resolved "http://registry.npm.taobao.org/ng-zorro-antd/download/ng-zorro-antd-0.6.10.tgz#0cf5ec5cb94e10226a2b2becff67debf0c8ad860" |
| | | dependencies: |
| | |
| | | ngx-highlight-js@^1.0.3: |
| | | version "1.0.3" |
| | | resolved "http://registry.npm.taobao.org/ngx-highlight-js/download/ngx-highlight-js-1.0.3.tgz#b46ef9069d443baae7a43e5e4217d64fb8049003" |
| | | |
| | | ngx-tinymce@^1.0.1: |
| | | version "1.0.1" |
| | | resolved "http://registry.npm.taobao.org/ngx-tinymce/download/ngx-tinymce-1.0.1.tgz#a5f04f71a6a393a8363690530c4d832fc39fc9f2" |
| | | dependencies: |
| | | "@angular/animations" "^5.0.0" |
| | | "@angular/common" "^5.0.0" |
| | | "@angular/compiler" "^5.0.0" |
| | | "@angular/core" "^5.0.0" |
| | | "@angular/forms" "^5.0.0" |
| | | "@angular/http" "^5.0.0" |
| | | "@angular/platform-browser" "^5.0.0" |
| | | "@angular/platform-browser-dynamic" "^5.0.0" |
| | | "@angular/router" "^5.0.0" |
| | | core-js "^2.4.1" |
| | | ngx-highlight-js "^1.0.3" |
| | | rxjs "^5.5.2" |
| | | zone.js "^0.8.14" |
| | | |
| | | ngx-ueditor@^1.1.0: |
| | | version "1.1.0" |
| | | resolved "http://registry.npm.taobao.org/ngx-ueditor/download/ngx-ueditor-1.1.0.tgz#0766acc6a8e8205661131c97be49c1e991c97c6c" |
| | | dependencies: |
| | | "@angular/animations" "^5.0.0" |
| | | "@angular/common" "^5.0.0" |
| | | "@angular/compiler" "^5.0.0" |
| | | "@angular/core" "^5.0.0" |
| | | "@angular/forms" "^5.0.0" |
| | | "@angular/http" "^5.0.0" |
| | | "@angular/platform-browser" "^5.0.0" |
| | | "@angular/platform-browser-dynamic" "^5.0.0" |
| | | "@angular/router" "^5.0.0" |
| | | core-js "^2.4.1" |
| | | ngx-highlight-js "^1.0.3" |
| | | rxjs "^5.5.2" |
| | | zone.js "^0.8.14" |
| | | |
| | | no-case@^2.2.0: |
| | | version "2.3.2" |
| | |
| | | dependencies: |
| | | find-up "^2.1.0" |
| | | |
| | | point-at-length@^1.0.2: |
| | | version "1.1.0" |
| | | resolved "http://registry.npm.taobao.org/point-at-length/download/point-at-length-1.1.0.tgz#0ad72ebd0980d7f5a1ab12296c055f9eb6b30e57" |
| | | point-at-length@~1.0.2: |
| | | version "1.0.2" |
| | | resolved "http://registry.npm.taobao.org/point-at-length/download/point-at-length-1.0.2.tgz#9176d8d6d7c8162f12b646f707db9f0ea728125e" |
| | | dependencies: |
| | | abs-svg-path "~0.1.1" |
| | | isarray "~0.0.1" |
| | |
| | | ansi-regex "^3.0.0" |
| | | ansi-styles "^3.2.0" |
| | | |
| | | printj@~1.1.0: |
| | | version "1.1.0" |
| | | resolved "http://registry.npm.taobao.org/printj/download/printj-1.1.0.tgz#85487b5e8f96763b0b4a253613bef9dd9b387e3c" |
| | | |
| | | process-nextick-args@~1.0.6: |
| | | version "1.0.7" |
| | | resolved "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" |
| | |
| | | dependencies: |
| | | jsesc "~0.5.0" |
| | | |
| | | regression@^2.0.0: |
| | | regression@~2.0.0: |
| | | version "2.0.1" |
| | | resolved "http://registry.npm.taobao.org/regression/download/regression-2.0.1.tgz#8d29c3e8224a10850c35e337e85a8b2fac3b0c87" |
| | | |
| | |
| | | version "2.4.1" |
| | | resolved "http://registry.npm.taobao.org/simple-line-icons/download/simple-line-icons-2.4.1.tgz#b75bc5a0d87e530928c2ccda5735274bb256f234" |
| | | |
| | | simple-statistics@^4.1.0: |
| | | simple-statistics@~4.1.0: |
| | | version "4.1.1" |
| | | resolved "http://registry.npm.taobao.org/simple-statistics/download/simple-statistics-4.1.1.tgz#533c48d48336ba3d350d8135f20fa7138acb0c7d" |
| | | |
| | |
| | | sprintf-js@~1.0.2: |
| | | version "1.0.3" |
| | | resolved "http://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" |
| | | |
| | | ssf@~0.10.1: |
| | | version "0.10.1" |
| | | resolved "http://registry.npm.taobao.org/ssf/download/ssf-0.10.1.tgz#f23d82b63792ef56089089c1cd0c848e911cdba6" |
| | | dependencies: |
| | | frac "~1.1.0" |
| | | |
| | | sshpk@^1.7.0: |
| | | version "1.13.1" |
| | |
| | | version "1.0.3" |
| | | resolved "http://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" |
| | | |
| | | topojson-client@^3.0.0: |
| | | topojson-client@~3.0.0: |
| | | version "3.0.0" |
| | | resolved "http://registry.npm.taobao.org/topojson-client/download/topojson-client-3.0.0.tgz#1f99293a77ef42a448d032a81aa982b73f360d2f" |
| | | dependencies: |
| | |
| | | dependencies: |
| | | indexof "0.0.1" |
| | | |
| | | voc@~1.0.0: |
| | | version "1.0.0" |
| | | resolved "http://registry.npm.taobao.org/voc/download/voc-1.0.0.tgz#5465c0ce11d0881f7d8e36d8ca587043f33a25ae" |
| | | |
| | | void-elements@^2.0.0: |
| | | version "2.0.1" |
| | | resolved "http://registry.npm.taobao.org/void-elements/download/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" |
| | |
| | | version "5.2.4" |
| | | resolved "http://registry.npm.taobao.org/wolfy87-eventemitter/download/wolfy87-eventemitter-5.2.4.tgz#5021d2952d3611cbcd195149711d9b595cd11d48" |
| | | |
| | | wolfy87-eventemitter@~5.1.0: |
| | | version "5.1.0" |
| | | resolved "http://registry.npm.taobao.org/wolfy87-eventemitter/download/wolfy87-eventemitter-5.1.0.tgz#35c1ac0dd1ac0c15e35d981508fc22084a13a011" |
| | | |
| | | wordwrap@0.0.2: |
| | | version "0.0.2" |
| | | resolved "http://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" |
| | |
| | | version "0.1.0" |
| | | resolved "http://registry.npm.taobao.org/x-is-string/download/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" |
| | | |
| | | xlsx@^0.11.16: |
| | | version "0.11.17" |
| | | resolved "http://registry.npm.taobao.org/xlsx/download/xlsx-0.11.17.tgz#507461fb9783ad0afe1cf751aeb59956e93232da" |
| | | dependencies: |
| | | adler-32 "~1.1.0" |
| | | cfb "~1.0.1" |
| | | codepage "~1.11.0" |
| | | commander "~2.11.0" |
| | | crc-32 "~1.1.1" |
| | | exit-on-epipe "~1.0.1" |
| | | ssf "~0.10.1" |
| | | |
| | | xml-char-classes@^1.0.0: |
| | | version "1.0.0" |
| | | resolved "http://registry.npm.taobao.org/xml-char-classes/download/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" |