├── .gitattributes
├── app
├── .buildignore
├── views
│ ├── stat
│ │ ├── cube.html
│ │ ├── chart.html
│ │ ├── easypiechart.css
│ │ └── easypiechart.html
│ ├── table
│ │ ├── cascade.html
│ │ ├── summary.html
│ │ ├── tree.html
│ │ ├── virtual.html
│ │ ├── expanding.html
│ │ ├── grouping.html
│ │ ├── frozen.html
│ │ ├── local.css
│ │ ├── remote.css
│ │ ├── frozen.css
│ │ └── basic.html
│ ├── utils
│ │ ├── portal.html
│ │ ├── dragAndDrop.html
│ │ ├── modal.html
│ │ └── zoom.html
│ ├── thirdparty
│ │ ├── baiduueditor.css
│ │ └── baiduueditor.html
│ ├── form.html
│ ├── home.html
│ ├── show.html
│ ├── stat.html
│ ├── tree.html
│ ├── animation.html
│ ├── home
│ │ ├── notFound.html
│ │ ├── footer.html
│ │ ├── brief.html
│ │ ├── contact.html
│ │ ├── nav.html
│ │ ├── viewSource.html
│ │ ├── viewStatus.html
│ │ ├── about.html
│ │ ├── home.html
│ │ └── header.html
│ ├── input.html
│ ├── select.html
│ ├── table.html
│ ├── thirdparty.html
│ ├── utils.html
│ ├── integrated.html
│ ├── select
│ │ ├── multiple.css
│ │ ├── custom.html
│ │ ├── typeAhead.html
│ │ ├── select2.html
│ │ ├── cascade.html
│ │ ├── multiple.html
│ │ └── basic.html
│ ├── input
│ │ ├── color.html
│ │ ├── date.html
│ │ ├── time.html
│ │ ├── datetime.html
│ │ ├── maskedText.html
│ │ ├── checkbox.html
│ │ ├── radio.html
│ │ ├── html5.html
│ │ └── calendar.html
│ ├── tree
│ │ ├── basic.css
│ │ ├── checkbox.css
│ │ ├── treeData.css
│ │ ├── uiTree.html
│ │ ├── basic.html
│ │ ├── checkbox.html
│ │ └── treeData.html
│ ├── show
│ │ ├── tab.css
│ │ ├── panel.html
│ │ ├── tab.html
│ │ ├── alert.html
│ │ └── progress.html
│ ├── integrated
│ │ ├── cart.css
│ │ └── cart.html
│ ├── form
│ │ ├── basic.css
│ │ ├── customValidation.css
│ │ └── remoteValidation.css
│ └── animation
│ │ ├── basic.css
│ │ ├── custom.css
│ │ ├── basic.html
│ │ ├── choiceitems.json
│ │ └── custom.html
├── robots.txt
├── scripts
│ ├── scHelper.js
│ ├── controllers
│ │ ├── form.js
│ │ ├── home.js
│ │ ├── show.js
│ │ ├── stat.js
│ │ ├── tree.js
│ │ ├── input.js
│ │ ├── select.js
│ │ ├── table.js
│ │ ├── utils.js
│ │ ├── animation.js
│ │ ├── home
│ │ │ ├── home.js
│ │ │ ├── about.js
│ │ │ └── contact.js
│ │ ├── show
│ │ │ ├── tab.js
│ │ │ ├── panel.js
│ │ │ ├── progress.js
│ │ │ └── alert.js
│ │ ├── stat
│ │ │ ├── cube.js
│ │ │ ├── easypiechart.js
│ │ │ └── chart.js
│ │ ├── input
│ │ │ ├── date.js
│ │ │ ├── html5.js
│ │ │ ├── checkbox.js
│ │ │ ├── datetime.js
│ │ │ ├── maskedText.js
│ │ │ ├── radio.js
│ │ │ ├── file.js
│ │ │ └── calendar.js
│ │ ├── integrated.js
│ │ ├── table
│ │ │ ├── tree.js
│ │ │ ├── cascade.js
│ │ │ ├── frozen.js
│ │ │ ├── grouping.js
│ │ │ ├── summary.js
│ │ │ ├── virtual.js
│ │ │ ├── expanding.js
│ │ │ ├── remote.js
│ │ │ ├── basic.js
│ │ │ └── local.js
│ │ ├── thirdparty.js
│ │ ├── utils
│ │ │ ├── portal.js
│ │ │ ├── dragAndDrop.js
│ │ │ ├── zoom.js
│ │ │ └── modal.js
│ │ ├── notFound.js
│ │ ├── animation
│ │ │ ├── choiceitems.json
│ │ │ └── basic.js
│ │ ├── tree
│ │ │ ├── basic.js
│ │ │ ├── uiTree.js
│ │ │ ├── treeData.js
│ │ │ └── checkbox.js
│ │ ├── select
│ │ │ ├── select2.js
│ │ │ ├── cascade.js
│ │ │ ├── multiple.js
│ │ │ ├── basic.js
│ │ │ ├── typeAhead.js
│ │ │ └── custom.js
│ │ ├── thirdparty
│ │ │ └── baiduueditor.js
│ │ ├── form
│ │ │ ├── basic.js
│ │ │ ├── customValidation.js
│ │ │ └── dependency.js
│ │ └── integrated
│ │ │ └── cart.js
│ ├── services
│ │ ├── DaoBook.js
│ │ ├── Zoom.js
│ │ ├── Rect.js
│ │ └── ZoomTest.js
│ ├── filters
│ │ ├── size.js
│ │ ├── orderClass.js
│ │ └── paging.js
│ ├── directives
│ │ ├── app
│ │ │ ├── footer.js
│ │ │ ├── nav.js
│ │ │ ├── header.js
│ │ │ ├── brief.js
│ │ │ └── viewStatus.js
│ │ ├── common
│ │ │ ├── recursive.js
│ │ │ ├── resize.js
│ │ │ ├── masked.js
│ │ │ └── position.js
│ │ └── thirdparty
│ │ │ ├── highcharts.js
│ │ │ └── baiduueditor.js
│ ├── app.js
│ ├── config
│ │ ├── config.js
│ │ ├── authors.js
│ │ └── city-data.js
│ └── router.js
├── thirdparty-libs
│ └── ueditor1_3_6-utf8-jsp
│ │ ├── themes
│ │ ├── iframe.css
│ │ └── default
│ │ │ ├── images
│ │ │ ├── lock.gif
│ │ │ ├── word.gif
│ │ │ ├── anchor.gif
│ │ │ ├── arrow.png
│ │ │ ├── charts.png
│ │ │ ├── icons.gif
│ │ │ ├── icons.png
│ │ │ ├── scale.png
│ │ │ ├── spacer.gif
│ │ │ ├── upload.png
│ │ │ ├── arrow_up.png
│ │ │ ├── button-bg.gif
│ │ │ ├── cursor_h.gif
│ │ │ ├── cursor_h.png
│ │ │ ├── cursor_v.gif
│ │ │ ├── cursor_v.png
│ │ │ ├── filescan.png
│ │ │ ├── icons-all.gif
│ │ │ ├── pagebreak.gif
│ │ │ ├── sortable.png
│ │ │ ├── videologo.gif
│ │ │ ├── wordpaste.png
│ │ │ ├── arrow_down.png
│ │ │ ├── cancelbutton.gif
│ │ │ ├── highlighted.gif
│ │ │ ├── sparator_v.png
│ │ │ ├── toolbar_bg.png
│ │ │ ├── unhighlighted.gif
│ │ │ ├── dialog-title-bg.png
│ │ │ ├── neweditor-tab-bg.png
│ │ │ ├── table-cell-align.png
│ │ │ └── tangram-colorpicker.png
│ │ │ └── dialogbase.css
│ │ ├── jsp
│ │ ├── ueditor.jar
│ │ ├── commons-fileupload-1.2.2.jar
│ │ ├── config.properties
│ │ ├── getContent.jsp
│ │ ├── scrawlUp.jsp
│ │ ├── getMovie.jsp
│ │ ├── fileUp.jsp
│ │ └── imageManager.jsp
│ │ ├── lang
│ │ ├── en
│ │ │ └── images
│ │ │ │ ├── copy.png
│ │ │ │ ├── button.png
│ │ │ │ ├── music.png
│ │ │ │ ├── upload.png
│ │ │ │ ├── addimage.png
│ │ │ │ ├── imglabel.png
│ │ │ │ ├── background.png
│ │ │ │ ├── localimage.png
│ │ │ │ ├── deletedisable.png
│ │ │ │ ├── deleteenable.png
│ │ │ │ ├── listbackground.png
│ │ │ │ ├── rotateleftenable.png
│ │ │ │ ├── alldeletebtnupskin.png
│ │ │ │ ├── rotateleftdisable.png
│ │ │ │ ├── rotaterightdisable.png
│ │ │ │ ├── rotaterightenable.png
│ │ │ │ └── alldeletebtnhoverskin.png
│ │ └── zh-cn
│ │ │ └── images
│ │ │ ├── copy.png
│ │ │ ├── music.png
│ │ │ ├── upload.png
│ │ │ ├── imglabel.png
│ │ │ └── localimage.png
│ │ ├── dialogs
│ │ ├── emotion
│ │ │ ├── images
│ │ │ │ ├── 0.gif
│ │ │ │ ├── bface.gif
│ │ │ │ ├── cface.gif
│ │ │ │ ├── fface.gif
│ │ │ │ ├── tface.gif
│ │ │ │ ├── wface.gif
│ │ │ │ ├── yface.gif
│ │ │ │ ├── jxface2.gif
│ │ │ │ └── neweditor-tab-bg.png
│ │ │ └── emotion.css
│ │ ├── table
│ │ │ ├── dragicon.png
│ │ │ ├── edittip.html
│ │ │ ├── edittable.css
│ │ │ └── edittd.html
│ │ ├── scrawl
│ │ │ └── images
│ │ │ │ ├── redo.png
│ │ │ │ ├── size.png
│ │ │ │ ├── undo.png
│ │ │ │ ├── addimg.png
│ │ │ │ ├── brush.png
│ │ │ │ ├── delimg.png
│ │ │ │ ├── delimgH.png
│ │ │ │ ├── empty.png
│ │ │ │ ├── emptyH.png
│ │ │ │ ├── eraser.png
│ │ │ │ ├── redoH.png
│ │ │ │ ├── scale.png
│ │ │ │ ├── scaleH.png
│ │ │ │ └── undoH.png
│ │ ├── template
│ │ │ ├── images
│ │ │ │ ├── bg.gif
│ │ │ │ ├── pre0.png
│ │ │ │ ├── pre1.png
│ │ │ │ ├── pre2.png
│ │ │ │ ├── pre3.png
│ │ │ │ └── pre4.png
│ │ │ ├── template.html
│ │ │ ├── template.css
│ │ │ └── template.js
│ │ ├── charts
│ │ │ ├── images
│ │ │ │ ├── charts0.png
│ │ │ │ ├── charts1.png
│ │ │ │ ├── charts2.png
│ │ │ │ ├── charts3.png
│ │ │ │ ├── charts4.png
│ │ │ │ └── charts5.png
│ │ │ └── chart.config.js
│ │ ├── image
│ │ │ ├── imageUploader.swf
│ │ │ └── images
│ │ │ │ ├── left_focus.jpg
│ │ │ │ ├── none_focus.jpg
│ │ │ │ ├── center_focus.jpg
│ │ │ │ └── right_focus.jpg
│ │ ├── video
│ │ │ └── images
│ │ │ │ ├── left_focus.jpg
│ │ │ │ ├── none_focus.jpg
│ │ │ │ ├── center_focus.jpg
│ │ │ │ └── right_focus.jpg
│ │ ├── wordimage
│ │ │ ├── imageUploader.swf
│ │ │ └── fClipboard_ueditor.swf
│ │ ├── attachment
│ │ │ ├── fileTypeImages
│ │ │ │ ├── icon_mv.gif
│ │ │ │ ├── icon_chm.gif
│ │ │ │ ├── icon_doc.gif
│ │ │ │ ├── icon_exe.gif
│ │ │ │ ├── icon_mp3.gif
│ │ │ │ ├── icon_pdf.gif
│ │ │ │ ├── icon_ppt.gif
│ │ │ │ ├── icon_psd.gif
│ │ │ │ ├── icon_rar.gif
│ │ │ │ ├── icon_txt.gif
│ │ │ │ ├── icon_xls.gif
│ │ │ │ └── icon_default.png
│ │ │ └── fileTypeMaps.js
│ │ ├── help
│ │ │ ├── help.css
│ │ │ └── help.js
│ │ ├── spechars
│ │ │ └── spechars.html
│ │ ├── music
│ │ │ ├── music.html
│ │ │ └── music.css
│ │ ├── background
│ │ │ └── background.css
│ │ ├── preview
│ │ │ └── preview.html
│ │ ├── anchor
│ │ │ └── anchor.html
│ │ └── snapscreen
│ │ │ └── snapscreen.html
│ │ └── third-party
│ │ ├── video-js
│ │ ├── font
│ │ │ ├── vjs.eot
│ │ │ ├── vjs.ttf
│ │ │ └── vjs.woff
│ │ └── video-js.swf
│ │ ├── swfupload
│ │ ├── swfupload.swf
│ │ ├── swfupload_fp9.swf
│ │ └── swfupload.cookies.js
│ │ ├── snapscreen
│ │ └── UEditorSnapscreen.exe
│ │ └── highcharts
│ │ ├── modules
│ │ ├── heatmap.js
│ │ ├── heatmap.src.js
│ │ ├── no-data-to-display.js
│ │ └── funnel.js
│ │ └── themes
│ │ └── skies.js
├── favicon.ico
├── images
│ ├── bx.jpg
│ ├── cn.png
│ ├── sj.jpg
│ ├── us.png
│ ├── dcl.jpg
│ ├── large.jpg
│ ├── small.jpg
│ └── angular-small.png
├── fonts
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.ttf
│ └── glyphicons-halflings-regular.woff
└── lib
│ └── ui-bootstrap-locale_zh-cn.js
├── .bowerrc
├── .gitignore
├── .travis.yml
├── test
├── runner.html
├── .jshintrc
└── spec
│ └── services
│ └── ZoomTest.js
├── .jshintrc
├── .editorconfig
├── bower.json
├── package.json
├── README.md
└── karma-e2e.conf.js
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
--------------------------------------------------------------------------------
/app/.buildignore:
--------------------------------------------------------------------------------
1 | *.coffee
--------------------------------------------------------------------------------
/app/views/stat/cube.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/table/cascade.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/table/summary.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/table/tree.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/table/virtual.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/utils/portal.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/table/expanding.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/table/grouping.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/utils/dragAndDrop.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/thirdparty/baiduueditor.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/form.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/views/home.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/views/show.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/views/stat.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/views/tree.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/views/animation.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/views/home/notFound.html:
--------------------------------------------------------------------------------
1 | 指定的地址未找到:{{vm.url}}
--------------------------------------------------------------------------------
/app/views/input.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/views/select.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/views/table.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/views/thirdparty.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/utils.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/views/integrated.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/robots.txt:
--------------------------------------------------------------------------------
1 | # robotstxt.org
2 |
3 | User-agent: *
4 |
--------------------------------------------------------------------------------
/.bowerrc:
--------------------------------------------------------------------------------
1 | {
2 | "directory": "app/bower_components"
3 | }
4 |
--------------------------------------------------------------------------------
/app/scripts/scHelper.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('scHelper', []);
4 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/iframe.css:
--------------------------------------------------------------------------------
1 | /*可以在这里添加你自己的css*/
2 |
--------------------------------------------------------------------------------
/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/favicon.ico
--------------------------------------------------------------------------------
/app/images/bx.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/images/bx.jpg
--------------------------------------------------------------------------------
/app/images/cn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/images/cn.png
--------------------------------------------------------------------------------
/app/images/sj.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/images/sj.jpg
--------------------------------------------------------------------------------
/app/images/us.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/images/us.png
--------------------------------------------------------------------------------
/app/images/dcl.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/images/dcl.jpg
--------------------------------------------------------------------------------
/app/images/large.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/images/large.jpg
--------------------------------------------------------------------------------
/app/images/small.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/images/small.jpg
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | .tmp
4 | .sass-cache
5 | app/bower_components
6 | .idea/*
7 | /.idea
8 |
--------------------------------------------------------------------------------
/app/views/select/multiple.css:
--------------------------------------------------------------------------------
1 | .custom-select.dropdown .dropdown-menu {
2 | right: 0;
3 | padding: 15px;
4 | }
--------------------------------------------------------------------------------
/app/images/angular-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/images/angular-small.png
--------------------------------------------------------------------------------
/app/views/input/color.html:
--------------------------------------------------------------------------------
1 |
2 | 您输入的是:{{vm.text}}
3 |
4 |
--------------------------------------------------------------------------------
/app/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/app/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/app/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/app/views/home/footer.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/views/input/date.html:
--------------------------------------------------------------------------------
1 |
2 | 您输入的是:{{vm.text}}
3 |
4 |
--------------------------------------------------------------------------------
/app/views/input/time.html:
--------------------------------------------------------------------------------
1 |
2 | 您输入的是:{{vm.text}}
3 |
4 |
--------------------------------------------------------------------------------
/app/views/input/datetime.html:
--------------------------------------------------------------------------------
1 |
2 | 您输入的是:{{vm.text}}
3 |
4 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - '0.8'
4 | - '0.10'
5 | before_script:
6 | - 'npm install -g bower grunt-cli'
7 | - 'bower install'
8 |
--------------------------------------------------------------------------------
/app/views/input/maskedText.html:
--------------------------------------------------------------------------------
1 | 演示
2 |
3 | 说明
--------------------------------------------------------------------------------
/app/scripts/controllers/form.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.form', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/home.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.home', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/show.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.show', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/stat.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.stat', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/tree.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.tree', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/jsp/ueditor.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/jsp/ueditor.jar
--------------------------------------------------------------------------------
/app/scripts/controllers/input.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.input', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/select.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.select', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/table.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.table', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/utils.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.utils', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/animation.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.animation', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/home/home.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.home.home', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/show/tab.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.show.tab', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/stat/cube.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.stat.cube', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/views/home/brief.html:
--------------------------------------------------------------------------------
1 | {{vm.description || vm.title}}
2 | 已完成 - {{vm.progress}}%
3 |
--------------------------------------------------------------------------------
/app/scripts/controllers/home/about.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.home.about', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/input/date.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.input.date', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/input/html5.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.input.html5', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/integrated.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.integrated', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/show/panel.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.show.panel', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/table/tree.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.table.tree', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/thirdparty.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.thirdparty', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/copy.png
--------------------------------------------------------------------------------
/app/views/tree/basic.css:
--------------------------------------------------------------------------------
1 | .tree li {
2 | cursor: pointer;
3 | padding-left: 1.3em;
4 | }
5 |
6 | .tree ul {
7 | list-style: none;
8 | padding-left: 0;
9 | }
10 |
11 |
--------------------------------------------------------------------------------
/app/scripts/controllers/home/contact.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.home.contact', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/input/checkbox.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.input.checkbox', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/input/datetime.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.input.datetime', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/table/cascade.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.table.cascade', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/table/frozen.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.table.frozen', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/table/grouping.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.table.grouping', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/table/summary.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.table.summary', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/table/virtual.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.table.virtual', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/controllers/utils/portal.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.utils.portal', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/scripts/services/DaoBook.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').factory('DaoBook', function($resource, config) {
4 | return $resource(config.api('books/:id'));
5 | });
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/button.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/music.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/upload.png
--------------------------------------------------------------------------------
/app/scripts/controllers/table/expanding.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.table.expanding', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/0.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/0.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/table/dragicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/table/dragicon.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/addimage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/addimage.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/imglabel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/imglabel.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/zh-cn/images/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/zh-cn/images/copy.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/zh-cn/images/music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/zh-cn/images/music.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/zh-cn/images/upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/zh-cn/images/upload.png
--------------------------------------------------------------------------------
/app/views/show/tab.css:
--------------------------------------------------------------------------------
1 | /*给分页框的内容区加边距和边框*/
2 | .tab-content.tab-bordered {
3 | border: 1px solid lightgray;
4 | border-top: none;
5 | padding: 15px;
6 | border-radius: 0 0 4px 4px;
7 | }
8 |
--------------------------------------------------------------------------------
/app/scripts/controllers/utils/dragAndDrop.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.utils.dragAndDrop', function ($scope) {
4 | var vm = $scope.vm = {};
5 | });
6 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/redo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/redo.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/size.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/size.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/undo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/undo.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/images/bg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/images/bg.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/background.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/localimage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/localimage.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/zh-cn/images/imglabel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/zh-cn/images/imglabel.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/lock.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/lock.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/word.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/word.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/charts/images/charts0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/charts/images/charts0.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/charts/images/charts1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/charts/images/charts1.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/charts/images/charts2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/charts/images/charts2.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/charts/images/charts3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/charts/images/charts3.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/charts/images/charts4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/charts/images/charts4.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/charts/images/charts5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/charts/images/charts5.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/bface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/bface.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/cface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/cface.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/fface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/fface.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/tface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/tface.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/wface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/wface.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/yface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/yface.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/image/imageUploader.swf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/image/imageUploader.swf
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/addimg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/addimg.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/brush.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/brush.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/delimg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/delimg.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/delimgH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/delimgH.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/empty.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/emptyH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/emptyH.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/eraser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/eraser.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/redoH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/redoH.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/scale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/scale.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/scaleH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/scaleH.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/undoH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/scrawl/images/undoH.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/images/pre0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/images/pre0.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/images/pre1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/images/pre1.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/images/pre2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/images/pre2.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/images/pre3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/images/pre3.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/images/pre4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/images/pre4.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/jsp/commons-fileupload-1.2.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/jsp/commons-fileupload-1.2.2.jar
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/deletedisable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/deletedisable.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/deleteenable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/deleteenable.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/listbackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/listbackground.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/zh-cn/images/localimage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/zh-cn/images/localimage.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/anchor.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/anchor.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/arrow.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/charts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/charts.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/icons.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/icons.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/icons.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/scale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/scale.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/spacer.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/spacer.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/upload.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/video-js/font/vjs.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/video-js/font/vjs.eot
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/video-js/font/vjs.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/video-js/font/vjs.ttf
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/video-js/video-js.swf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/video-js/video-js.swf
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/jxface2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/jxface2.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/image/images/left_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/image/images/left_focus.jpg
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/image/images/none_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/image/images/none_focus.jpg
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/video/images/left_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/video/images/left_focus.jpg
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/video/images/none_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/video/images/none_focus.jpg
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/wordimage/imageUploader.swf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/wordimage/imageUploader.swf
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/rotateleftenable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/rotateleftenable.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/arrow_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/arrow_up.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/button-bg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/button-bg.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/cursor_h.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/cursor_h.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/cursor_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/cursor_h.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/cursor_v.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/cursor_v.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/cursor_v.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/cursor_v.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/filescan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/filescan.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/icons-all.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/icons-all.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/pagebreak.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/pagebreak.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/sortable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/sortable.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/videologo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/videologo.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/wordpaste.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/wordpaste.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/swfupload/swfupload.swf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/swfupload/swfupload.swf
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/video-js/font/vjs.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/video-js/font/vjs.woff
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/image/images/center_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/image/images/center_focus.jpg
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/image/images/right_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/image/images/right_focus.jpg
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/video/images/center_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/video/images/center_focus.jpg
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/video/images/right_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/video/images/right_focus.jpg
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/alldeletebtnupskin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/alldeletebtnupskin.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/rotateleftdisable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/rotateleftdisable.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/rotaterightdisable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/rotaterightdisable.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/rotaterightenable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/rotaterightenable.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/arrow_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/arrow_down.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/cancelbutton.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/cancelbutton.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/highlighted.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/highlighted.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/sparator_v.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/sparator_v.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/toolbar_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/toolbar_bg.png
--------------------------------------------------------------------------------
/app/scripts/controllers/input/maskedText.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.input.maskedText', function ($scope) {
4 | var vm = $scope.vm = {};
5 | vm.text = 'abc';
6 | });
7 |
--------------------------------------------------------------------------------
/app/scripts/controllers/notFound.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.notFound', function ($scope, $location) {
4 | var vm = $scope.vm = {};
5 | vm.url = $location.url
6 | });
7 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/wordimage/fClipboard_ueditor.swf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/wordimage/fClipboard_ueditor.swf
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/alldeletebtnhoverskin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/lang/en/images/alldeletebtnhoverskin.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/unhighlighted.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/unhighlighted.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/swfupload/swfupload_fp9.swf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/swfupload/swfupload_fp9.swf
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/neweditor-tab-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/images/neweditor-tab-bg.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/dialog-title-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/dialog-title-bg.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/neweditor-tab-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/neweditor-tab-bg.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/table-cell-align.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/table-cell-align.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_mv.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_mv.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/tangram-colorpicker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/images/tangram-colorpicker.png
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/snapscreen/UEditorSnapscreen.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/snapscreen/UEditorSnapscreen.exe
--------------------------------------------------------------------------------
/app/views/stat/chart.html:
--------------------------------------------------------------------------------
1 | 图示
2 |
3 | Y轴名称
4 |
5 |
--------------------------------------------------------------------------------
/app/views/tree/checkbox.css:
--------------------------------------------------------------------------------
1 | .tree li {
2 | cursor: pointer;
3 | padding-left: 1.3em;
4 | }
5 |
6 | .tree ul {
7 | list-style: none;
8 | padding-left: 0;
9 | }
10 |
11 | .intermediate {
12 | opacity: 0.3;
13 | }
--------------------------------------------------------------------------------
/app/views/tree/treeData.css:
--------------------------------------------------------------------------------
1 | .tree li {
2 | cursor: pointer;
3 | padding-left: 1.3em;
4 | }
5 |
6 | .tree ul {
7 | list-style: none;
8 | padding-left: 0;
9 | }
10 |
11 | .intermediate {
12 | opacity: 0.3;
13 | }
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_chm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_chm.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_doc.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_doc.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_exe.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_exe.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_mp3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_mp3.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_pdf.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_pdf.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_ppt.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_ppt.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_psd.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_psd.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_rar.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_rar.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_txt.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_txt.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_xls.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_xls.gif
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angular-cn/ng-showcase/HEAD/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeImages/icon_default.png
--------------------------------------------------------------------------------
/app/scripts/filters/size.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('scHelper').filter('size', function() {
4 | return function (items) {
5 | if (!items)
6 | return 0;
7 |
8 | return items.length || 0
9 | }
10 | });
11 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/jsp/config.properties:
--------------------------------------------------------------------------------
1 | #UEditor Config
2 |
3 | # \u4FDD\u5B58\u8DEF\u5F84
4 | savePath=upload1,upload2,upload3
5 |
6 | # \u4E0A\u4F20\u6587\u4EF6\u540D\u5B57\u683C\u5F0F
7 | fileNameFormat={time}{rand:6}
--------------------------------------------------------------------------------
/app/views/home/contact.html:
--------------------------------------------------------------------------------
1 | 我们的github基地在 https://github.com/angular-cn/ng-showcase。
2 |
3 | 我们的大群在:278252889 不过已经基本满了,可以申请,未必能审核通过。
小群在:200242234 主要面向希望参与开发的人员。
4 |
5 |
--------------------------------------------------------------------------------
/app/scripts/controllers/animation/choiceitems.json:
--------------------------------------------------------------------------------
1 | [{
2 | "group": "Attention Seekers",
3 | "value":"bounce",
4 | "label":"bounce"
5 | },
6 | {
7 | "group": "Attention Seekers",
8 | "value": "flash",
9 | "label": "flash"
10 | }]
11 |
--------------------------------------------------------------------------------
/app/scripts/controllers/show/progress.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.show.progress', function ($scope) {
4 | var vm = $scope.vm = {};
5 | vm.value = 50;
6 | vm.style = 'progress-bar-info';
7 | vm.showLabel = true;
8 | });
9 |
--------------------------------------------------------------------------------
/app/scripts/controllers/utils/zoom.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.utils.zoom', function ($scope, Zoom) {
4 | var vm = $scope.vm = {};
5 | vm.zoom = new Zoom();
6 | vm.zoom1 = new Zoom();
7 | vm.zoom3 = new Zoom();
8 | });
9 |
--------------------------------------------------------------------------------
/app/scripts/directives/app/footer.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').directive('appFooter', function() {
4 | return {
5 | restrict: 'EA',
6 | templateUrl: 'views/home/footer.html',
7 | link: function(scope, element, attrs) {}
8 | }
9 | });
--------------------------------------------------------------------------------
/app/views/integrated/cart.css:
--------------------------------------------------------------------------------
1 | /*缩略图的外观定制*/
2 | .thumbnail img {
3 | height: 150px;
4 | }
5 |
6 | .thumbnail .items-details {
7 | height: 3em;
8 | overflow-y: auto;
9 | }
10 |
11 | tr.removed {
12 | color: darkgray;
13 | text-decoration: line-through;
14 | }
--------------------------------------------------------------------------------
/test/runner.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | End2end Test Runner
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/scripts/controllers/table/remote.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.table.remote', function ($scope, DaoBook) {
4 | var vm = $scope.vm = {};
5 | DaoBook.query({page: 1, size: 20}, function(data) {
6 | console.log(data);
7 | });
8 | });
9 |
--------------------------------------------------------------------------------
/app/scripts/controllers/utils/modal.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.utils.modal', function ($scope) {
4 | var vm = $scope.vm = {};
5 |
6 | vm.modal = {
7 | title: '标题',
8 | msg: 'Hello,这是一个由Bootstrap提供的模态框.'
9 | };
10 |
11 | });
--------------------------------------------------------------------------------
/app/scripts/filters/orderClass.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('scHelper').filter('orderClass', function() {
4 | return function (direction) {
5 | if (direction === -1)
6 | return "glyphicon-chevron-down";
7 | else
8 | return "glyphicon-chevron-up";
9 | }
10 | });
11 |
--------------------------------------------------------------------------------
/app/views/form/basic.css:
--------------------------------------------------------------------------------
1 | .showcase-form textarea .ng-dirty.ng-invalid,
2 | .showcase-form select .ng-dirty.ng-invalid,
3 | .showcase-form input.ng-dirty.ng-invalid {
4 | border-color: #e9322d;
5 | -webkit-box-shadow: 0 0 6px #f8b9b7;
6 | -moz-box-shadow: 0 0 6px #f8b9b7;
7 | box-shadow: 0 0 6px #f8b9b7;
8 | }
--------------------------------------------------------------------------------
/app/scripts/filters/paging.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('scHelper').filter('paging', function() {
4 | return function (items, index, pageSize) {
5 | if (!items)
6 | return [];
7 |
8 | var offset = (index - 1) * pageSize;
9 | return items.slice(offset, offset + pageSize);
10 | }
11 | });
12 |
--------------------------------------------------------------------------------
/app/views/form/customValidation.css:
--------------------------------------------------------------------------------
1 | .showcase-form textarea .ng-dirty.ng-invalid,
2 | .showcase-form select .ng-dirty.ng-invalid,
3 | .showcase-form input.ng-dirty.ng-invalid {
4 | border-color: #e9322d;
5 | -webkit-box-shadow: 0 0 6px #f8b9b7;
6 | -moz-box-shadow: 0 0 6px #f8b9b7;
7 | box-shadow: 0 0 6px #f8b9b7;
8 | }
--------------------------------------------------------------------------------
/app/views/form/remoteValidation.css:
--------------------------------------------------------------------------------
1 | .showcase-form textarea .ng-dirty.ng-invalid,
2 | .showcase-form select .ng-dirty.ng-invalid,
3 | .showcase-form input.ng-dirty.ng-invalid {
4 | border-color: #e9322d;
5 | -webkit-box-shadow: 0 0 6px #f8b9b7;
6 | -moz-box-shadow: 0 0 6px #f8b9b7;
7 | box-shadow: 0 0 6px #f8b9b7;
8 | }
--------------------------------------------------------------------------------
/app/scripts/app.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp', [
4 | 'ngCookies',
5 | 'ngResource',
6 | 'ngSanitize',
7 | 'ngAnimate',
8 | 'ui.router',
9 | 'ui.bootstrap',
10 | 'hljs',
11 | 'easypiechart',
12 | 'scHelper',
13 | 'angularFileUpload',
14 | 'ui.select2',
15 | 'sf.treeRepeat'
16 | ]);
17 |
--------------------------------------------------------------------------------
/app/scripts/controllers/input/radio.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.input.radio', function ($scope) {
4 | var vm = $scope.vm = {};
5 | vm.values = [
6 | {code: 'a', age: 30},
7 | {code: 'b', age: 50},
8 | {code: 'c', age: 44}
9 | ];
10 | vm.selection = vm.values[1];
11 | });
12 |
--------------------------------------------------------------------------------
/app/views/tree/uiTree.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 | {{node.id}} - {{node.name}}
6 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/views/table/frozen.html:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/views/table/local.css:
--------------------------------------------------------------------------------
1 | table thead th {
2 | cursor: default;
3 | }
4 |
5 | table thead th.sortable {
6 | cursor: pointer;
7 | }
8 |
9 | .relative {
10 | position: relative;
11 | }
12 |
13 | .relative .popover {
14 | width: 200px;
15 | }
16 |
17 | .pagination-sm {
18 | margin: 0;
19 | }
20 |
21 | .global-search {
22 | margin-bottom: 20px;
23 | }
--------------------------------------------------------------------------------
/app/views/table/remote.css:
--------------------------------------------------------------------------------
1 | table thead th {
2 | cursor: default;
3 | }
4 |
5 | table thead th.sortable {
6 | cursor: pointer;
7 | }
8 |
9 | .relative {
10 | position: relative;
11 | }
12 |
13 | .relative .popover {
14 | width: 200px;
15 | }
16 |
17 | .pagination-sm {
18 | margin: 0;
19 | }
20 |
21 | .global-search {
22 | margin-bottom: 20px;
23 | }
--------------------------------------------------------------------------------
/app/scripts/directives/app/nav.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').directive('appNav', function(NavData) {
4 | return {
5 | restrict: 'EA',
6 | scope: {},
7 | templateUrl: 'views/home/nav.html',
8 | link: function(scope, element, attrs) {
9 | var vm = scope.vm = {};
10 | vm.data = NavData;
11 | }
12 | }
13 | });
--------------------------------------------------------------------------------
/app/scripts/controllers/tree/basic.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.tree.basic', function ($scope, CityData) {
4 | var vm = $scope.vm = {};
5 | vm.countries = CityData;
6 | vm.select = function(country, province, city) {
7 | vm.country = country;
8 | vm.province = province;
9 | vm.city = city;
10 | };
11 | });
12 |
--------------------------------------------------------------------------------
/app/views/animation/basic.css:
--------------------------------------------------------------------------------
1 | /*给repeat中的enter和leave事件添加基础动画*/
2 | .repeat.ng-enter,
3 | .repeat.ng-leave {
4 | -webkit-transition: 0.5s linear all;
5 | transition: 0.5s linear all;
6 | }
7 |
8 | .repeat.ng-enter,
9 | .repeat.ng-leave.ng-leave-active {
10 | opacity: 0;
11 | }
12 |
13 | .repeat.ng-leave,
14 | .repeat.ng-enter.ng-enter-active {
15 | opacity: 1;
16 | }
17 |
--------------------------------------------------------------------------------
/app/scripts/controllers/select/select2.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.select.select2', function ($scope) {
4 | var vm = $scope.vm = {};
5 | vm.option1 = {
6 | allowClear:true
7 | };
8 | vm.option2 = {
9 | 'multiple': true,
10 | 'simple_tags': true,
11 | 'tags': ['tag1', 'tag2', 'tag3', 'tag4']
12 | };
13 | });
14 |
--------------------------------------------------------------------------------
/app/views/select/custom.html:
--------------------------------------------------------------------------------
1 |
9 | 您选择的是:{{vm.value}}
10 |
--------------------------------------------------------------------------------
/app/views/select/typeAhead.html:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 | 说明
9 | 这里使用的是angular-bootstrap封装的组件,它同时还支持ajax数据源和自定义条目模板功能,具体用法请参见:
10 | 官方Demo
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/scripts/controllers/thirdparty/baiduueditor.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.thirdparty.baiduueditor', function ($scope,$sce) {
4 | var vm = $scope.vm = {};
5 | $scope.editorConfig={
6 | focus:true //自动把光标放到UEditor中。测试config配置
7 | }
8 |
9 | $scope.$watch('content',function(){
10 | $scope.html = $sce.trustAsHtml($scope.content);
11 | })
12 | });
13 |
--------------------------------------------------------------------------------
/app/lib/ui-bootstrap-locale_zh-cn.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | // 虽然这些config都是用constant方式声明的,但是它们的成员仍然是可以被修改的
4 | angular.module('ngShowcaseApp').config(function(paginationConfig, pagerConfig) {
5 | paginationConfig.firstText = "首页";
6 | paginationConfig.previousText = '上页';
7 | paginationConfig.nextText = '下页';
8 | paginationConfig.lastText = '尾页';
9 |
10 | pagerConfig.previousText = "« 上页";
11 | pagerConfig.nextText = "下页 »";
12 | });
--------------------------------------------------------------------------------
/app/scripts/controllers/animation/basic.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.animation.basic', function ($scope) {
4 | var vm = $scope.vm = {};
5 |
6 | vm.items = ['item1', 'item2'];
7 | vm.itemId = 3;
8 |
9 | vm.addItem = function() {
10 | vm.items.push('item' + vm.itemId);
11 | vm.itemId++;
12 | };
13 |
14 | vm.delItem = function(index) {
15 | vm.items.splice(index, 1);
16 | };
17 | });
--------------------------------------------------------------------------------
/app/views/input/checkbox.html:
--------------------------------------------------------------------------------
1 | 传统风格
2 |
3 |
4 | {{vm.checked}}
5 |
6 |
7 |
8 | 按钮风格
9 |
11 |
12 | {{vm.checked}}
13 |
14 |
--------------------------------------------------------------------------------
/app/scripts/controllers/select/cascade.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.select.cascade', function ($scope, CityData) {
4 | var vm = $scope.vm = {};
5 | vm.countries = CityData;
6 | // 更换国家的时候清空省
7 | $scope.$watch('vm.country', function(country) {
8 | vm.province = null;
9 | });
10 | // 更换省的时候清空城市
11 | $scope.$watch('vm.province', function(province) {
12 | vm.city = null;
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/help/help.css:
--------------------------------------------------------------------------------
1 | .wrapper{width: 370px;margin: 10px auto;zoom: 1;}
2 | .tabbody{height: 360px;}
3 | .tabbody .panel{width:100%;height: 360px;position: absolute;background: #fff;}
4 | .tabbody .panel h1{font-size:26px;margin: 5px 0 0 5px;}
5 | .tabbody .panel p{font-size:12px;margin: 5px 0 0 5px;}
6 | .tabbody table{width:90%;line-height: 20px;margin: 5px 0 0 5px;;}
7 | .tabbody table thead{font-weight: bold;line-height: 25px;}
--------------------------------------------------------------------------------
/app/scripts/config/config.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').constant('config', {
4 | apiRoot: '/api/',
5 | api: function(uri) {
6 | if (uri.startsWith('/'))
7 | throw new Error("");
8 | return this.apiRoot + uri;
9 | },
10 | title: "Angular范例程序"
11 | });
12 |
13 | angular.module('ngShowcaseApp').config(function($locationProvider, hljsServiceProvider) {
14 | hljsServiceProvider.setOptions({
15 |
16 | });
17 | });
18 |
--------------------------------------------------------------------------------
/app/views/table/frozen.css:
--------------------------------------------------------------------------------
1 | .scroll-box {
2 | overflow-x: auto;
3 | position: relative;
4 | height: 300px;
5 | width: 100px;
6 | display: inline-block;
7 | }
8 |
9 | .scroll-box .h-bar {
10 | position: absolute;
11 | bottom: 0;
12 | left: 0;
13 | width: 500px;
14 | height: 1px;
15 | opacity: 0.01;
16 | }
17 |
18 | .scroll-box .v-bar {
19 | position: absolute;
20 |
21 | right: 0;
22 | top: 0;
23 | height: 500px;
24 | width: 1px;
25 | opacity: 0.01;
26 | }
27 |
--------------------------------------------------------------------------------
/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "node": true,
3 | "browser": true,
4 | "esnext": true,
5 | "bitwise": true,
6 | "camelcase": true,
7 | "curly": true,
8 | "eqeqeq": true,
9 | "immed": true,
10 | "indent": 2,
11 | "latedef": true,
12 | "newcap": true,
13 | "noarg": true,
14 | "quotmark": "single",
15 | "regexp": true,
16 | "undef": true,
17 | "unused": true,
18 | "strict": true,
19 | "trailing": true,
20 | "smarttabs": true,
21 | "globals": {
22 | "angular": false
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps developers define and maintain consistent
2 | # coding styles between different editors and IDEs
3 | # editorconfig.org
4 |
5 | root = true
6 |
7 |
8 | [*]
9 |
10 | # Change these settings to your own preference
11 | indent_style = space
12 | indent_size = 2
13 |
14 | # We recommend you to keep these unchanged
15 | end_of_line = lf
16 | charset = utf-8
17 | trim_trailing_whitespace = true
18 | insert_final_newline = true
19 |
20 | [*.md]
21 | trim_trailing_whitespace = false
22 |
--------------------------------------------------------------------------------
/app/views/home/nav.html:
--------------------------------------------------------------------------------
1 |
2 | -
3 |
{{group.label}}
4 |
11 |
12 |
--------------------------------------------------------------------------------
/app/views/stat/easypiechart.css:
--------------------------------------------------------------------------------
1 | .chart {
2 | position: relative;
3 | display: inline-block;
4 | width: 110px;
5 | height: 110px;
6 | margin-top: 50px;
7 | margin-bottom: 50px;
8 | text-align: center;
9 | }
10 |
11 | .chart canvas {
12 | position: absolute;
13 | top: 0;
14 | left: 0;
15 | }
16 |
17 | .percent {
18 | display: inline-block;
19 | line-height: 110px;
20 | z-index: 2;
21 | }
22 |
23 | .percent:after {
24 | content: '%';
25 | margin-left: 0.1em;
26 | font-size: .8em;
27 | }
28 |
--------------------------------------------------------------------------------
/app/views/animation/custom.css:
--------------------------------------------------------------------------------
1 | .title {
2 | color: #f35626;
3 | background-image: -webkit-linear-gradient(92deg, #f35626, #feab3a);
4 | -webkit-background-clip: text;
5 | -webkit-text-fill-color: transparent;
6 | margin-bottom: 20px;
7 | line-height: 50px;
8 | text-align: center;
9 | }
10 |
11 | .animate-form>.row {
12 | margin-bottom: 10px;
13 | }
14 |
15 | .animate-form span {
16 | line-height: 34px;
17 | padding-left: 15px;
18 | text-align: center;
19 | }
20 |
21 | .form-control {
22 | width: 25%;
23 | }
24 |
--------------------------------------------------------------------------------
/app/scripts/directives/app/header.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').directive('appHeader', function($rootScope, $window, config) {
4 | return {
5 | restrict: 'EA',
6 | templateUrl: 'views/home/header.html',
7 | scope: {},
8 | link: function(scope, element, attrs) {
9 | var vm = scope.vm = {};
10 | $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
11 | vm.title = $window.document.title = toState.label + ' - ' + config.title
12 | })
13 | }
14 | }
15 | });
--------------------------------------------------------------------------------
/app/scripts/controllers/input/file.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.input.file', function ($scope, $fileUploader) {
4 | var vm = $scope.vm = {};
5 | vm.uploader = $fileUploader.create({
6 | scope: $scope,
7 | url: '/api/upload',
8 | autoUpload: true, // 自动开始上传
9 | formData: [ // 和文件内容同时上传的form参数
10 | { key: 'value' }
11 | ],
12 | filters: [ // 过滤器,可以对每个文件进行处理
13 | function (item) {
14 | console.info('filter1', item);
15 | return true;
16 | }
17 | ]
18 | });
19 | });
20 |
--------------------------------------------------------------------------------
/app/scripts/directives/app/brief.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').directive('appBrief', function($rootScope) {
4 | return {
5 | restrict: 'EA',
6 | templateUrl: 'views/home/brief.html',
7 | scope: {},
8 | link: function(scope, element, attrs) {
9 | var vm = scope.vm = {};
10 | $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
11 | vm.title = toState.label;
12 | vm.description = toState.description;
13 | vm.progress = toState.progress || 0;
14 | })
15 | }
16 | }
17 | });
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/highcharts/modules/heatmap.js:
--------------------------------------------------------------------------------
1 | (function(b){var k=b.seriesTypes,l=b.each;k.heatmap=b.extendClass(k.map,{colorKey:"z",useMapGeometry:!1,pointArrayMap:["y","z"],translate:function(){var c=this,b=c.options,i=Number.MAX_VALUE,j=Number.MIN_VALUE;c.generatePoints();l(c.data,function(a){var e=a.x,f=a.y,d=a.z,g=(b.colsize||1)/2,h=(b.rowsize||1)/2;a.path=["M",e-g,f-h,"L",e+g,f-h,"L",e+g,f+h,"L",e-g,f+h,"Z"];a.shapeType="path";a.shapeArgs={d:c.translatePath(a.path)};typeof d==="number"&&(d>j?j=d:d
2 | 大字颜色
3 |
4 | 来点动画试试
5 |
6 |
7 |
8 |
9 | 双向绑定内容(纯代码)
10 |
13 |
14 |
15 | 预览
16 |
17 |
18 | 说明
19 | 这是基于百度的ueditor库封装出来的HTML编辑器,ueditor官方网站在:http://ueditor.baidu.com/
--------------------------------------------------------------------------------
/app/scripts/controllers/select/multiple.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.select.multiple', function ($scope) {
4 | var vm = $scope.vm = {};
5 | vm.cities = [
6 | {
7 | province: '北京',
8 | code: 'bj',
9 | label: '北京市'
10 | },
11 | {
12 | province: '上海',
13 | code: 'sh',
14 | label: '上海市'
15 | },
16 | {
17 | province: '广东',
18 | code: 'gz',
19 | label: '广州'
20 | },
21 | {
22 | province: '广东',
23 | code: 'sz',
24 | label: '深圳'
25 | }
26 | ];
27 | vm.selection = function() {
28 | return _.where(vm.cities, {checked: true});
29 | }
30 | });
31 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/jsp/getContent.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
2 |
3 |
4 |
9 | <%
10 | request.setCharacterEncoding("utf-8");
11 | response.setCharacterEncoding("utf-8");
12 | String content = request.getParameter("myEditor");
13 |
14 |
15 |
16 | response.getWriter().print("第1个编辑器的值");
17 | response.getWriter().print(""+content+"
");
18 |
19 | %>
--------------------------------------------------------------------------------
/app/scripts/controllers/select/basic.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.select.basic', function ($scope) {
4 | var vm = $scope.vm = {};
5 | vm.cities = [
6 | {
7 | province: '北京',
8 | code: 'bj',
9 | label: '北京市'
10 | },
11 | {
12 | province: '上海',
13 | code: 'sh',
14 | label: '上海市'
15 | },
16 | {
17 | province: '广东',
18 | code: 'gz',
19 | label: '广州'
20 | },
21 | {
22 | province: '广东',
23 | code: 'sz',
24 | label: '深圳'
25 | }
26 | ];
27 | vm.value = vm.cities[1];
28 | vm.codeValue = 'gz';
29 | vm.groupedValue = 'sz';
30 | vm.trackValue = {code: 'gz', label: '羊城'};
31 | });
32 |
--------------------------------------------------------------------------------
/app/scripts/directives/common/recursive.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | /**
4 | * 可被递归的内容,这是一个进一步简化sf-treerepeat的尝试
5 | */
6 | angular.module('scHelper').directive('scRecursion', function() {
7 | return {
8 | restrict: 'EA',
9 | scope: {
10 | value: '='
11 | },
12 | controller: function($scope) {
13 |
14 | },
15 | compile: function($element) {
16 |
17 | }
18 | }
19 | });
20 |
21 | /**
22 | * 递归展开指令,就地展开父级
23 | */
24 | angular.module('scHelper').directive('scRecursive', function() {
25 | return {
26 | restrict: 'EA',
27 | require: '^scRecursion',
28 | scope: {
29 | value: '='
30 | },
31 | link: function($scope, $element, attrs, recursion) {
32 |
33 | }
34 | }
35 | });
--------------------------------------------------------------------------------
/app/views/animation/basic.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 | {{item}}
6 |
7 |
8 |
9 |
10 |
11 |
12 | 说明
13 |
14 | -
15 | 采用了Angular官方的动画模块,本例中仅演示了最基础的两个动画,具体信息以及参数请参考
16 | 官方文档
17 | 。
18 |
19 | -
20 | 通过ng-repeat中的ng-enter和ng-leave动画钩子来触发基本的CSS Transition动画,还可使用CSS Keyframe或Javascript来实现动画。
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/scripts/directives/app/viewStatus.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | /**
4 | * 查看当前功能的作者和实现状态
5 | * 原理:
6 | * 拦截路由变化的事件,从状态参数中取作者和进度信息
7 | */
8 | angular.module('ngShowcaseApp').directive('appViewStatus', function($rootScope, $templateCache, $http, authors) {
9 | return {
10 | restrict: 'EA',
11 | scope: {},
12 | templateUrl: 'views/home/viewStatus.html',
13 | link: function(scope, element, attrs) {
14 | var vm = scope.vm = {};
15 | $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
16 | vm.authors = _.map(toState.authors, function(name) {
17 | return _.findWhere(authors, {name: name});
18 | });
19 | vm.progress = toState.progress;
20 | });
21 | }
22 | }
23 | });
24 |
--------------------------------------------------------------------------------
/app/scripts/directives/thirdparty/highcharts.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('scHelper').directive('scHighchart', function() {
4 | return {
5 | restrict: 'EA',
6 | scope: {
7 | config: '='
8 | },
9 | require: 'ngModel',
10 | link: function($scope, $element, attrs, ngModel) {
11 | // 强制指定指令所在的元素为绘制目标
12 | var config = $scope.config;
13 | if (!config.chart) {
14 | config.chart = {}
15 | }
16 | config.chart.renderTo = $element[0];
17 | $element.css('display', 'block');
18 | var chart = new Highcharts.Chart($scope.config);
19 | ngModel.$setViewValue(chart);
20 | $scope.$watch('config.xAxis', function(value) {
21 | chart.redraw();
22 | }, true);
23 | }
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/app/views/home/viewSource.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
9 | {{file.name}}
10 |
11 |
12 |
17 |
--------------------------------------------------------------------------------
/test/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "node": true,
3 | "browser": true,
4 | "esnext": true,
5 | "bitwise": true,
6 | "camelcase": true,
7 | "curly": true,
8 | "eqeqeq": true,
9 | "immed": true,
10 | "indent": 2,
11 | "latedef": true,
12 | "newcap": true,
13 | "noarg": true,
14 | "quotmark": "single",
15 | "regexp": true,
16 | "undef": true,
17 | "unused": true,
18 | "strict": true,
19 | "trailing": true,
20 | "smarttabs": true,
21 | "globals": {
22 | "after": false,
23 | "afterEach": false,
24 | "angular": false,
25 | "before": false,
26 | "beforeEach": false,
27 | "browser": false,
28 | "describe": false,
29 | "expect": false,
30 | "inject": false,
31 | "it": false,
32 | "jasmine": false,
33 | "spyOn": false
34 | }
35 | }
36 |
37 |
--------------------------------------------------------------------------------
/app/scripts/controllers/select/typeAhead.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.select.typeAhead', function ($scope) {
4 | var vm = $scope.vm = {};
5 | vm.states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Dakota', 'North Carolina', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'];
6 | });
7 |
--------------------------------------------------------------------------------
/app/views/show/panel.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 点右侧的图标折叠/展开
6 |
7 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 可折叠内容
17 |
18 |
19 |
20 | 重新显示
21 |
22 |
--------------------------------------------------------------------------------
/app/views/input/radio.html:
--------------------------------------------------------------------------------
1 | 按钮组风格
2 |
3 |
7 |
8 |
9 |
10 | 单选框风格
11 |
12 |
16 |
17 |
18 |
19 | 您选中的是:{{vm.selection}}
20 |
21 |
22 | 说明
23 | 这里使用了一个小技巧:给单选框外面的label加上btn btn-primary风格,并且隐藏掉单选框本身,从而让单选组变成了按钮组的外观,而ng-model等机制不变。
--------------------------------------------------------------------------------
/app/views/show/tab.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 | 标签1的内容
11 |
12 |
13 | 标签2的内容
14 |
15 |
16 |
17 |
18 |
19 | 说明
20 | 这里演示的是直接通过bootstrap实现的方法。
21 |
还可以通过angular-bootstrap的tabset指令实现,参见 官方Demo
23 |
--------------------------------------------------------------------------------
/app/scripts/controllers/stat/easypiechart.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.stat.easypiechart', function ($scope) {
4 | var vm = $scope.vm = {};
5 |
6 | vm.percent = 65;
7 |
8 | //常规配置
9 | vm.options = [{
10 | animate:{
11 | duration:0,
12 | enabled:false
13 | },
14 | trackColor:'#888',//线条背景色
15 | barColor:'#2C3E50',//线条颜色
16 | scaleColor:false,
17 | lineWidth:20,//线条大小
18 | lineCap:'circle'//线条形状
19 | },
20 | {barColor:'#FF530D', lineWidth:10 ,trackColor:'#888', lineCap:'round' ,scaleColor:false},
21 | {barColor:'#1F8A70', lineWidth:10, trackColor:'#888',lineCap:'round' ,scaleColor:false}
22 |
23 | ];
24 |
25 | //随机执行
26 | vm.randomMath = function(){
27 | vm.percent = parseInt(Math.random()*100);
28 | }
29 | });
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/attachment/fileTypeMaps.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by JetBrains PhpStorm.
3 | * User: taoqili
4 | * Date: 12-2-10
5 | * Time: 下午3:50
6 | * To change this template use File | Settings | File Templates.
7 | */
8 | //文件类型图标索引
9 | var fileTypeMaps = {
10 | ".rar":"icon_rar.gif",
11 | ".zip":"icon_rar.gif",
12 | ".doc":"icon_doc.gif",
13 | ".docx":"icon_doc.gif",
14 | ".pdf":"icon_pdf.gif",
15 | ".mp3":"icon_mp3.gif",
16 | ".xls":"icon_xls.gif",
17 | ".chm":"icon_chm.gif",
18 | ".ppt":"icon_ppt.gif",
19 | ".pptx":"icon_ppt.gif",
20 | ".avi":"icon_mv.gif",
21 | ".rmvb":"icon_mv.gif",
22 | ".wmv":"icon_mv.gif",
23 | ".flv":"icon_mv.gif",
24 | ".swf":"icon_mv.gif",
25 | ".rm":"icon_mv.gif",
26 | ".exe":"icon_exe.gif",
27 | ".psd":"icon_psd.gif",
28 | ".txt":"icon_txt.gif"
29 | };
--------------------------------------------------------------------------------
/app/scripts/controllers/form/basic.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp')
4 | .controller('ctrl.form.basic', function ($scope) {
5 | var vm = $scope.vm = {
6 | show_error: false,
7 | show_type: 1,
8 | user: {}
9 | };
10 |
11 | vm.submit = function (basic_form) {
12 | vm.show_error = true;
13 | basic_form.$setDirty();
14 | if(basic_form.$valid){
15 | alert("提交成功!");
16 | }
17 | };
18 |
19 | vm.change_show_type = function (form) {
20 | if (vm.show_type == 2) {
21 | vm.show_error = true;
22 | } else {
23 | vm.show_error = false;
24 | }
25 |
26 | // 重置表单
27 | vm.user = {};
28 | form.$setPristine();
29 |
30 | }
31 | });
32 |
33 |
--------------------------------------------------------------------------------
/app/scripts/controllers/show/alert.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.show.alert', function ($scope) {
4 | var vm = $scope.vm = {};
5 | //警告类型
6 | vm.types = [
7 | 'alert-success',
8 | 'alert-info',
9 | 'alert-warning',
10 | 'alert-danger'
11 | ];
12 |
13 | vm.alerts = [
14 | {type:'alert-success',msg:'操作成功,请继续下一步!'},
15 | {type:'alert-danger',msg:'提交失败,修改内容并尝试重新提交!'},
16 | ];
17 | //删除单条警告
18 | vm.closeAlert = function (index) {
19 | vm.alerts.splice(index, 1);
20 | };
21 | //添加新警告
22 | vm.addAlert = function (type, msg) {
23 | if (type === undefined || msg === undefined) {
24 | vm.alerts.push({
25 | type:'alert-warning',
26 | msg:'类型和内容不能为空.'
27 | });
28 | } else {
29 | vm.alerts.push({
30 | type:type,
31 | msg:msg
32 | });
33 | }
34 | };
35 |
36 | });
37 |
--------------------------------------------------------------------------------
/app/scripts/controllers/select/custom.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.select.custom', function ($scope) {
4 | var vm = $scope.vm = {};
5 | vm.provinces = [
6 | {
7 | label: '北京',
8 | cities: [
9 | {
10 | population: 1961.24,
11 | code: 'bj',
12 | label: '北京市'
13 | }
14 | ]
15 | },
16 | {
17 | label: '上海',
18 | cities: [
19 | {
20 | population: 2301.91,
21 | code: 'sh',
22 | label: '上海市'
23 | }
24 | ]
25 | },
26 | {
27 | label: '广东',
28 | cities: [
29 | {
30 | population: 1270.08,
31 | code: 'gz',
32 | label: '广州'
33 | },
34 | {
35 | population: 1035.79,
36 | code: 'sz',
37 | label: '深圳'
38 | }
39 | ]
40 | }
41 | ];
42 | });
43 |
--------------------------------------------------------------------------------
/app/views/show/alert.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{alert.msg}}
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | 说明
19 |
20 | - 使用bootstrap的内置样式和指令完成的警告框控件
21 | -
22 | 还可采用来自angular-bootstrap封装的指令,请参考
23 | 官方Demo
24 | 。
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/views/home/viewStatus.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | | 作者: |
4 |
5 |
6 | {{author.name}}
7 |
9 |
10 |
11 | (暂无)
12 | Github参与
13 | 或 加QQ群:200242234
14 |
15 | |
16 |
17 |
18 | | 进度: |
19 |
20 |
21 |
22 | {{vm.progress}}%
23 |
24 |
25 | |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/spechars/spechars.html:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
14 |
15 |
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/views/select/select2.html:
--------------------------------------------------------------------------------
1 |
2 |
单选下拉
3 |
4 |
9 |
10 |
{{vm.value1}}
11 |
12 |
13 |
14 |
多选输入
15 |
16 |
17 |
18 |
{{vm.value2}}
19 |
20 |
21 |
22 | 说明
23 | 这是一个第三方指令(module: ui.select2),它封装了jquery的select2插件。官方网站请点此查看。
26 |
--------------------------------------------------------------------------------
/app/views/select/cascade.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
12 |
13 |
14 |
17 |
18 |
19 | 您选择的是:{{vm.country.label}} - {{vm.province.label}} - {{vm.city.label}}
20 |
21 | 这里使用ng-if指令来达到下一级有数据才显示下一级的效果
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/views/stat/easypiechart.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
17 | 目前百分比为:{{vm.percent}}%
随机测试
18 | 说明
19 |
20 | 注意事项:使用前必须引入 easypiechart,官方暂时没有支持bower的插件安装支持 可以先用我的tag:"angular.easy-pie-chart": "2.1.5-angular"
21 |
22 | angular.module('app', ['easypiechart'])
23 |
24 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ng-showcase",
3 | "version": "0.0.0",
4 | "dependencies": {
5 | "angular": "1.2.15",
6 | "json3": "~3.2.6",
7 | "es5-shim": "~2.1.0",
8 | "jquery": "~1.11.0",
9 | "bootstrap": "~3.0.3",
10 | "angular-resource": "1.2.15",
11 | "angular-cookies": "1.2.15",
12 | "angular-animate": "1.2.15",
13 | "angular-sanitize": "1.2.15",
14 | "angular-ui-router": "~0.2.10",
15 | "underscore": "~1.6.0",
16 | "angular-bootstrap": "~0.11.0",
17 | "moment": "~2.6.0",
18 | "angular-highlightjs": "~0.2.7",
19 | "angular.easy-pie-chart": "2.1.5-angular",
20 | "angular-file-upload": "~0.5.6",
21 | "angular-ui-select2": "~0.0.5",
22 | "angular-tree-repeat": "~0.0.1",
23 | "d3": "~3.4.8",
24 | "angularjs-nvd3-directives": "~0.0.7",
25 | "highcharts-release": "~3.0.7",
26 | "animate.css":"~3.3.0"
27 | },
28 | "devDependencies": {
29 | "angular-mocks": "1.2.15",
30 | "angular-scenario": "1.2.15"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/table/edittip.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 表格删除提示
5 |
6 |
17 |
18 |
19 |
27 |
32 |
33 |
--------------------------------------------------------------------------------
/app/scripts/controllers/table/basic.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.table.basic', function ($scope) {
4 | var vm = $scope.vm = {};
5 | vm.items = [];
6 | vm.checkAll = function(checked) {
7 | angular.forEach(vm.items, function(item) {
8 | item.$checked = checked;
9 | });
10 | };
11 | vm.selection = function() {
12 | return _.where(vm.items, {$checked: true});
13 | };
14 | // 供页面中使用的函数
15 | vm.age = function(birthday) {
16 | return moment().diff(birthday, 'years');
17 | };
18 | // 生成演示数据
19 | var MAX_NUM = 10;
20 | function rand(min, max) {
21 | return min + Math.round(Math.random() * (max-min));
22 | }
23 | for (var i = 0; i < MAX_NUM; ++i) {
24 | var id = rand(0, MAX_NUM);
25 | vm.items.push({
26 | id: i + 1,
27 | name: 'Name' + id, // 字符串类型
28 | followers: rand(0, 100 * 1000 * 1000), // 数字类型
29 | birthday: moment().subtract('day', rand(365, 365 * 50)).toDate(), // 日期类型
30 | income: rand(1000, 100000) // 金额类型
31 | });
32 | }
33 | });
34 |
--------------------------------------------------------------------------------
/app/scripts/config/authors.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | // 作者列表
4 | angular.module('ngShowcaseApp').constant('authors', [
5 | {
6 | name: 'ngShowcase',
7 | github: 'https://github.com/angular-cn/ng-showcase'
8 | },
9 | {
10 | name: '雪狼',
11 | email: 'asnowwolf@gmail.com',
12 | github: 'https://github.com/asnowwolf'
13 | },
14 | {
15 | name: 'zxsoft',
16 | qq: '21557523',
17 | email: 'zxsoft@gmail.com',
18 | github: 'https://github.com/zxsoft'
19 | },
20 | {
21 | name: 'Ken',
22 | github: 'https://github.com/ckken'
23 | },
24 | {
25 | name: 'playing',
26 | email: 'bestplayingcn@gmail.com',
27 | github: 'https://github.com/playing'
28 | },
29 | {
30 | name: 'why520crazy',
31 | email: 'why520crazy@163.com',
32 | github: 'https://github.com/why520crazy'
33 | },
34 | {
35 | name:'Leonardo',
36 | email:'wang861622836@163.com',
37 | github:'https://github.com/wleonardo'
38 | }
39 | ]);
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/scripts/controllers/tree/uiTree.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.tree.uiTree', function ($scope) {
4 | var vm = $scope.vm = {};
5 | $scope.treeData = {
6 | name: "Root",
7 | children: [
8 | {
9 | id: 1,
10 | name: "First Child",
11 | children: [
12 | {
13 | id: 11,
14 | name: "First Grandchild"
15 | },
16 | {
17 | id: 12,
18 | name: "Second Grandchild"
19 | }
20 | ]
21 | },
22 | {
23 | id: 2,
24 | name: "Second Child"
25 | }
26 | ]
27 | };
28 | $scope.drop = function (targetNode, sourceNode, sourceParentNode) {
29 | var children = sourceParentNode.children;
30 | for (var i = 0; i < children.length; i++) {
31 | if (children[i] == sourceNode) {
32 | children.splice(i, 1);
33 | if (!targetNode.children) {
34 | targetNode.children = [];
35 | }
36 | targetNode.children.push(sourceNode);
37 | break;
38 | }
39 | }
40 | };
41 | });
42 |
--------------------------------------------------------------------------------
/app/scripts/directives/common/resize.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | /**
4 | * 取所属元素的大小
5 | */
6 | angular.module('scHelper').directive('scResize', function($parse, $interval) {
7 | return {
8 | restrict: 'A',
9 | compile: function($element, attr) {
10 | var fn = $parse(attr['scResize']);
11 | return function(scope, element, attr) {
12 | var lastWidth = -1;
13 | var lastHeight = -1;
14 | // 定时检测宽高,如果变化了,就触发回调。这里不用$interval,是因为不想在检测时触发$apply,而应该在有变化时才触发
15 | // 不用担心定时监测算法的效率问题,取宽高的函数运行很快,在chrome中测试的结果是1毫秒内可以执行10次
16 | var id = setInterval(function() {
17 | var width = element.width();
18 | var height = element.height();
19 | if (width !== lastWidth || height !== lastHeight) {
20 | lastWidth = width;
21 | lastHeight = height;
22 | scope.$apply(function() {
23 | fn(scope, {width: width, height: height})
24 | });
25 | }
26 | }, 300);
27 | scope.$on('destroy', function() {
28 | clearInterval(id);
29 | });
30 | };
31 | }
32 | }
33 | });
34 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/music/music.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 插入音乐
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 |
21 |
22 |
31 |
32 |
--------------------------------------------------------------------------------
/app/scripts/controllers/input/calendar.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.input.calendar', function ($scope) {
4 | var vm = $scope.vm = {};
5 |
6 | //初始化日期
7 | vm.today = function() {
8 | vm.calendar = new Date();
9 | };
10 | vm.today();
11 |
12 | //清除当前日期
13 | vm.clear = function() {
14 | vm.calendar = null;
15 | };
16 |
17 |
18 | // 不允许选择周末
19 | vm.disabled = function(date, mode) {
20 | return (mode === 'day' && (date.getDay() === 0 || date.getDay() === 6));
21 | };
22 |
23 | //最小日期开关
24 | vm.toggleMin = function() {
25 | vm.minDate = vm.minDate ? null : new Date();
26 | };
27 | vm.toggleMin();
28 |
29 | //弹出式日历触发函数
30 | vm.open = function($event) {
31 | $event.preventDefault();
32 | $event.stopPropagation();
33 |
34 | vm.opened = true;
35 | };
36 |
37 | //自定义选项
38 | vm.dateOptions = {
39 | formatYear: 'yy',
40 | startingDay: 1,
41 | formatDayTitle: 'yyyy MMMM'
42 | };
43 |
44 | //输出格式控制,来源:官方date filter
45 | vm.formats = ['yyyy-MMMM-dd', 'yyyy/MM/dd', 'yyyy.MM.dd', 'shortDate'];
46 | vm.format = vm.formats[1];
47 | });
--------------------------------------------------------------------------------
/app/scripts/services/Zoom.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('scHelper').factory('Zoom', function(Rect) {
4 | function Zoom() {
5 | var active = this.active = new Rect();
6 | var activeView = this.activeView = new Rect();
7 | var passive = this.passive = new Rect();
8 | var passiveView = this.passiveView = new Rect();
9 | // 根据三者的相对尺寸,把active中的坐标映射到passive中的坐标
10 | var update = this.update = function() {
11 | var ratioX = passive.width / active.width;
12 | var ratioY = passive.height / active.height;
13 | passive.moveTo(-activeView.x * ratioX, -activeView.y * ratioY);
14 | };
15 | this.resize = function() {
16 | activeView.limitTo({left: 0, top: 0, right: active.width, bottom: active.height});
17 | var ratioX = passive.width / active.width;
18 | var ratioY = passive.height / active.height;
19 | activeView.resize(passiveView.width / ratioX, passiveView.height / ratioY);
20 | update();
21 | };
22 | passiveView.onResize = active.onResize = passive.onResize = this.resize;
23 | activeView.onResize = activeView.onMove = this.update;
24 | }
25 | return Zoom;
26 | });
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/template.css:
--------------------------------------------------------------------------------
1 | .wrap{ padding: 5px;font-size: 14px;}
2 | .left{width:425px;float: left;}
3 | .right{width:160px;border: 1px solid #ccc;float: right;padding: 5px;margin-right: 5px;}
4 | .right .pre{height: 332px;overflow-y: auto;}
5 | .right .preitem{border: white 1px solid;margin: 5px 0;padding: 2px 0;}
6 | .right .preitem:hover{background-color: lemonChiffon;cursor: pointer;border: #ccc 1px solid;}
7 | .right .preitem img{display: block;margin: 0 auto;width:100px;}
8 | .clear{clear: both;}
9 | .top{height:26px;line-height: 26px;padding: 5px;}
10 | .bottom{height:320px;width:100%;margin: 0 auto;}
11 | .transparent{ background: url("images/bg.gif") repeat;}
12 | .bottom table tr td{border:1px dashed #ccc;}
13 | #colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;}
14 | .border_style1{padding:2px;border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;}
15 | p{margin: 5px 0}
16 | table{clear:both;margin-bottom:10px;border-collapse:collapse;word-break:break-all;}
17 | li{clear:both}
18 | ol{padding-left:40px; }
--------------------------------------------------------------------------------
/app/scripts/directives/thirdparty/baiduueditor.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by xuanzhang on 14-5-12.
3 | */
4 | angular.module('scHelper').directive('ueditor', function () {
5 | return {
6 | restrict: 'AE',
7 | transclude: true,
8 | replace: true,
9 | template: '',
10 | require: '?ngModel',
11 | scope: {
12 | config: '='
13 | },
14 | link: function (scope, element, attrs, ngModel) {
15 | var editor = new UE.ui.Editor(scope.config || {});
16 | editor.render(element[0]);
17 |
18 | if (ngModel) {
19 | //Model数据更新时,更新百度UEditor
20 | ngModel.$render = function () {
21 | try {
22 | editor.setContent(ngModel.$viewValue);
23 | } catch (e) {
24 |
25 | }
26 | };
27 |
28 | //百度UEditor数据更新时,更新Model
29 | editor.addListener('contentChange', function () {
30 | setTimeout(function () {
31 | scope.$apply(function () {
32 | ngModel.$setViewValue(editor.getContent());
33 | })
34 | }, 0);
35 | })
36 | }
37 | }
38 | }
39 | });
--------------------------------------------------------------------------------
/app/views/show/progress.html:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 | 选项
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
26 |
--------------------------------------------------------------------------------
/app/views/home/about.html:
--------------------------------------------------------------------------------
1 | 这个项目由多人合作开发,大致分工如下:
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | | 职责 |
11 | 人员 |
12 | 备注 |
13 |
14 |
15 |
16 |
17 | | 项目管理 |
18 | 雪狼 |
19 | 发起、协调、杂务 |
20 |
21 |
22 | | 网站/CI/运维 |
23 | why520crazy |
24 | 官方www.ngnice.com的主要维护人员 |
25 |
26 |
27 | | 程序员 |
28 | 雪狼, Ken, zxsoft, why520crazy, playing,天猪,Leonardo |
29 | 只列出有提交的部分,随时增补 |
30 |
31 |
32 | | 顾问 |
33 | 破狼 |
34 | 参与但尚无提交的程序员,或时间有限只做peer review的人员 |
35 |
36 |
37 | | 测试 |
38 | playing, jacobdong, 天猪 |
39 | 请到github中提issue,确认bug后即增补在此 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/app/views/tree/basic.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
7 |
8 |
![]()
9 | {{country.label}}
10 |
11 |
24 |
25 |
26 |
27 | 国家:
![]()
{{vm.country.label}} 省份:{{vm.province.label}}
28 | 城市:{{vm.city.label}}
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/background/background.css:
--------------------------------------------------------------------------------
1 | .wrapper{ width: 424px;margin: 10px auto; zoom:1;position: relative}
2 | .tabbody{height:225px;}
3 | .tabbody .panel { position: absolute;width:100%; height:100%;background: #fff; display: none;}
4 | .tabbody .focus { display: block;}
5 |
6 | body{font-size: 12px;color: #888;overflow: hidden;}
7 | input,label{vertical-align:middle}
8 | .clear{clear: both;}
9 | .pl{padding-left: 18px;padding-left: 23px\9;}
10 |
11 | #imageList {width: 420px;height: 215px;margin-top: 10px;overflow: hidden;overflow-y: auto;}
12 | #imageList div {float: left;width: 100px;height: 95px;margin: 5px 10px;}
13 | #imageList img {cursor: pointer;border: 2px solid white;}
14 |
15 | .bgarea{margin: 10px;padding: 5px;height: 84%;border: 1px solid #A8A297;}
16 | .content div{margin: 10px 0 10px 5px;}
17 | .content .iptradio{margin: 0px 5px 5px 0px;}
18 | .txt{width:280px;}
19 |
20 | .wrapcolor{height: 19px;}
21 | div.color{float: left;margin: 0;}
22 | #colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;margin: 0;float: left;}
23 | div.alignment,#custom{margin-left: 23px;margin-left: 28px\9;}
24 | #custom input{height: 15px;min-height: 15px;width:20px;}
25 | #repeatType{width:100px;}
--------------------------------------------------------------------------------
/app/scripts/config/city-data.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').constant('CityData', [
4 | {
5 | label: '中国',
6 | flag: 'cn.png',
7 | provinces: [
8 | {
9 | label: '北京',
10 | cities: [
11 | {
12 | label: '朝阳区'
13 | },
14 | {
15 | label: '宣武区'
16 | },
17 | {
18 | label: '海淀区'
19 | }
20 | ]
21 | },
22 | {
23 | label: '河北',
24 | cities: [
25 | {
26 | label: '石家庄'
27 | },
28 | {
29 | label: '承德'
30 | },
31 | {
32 | label: '唐山'
33 | }
34 | ]
35 | }
36 | ]
37 | },
38 | {
39 | label: '美国',
40 | flag: 'us.png',
41 | provinces: [
42 | {
43 | label: '纽约',
44 | cities: [
45 | {
46 | label: '曼哈顿区'
47 | },
48 | {
49 | label: '皇后区'
50 | }
51 | ]
52 | },
53 | {
54 | label: '德克萨斯州',
55 | cities: [
56 | {
57 | label: '休斯顿'
58 | },
59 | {
60 | label: '达拉斯'
61 | }
62 | ]
63 | },
64 | {
65 | label: '加利福尼亚州'
66 | }
67 | ]
68 | }
69 | ]);
--------------------------------------------------------------------------------
/app/views/home/home.html:
--------------------------------------------------------------------------------
1 | 这是一个基于angular的界面元素范例程序,基于bootstrap 3框架,优先使用内置指令来完成。 其目标是做一个类似smartclient等控件包的showcase程序,展示angular的能力,同时作为精简的备查资料。
2 |
3 | 如果喜欢本项目,请点:
4 |
6 |
8 |
9 | 一些说明(随时增补)
10 |
11 | -
12 | 我们的官方repo在这里。欢迎有一定水平和空闲时间的程序员报名参与开发,同时,欢迎提issue,如果issue被采纳,您将被列入贡献者名单。
13 |
14 | -
15 | 为了便于理解和拷贝,这里没有严格遵循“view中避免写逻辑”的原则,所以会发现有诸如item.$checked =
16 | !item.$checked之类的代码,这种风格在showcase项目中有其价值,但是在实际应用中建议改写为vm.toggle(item)的形式,参见 TreeData范例 。
18 |
19 | -
20 | 本程序深度依赖bootstrap来实现界面,如果您对bootstrap不熟,请参见 官方网站 或
21 | 中文资料站。
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/scripts/router.js:
--------------------------------------------------------------------------------
1 | angular.module('ngShowcaseApp').config(function($stateProvider, $urlRouterProvider, NavData) {
2 | $urlRouterProvider.when('', '/home/home');
3 | $urlRouterProvider.when('/', '/home/home');
4 | $urlRouterProvider.otherwise('/notFound');
5 | $stateProvider.state('notFound', {
6 | url: '/notFound',
7 | controller: 'ctrl.notFound',
8 | templateUrl: 'views/home/notFound.html'
9 | });
10 | var states = {};
11 | // 把多级state弄成单级的,并自动补充父级路由,方便后续处理
12 | _.each(NavData, function(group) {
13 | _.each(group.items, function(item) {
14 | // 处理多级state,自动添加各个父级state
15 | var paths = item.state.split(/\./g);
16 | var currentPath = '';
17 | _.each(paths, function(path) {
18 | currentPath += path;
19 | states[currentPath] = item;
20 | currentPath += '.'
21 | });
22 | });
23 | });
24 | // 遵循约定优于配置的原则自动批量注册路由
25 | _.each(states, function(item, state) {
26 | var path = state.replace(/\./g, '/');
27 | var lastState = state.match(/(\w+)$/)[0];
28 | $stateProvider.state(state, {
29 | url: '/' + lastState,
30 | controller: 'ctrl.' + state,
31 | templateUrl: 'views/' + path + '.html',
32 | label: item.label,
33 | files: item.files,
34 | description: item.description,
35 | authors: item.authors,
36 | progress: item.progress
37 | });
38 | });
39 | });
40 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/preview/preview.html:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
40 |
--------------------------------------------------------------------------------
/app/views/select/multiple.html:
--------------------------------------------------------------------------------
1 |
2 |
37 |
38 | 选择结果:
39 |
40 | {{select}}
41 |
42 |
43 |
--------------------------------------------------------------------------------
/app/views/utils/modal.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
{{vm.modal.msg}}
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | 说明
30 |
31 | - 使用bootstrap的内置样式和指令完成的模态框控件。
32 | -
33 | 还可采用来自angular-bootstrap封装的指令,请参考
34 | 官方Demo
35 | 。
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/jsp/scrawlUp.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" contentType="text/html; charset=utf-8"
2 | pageEncoding="utf-8"%>
3 | <%@ page import="sun.misc.BASE64Decoder" %>
4 | <%@ page import="java.io.BufferedReader"%>
5 | <%@ page import="java.io.IOException"%>
6 | <%@ page import="java.io.InputStream"%>
7 | <%@ page import="java.io.InputStreamReader"%>
8 | <%@ page import="java.io.OutputStream"%>
9 | <%@ page import="java.io.File"%>
10 | <%@ page import="java.io.FileOutputStream"%>
11 | <%@ page import="java.util.Date"%>
12 | <%@ page import="ueditor.Uploader" %>
13 |
14 | <%
15 | request.setCharacterEncoding("utf-8");
16 | response.setCharacterEncoding("utf-8");
17 |
18 | String param = request.getParameter("action");
19 | Uploader up = new Uploader(request);
20 | String path = "upload";
21 | up.setSavePath(path);
22 | String[] fileType = {".gif" , ".png" , ".jpg" , ".jpeg" , ".bmp"};
23 | up.setAllowFiles(fileType);
24 | up.setMaxSize(10000); //单位KB
25 |
26 | if(param!=null && param.equals("tmpImg")){
27 | up.upload();
28 | out.print("");
29 | }else{
30 | up.uploadBase64("content");
31 | response.getWriter().print("{'url':'" + up.getUrl()+"',state:'"+up.getState()+"'}");
32 | }
33 |
34 | %>
35 |
--------------------------------------------------------------------------------
/app/views/home/header.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/highcharts/modules/heatmap.src.js:
--------------------------------------------------------------------------------
1 | (function (Highcharts) {
2 | var seriesTypes = Highcharts.seriesTypes,
3 | each = Highcharts.each;
4 |
5 | seriesTypes.heatmap = Highcharts.extendClass(seriesTypes.map, {
6 | colorKey: 'z',
7 | useMapGeometry: false,
8 | pointArrayMap: ['y', 'z'],
9 | translate: function () {
10 | var series = this,
11 | options = series.options,
12 | dataMin = Number.MAX_VALUE,
13 | dataMax = Number.MIN_VALUE;
14 |
15 | series.generatePoints();
16 |
17 | each(series.data, function (point) {
18 | var x = point.x,
19 | y = point.y,
20 | value = point.z,
21 | xPad = (options.colsize || 1) / 2,
22 | yPad = (options.rowsize || 1) / 2;
23 |
24 | point.path = [
25 | 'M', x - xPad, y - yPad,
26 | 'L', x + xPad, y - yPad,
27 | 'L', x + xPad, y + yPad,
28 | 'L', x - xPad, y + yPad,
29 | 'Z'
30 | ];
31 |
32 | point.shapeType = 'path';
33 | point.shapeArgs = {
34 | d: series.translatePath(point.path)
35 | };
36 |
37 | if (typeof value === 'number') {
38 | if (value > dataMax) {
39 | dataMax = value;
40 | } else if (value < dataMin) {
41 | dataMin = value;
42 | }
43 | }
44 | });
45 |
46 | series.translateColors(dataMin, dataMax);
47 | },
48 |
49 | getBox: function () {}
50 |
51 | });
52 |
53 | }(Highcharts));
54 |
--------------------------------------------------------------------------------
/app/views/select/basic.html:
--------------------------------------------------------------------------------
1 | 把对象作为value
2 |
6 | 您输入的是:{{vm.value}}
7 |
8 |
9 | 把code作为value
10 |
14 | 您输入的是:{{vm.codeValue}}
15 |
16 |
17 | 分组
18 |
23 | 您输入的是:{{vm.groupedValue}}
24 |
25 |
26 | track by
27 |
33 | 选择魔都
34 | 选择上海
35 | 您输入的是:{{vm.trackValue}}
36 |
37 | track by 可以让匹配的时候只比较特定的字段,而忽略其他字段,并且不做对象的引用比较
38 |
39 |
40 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/highcharts/modules/no-data-to-display.js:
--------------------------------------------------------------------------------
1 | /*
2 | Highcharts JS v3.0.6 (2013-10-04)
3 | Plugin for displaying a message when there is no data visible in chart.
4 |
5 | (c) 2010-2013 Highsoft AS
6 | Author: Øystein Moseng
7 |
8 | License: www.highcharts.com/license
9 | */
10 | (function(c){function f(){return!!this.points.length}function g(){this.hasData()?this.hideNoData():this.showNoData()}var d=c.seriesTypes,e=c.Chart.prototype,h=c.getOptions(),i=c.extend;i(h.lang,{noData:"No data to display"});h.noData={position:{x:0,y:0,align:"center",verticalAlign:"middle"},attr:{},style:{fontWeight:"bold",fontSize:"12px",color:"#60606a"}};d.pie.prototype.hasData=f;if(d.gauge)d.gauge.prototype.hasData=f;if(d.waterfall)d.waterfall.prototype.hasData=f;c.Series.prototype.hasData=function(){return this.dataMax!==
11 | void 0&&this.dataMin!==void 0};e.showNoData=function(a){var b=this.options,a=a||b.lang.noData,b=b.noData;if(!this.noDataLabel)this.noDataLabel=this.renderer.label(a,0,0,null,null,null,null,null,"no-data").attr(b.attr).css(b.style).add(),this.noDataLabel.align(i(this.noDataLabel.getBBox(),b.position),!1,"plotBox")};e.hideNoData=function(){if(this.noDataLabel)this.noDataLabel=this.noDataLabel.destroy()};e.hasData=function(){for(var a=this.series,b=a.length;b--;)if(a[b].hasData()&&!a[b].options.isInternal)return!0;
12 | return!1};e.callbacks.push(function(a){c.addEvent(a,"load",g);c.addEvent(a,"redraw",g)})})(Highcharts);
13 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ngshowcase",
3 | "version": "0.0.0",
4 | "dependencies": {
5 | "nvd3": "~1.1.15"
6 | },
7 | "devDependencies": {
8 | "connect-livereload": "^0.5.3",
9 | "grunt": "^0.4.5",
10 | "grunt-autoprefixer": "~0.4.0",
11 | "grunt-bower-install": "~1.0.0",
12 | "grunt-concurrent": "~0.5.0",
13 | "grunt-connect-proxy": "~0.1.10",
14 | "grunt-contrib-clean": "~0.5.0",
15 | "grunt-contrib-concat": "~0.3.0",
16 | "grunt-contrib-connect": "~0.5.0",
17 | "grunt-contrib-copy": "~0.4.1",
18 | "grunt-contrib-cssmin": "~0.7.0",
19 | "grunt-contrib-htmlmin": "~0.1.3",
20 | "grunt-contrib-imagemin": "~0.3.0",
21 | "grunt-contrib-jshint": "~0.7.1",
22 | "grunt-contrib-uglify": "~0.2.0",
23 | "grunt-contrib-watch": "~0.5.2",
24 | "grunt-google-cdn": "~0.2.0",
25 | "grunt-karma": "~0.8.3",
26 | "grunt-newer": "~0.6.1",
27 | "grunt-ngmin": "~0.0.2",
28 | "grunt-rev": "~0.1.0",
29 | "grunt-svgmin": "~0.2.0",
30 | "grunt-usemin": "~2.0.0",
31 | "jshint-stylish": "~0.1.3",
32 | "karma": "~0.12.14",
33 | "karma-jasmine": "~0.1.5",
34 | "karma-ng-html2js-preprocessor": "~0.1.0",
35 | "karma-ng-scenario": "~0.1.0",
36 | "karma-phantomjs-launcher": "~0.1.4",
37 | "load-grunt-tasks": "~0.4.0",
38 | "time-grunt": "~0.2.1"
39 | },
40 | "engines": {
41 | "node": ">=0.10.0"
42 | },
43 | "scripts": {
44 | "test": "grunt test"
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/app/scripts/directives/common/masked.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | /**
4 | * 掩码输入框,仿jquery.inputmask
5 | */
6 | angular.module('scHelper').directive('scMasked', function() {
7 | function parseByMask(value, mask) {
8 | return value;//.toUpperCase();
9 | }
10 | function formatByMask(value, mask) {
11 | return value.replace(mask, function(v1, v2) {
12 | debugger
13 | });
14 | }
15 | return {
16 | restrict: 'A',
17 | scope: {
18 | mask: '=scMasked'
19 | },
20 | require: 'ngModel',
21 | link: function($scope, $element, attrs, ngModel) {
22 | var mask = attrs['scMasked'];
23 | var regexp = mask.replace(/9/g, '(\\d)');
24 | ngModel.$viewValue = regexp;
25 | // 不管怎么显示,总是净化之后发给ng-model
26 | ngModel.$parsers.push(function(value) {
27 | if (angular.isUndefined(value))
28 | return value;
29 | return parseByMask(value, regexp);
30 | });
31 | ngModel.$formatters.push(function(value) {
32 | return formatByMask(value, regexp);
33 | });
34 | // ngModel变化的时候立刻更新value属性
35 | ngModel.$viewChangeListeners.push(function() {
36 | var input = $element[0];
37 | // 保存光标位置
38 | var start = input.selectionStart;
39 | var end = input.selectionEnd;
40 | $element.val(formatByMask(ngModel.$viewValue, regexp));
41 | // 恢复光标位置
42 | input.selectionStart = start;
43 | input.selectionEnd = end;
44 | });
45 | }
46 | }
47 | });
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Angular范例集
2 | ============
3 | 这是一个基于angular的界面元素范例程序,基于bootstrap 3框架,优先使用内置指令来完成。
4 | 其目标是做一个类似smartclient等控件包的showcase程序,展示angular的能力,同时作为精简的备查字典。
5 |
6 | 当前进展:刚刚开始。
7 |
8 | 在线预览:http://www.ngnice.com/showcase/
9 |
10 | 注意:
11 |
12 | 1. clone下去之后,请先确保有node环境,然后执行npm install和bower install命令,以便对grunt环境进行初始化。
13 | 之后就可以用grunt serve来启动服务器进行查看和调试了。
14 | 2. 如果使用windows系统,请务必在提交更改前用下列命令配置git: git config core.autocrlf input 我们统一使用unix的行结尾风格提交,以免出现不必要的修改。
15 | 3. 建议修改前先调用git pull --rebase拉取一下远端代码,以免出现不必要的冲突。
16 | 4. 请把所有文件中的缩进都设置为2空格,以免出现不必要的修改。
17 | 5. 如果要参与开发,请先看看本项目的wiki,我会把一些开发中的注意事项随时放在里面。
18 |
19 | 总体原则
20 | ------------
21 |
22 | 1. 参照smartclient的demo实现
23 | 2. 优先使用内置指令实现,除非能证明有显著优势,否则不要封装自定义指令
24 | 3. 候选方案顺序 内置指令 > filter > service > 自定义指令
25 | 4. 任何会修改数据的操作均通过ng-model完成
26 | 5. css框架统一使用bootstrap 3
27 | 6. 复杂的控件尽量用封装适当的jquery控件或bootstrap控件的方式进行,但是不要依赖jquery-ui
28 | 7. 如果有可以实现此功能的成熟的第三方指令,可以直接使用它并链接到它的开发页和demo页。注意,这里使用的第三方指令必须是足够成熟、友好的。
29 |
30 | 组织方式
31 | ------------
32 |
33 | 1. 通过issue进行沟通
34 | 2. 可以通过把issue assign给自己的方式主动认领任务
35 | 3. 在对程序有一定程度理解的基础上,可以自行调整菜单甚至代码结构。如果觉得不是很有把握,请在群里提出讨论。
36 | 4. 定期review,对功能规划进行审议,可能会进行菜单调整或功能合并。但不会因为把某人实现的功能移出菜单而将其移出贡献列表。
37 |
38 | 分工
39 | ------------
40 |
41 | 1. 构建基于github的CI环境,并支持自动发布
42 | 2. 开发一个界面框架,能让访客体验操作并现场查看源码,仿smartclient的demo
43 | 3. 所有人均可报名参加用户化测试
44 | 4. 产品组负责把关filter/directive等界面元素的描述性,并纠正命名不当等问题
45 | 5. 多语言组负责开发多语言界面
46 |
47 | 目标
48 | ------------
49 |
50 | 1. 基本输入指令
51 | 2. grid
52 | 3. tree
53 | 4. 表单及校验
54 | 5. 对话框
55 | 6. 综合demo
56 |
57 | 其他目标可在开发过程中增补
58 |
--------------------------------------------------------------------------------
/app/scripts/controllers/stat/chart.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.stat.chart', function ($scope) {
4 | var vm = $scope.vm = {};
5 | vm.chart = undefined;
6 | vm.setTitle = function(title) {
7 | vm.chart.xAxis[0].setTitle({text: title});
8 | };
9 | vm.config = {
10 | chart: {
11 | plotBackgroundColor: 'rgba(255, 255, 255, .9)',
12 | plotShadow: true,
13 | height: 400,
14 | // plotBorderWidth: 1,
15 | type: 'line'
16 | },
17 | title: {
18 | text: '月平均气温'
19 | },
20 | subtitle: {
21 | text: '来源: WorldClimate.com'
22 | },
23 | xAxis: {
24 | title: {
25 | text: '月份'
26 | },
27 | categories: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二']
28 | },
29 | yAxis: {
30 | title: {
31 | text: '温度(°C)'
32 | }
33 | },
34 | tooltip: {
35 | enabled: true,
36 | formatter: function() {
37 | return ''+ this.series.name +'
'+this.x +': '+ this.y +'°C';
38 | }
39 | },
40 | plotOptions: {
41 | line: {
42 | dataLabels: {
43 | enabled: true
44 | },
45 | enableMouseTracking: true
46 | }
47 | },
48 | series: [{
49 | name: '东京',
50 | data: [7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
51 | }, {
52 | name: '伦敦',
53 | data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
54 | }]
55 | };
56 | });
57 |
--------------------------------------------------------------------------------
/app/views/animation/choiceitems.json:
--------------------------------------------------------------------------------
1 | {"Attention Seekers":["bounce","flash","pulse","rubberBand","shake","swing","tada","wobble","jello"],
2 | "Bouncing Entrances":["bounceIn","bounceInDown","bounceInLeft","bounceInRight","bounceInUp"],
3 | "Bouncing Exits":["bounceOut","bounceOutDown","bounceOutLeft","bounceOutRight","bounceOutUp"],
4 | "Fading Entrances":["fadeIn","fadeInDown","fadeInDownBig","fadeInLeft","fadeInLeftBig","fadeInRight","fadeInRightBig","fadeInUp","fadeInUpBig"],
5 | "Fading Exits":["fadeOut","fadeOutDown","fadeOutDownBig","fadeOutLeft","fadeOutLeftBig","fadeOutRight","fadeOutRightBig","fadeOutUp","fadeOutUpBig"],
6 | "Flippers":["flip","flipInX","flipInY","fadeOutLeft","flipOutX","flipOutY"],
7 | "Lightspeed":["lightSpeedIn","lightSpeedOut"],
8 | "Rotating Entrances":["rotateIn","rotateInDownLeft","rotateInDownRight","rotateInUpLeft","rotateInUpRight"],
9 | "Rotating Exits":["rotateOut","rotateOutDownLeft","rotateOutDownRight","rotateOutUpLeft","rotateOutUpRight"],
10 | "Sliding Entrances":["slideInUp","slideInDown","slideInLeft","slideInRight"],
11 | "Sliding Exits":["slideOutUp","slideOutDown","slideOutLeft","slideOutRight"],
12 | "Zoom Entrances":["zoomIn","zoomInDown","zoomInLeft","zoomInRight","zoomInUp"],
13 | "Zoom Exits":["zoomOut","zoomOutDown","zoomOutLeft","zoomOutRight","zoomOutUp"],
14 | "Specials":["hinge","rollIn","rollOut"]}
15 |
16 | [{
17 | "group": "Attention Seekers",
18 | "value":"bounce",
19 | "value":"label"
20 | },
21 | {
22 | "group": "Attention Seekers",
23 | "value": "flash"
24 | "label": "flash"
25 | }]
26 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/jsp/getMovie.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" pageEncoding="utf-8"%>
2 | <%@ page import="java.io.BufferedReader"%>
3 | <%@ page import="java.io.IOException"%>
4 | <%@ page import="java.io.InputStream"%>
5 | <%@ page import="java.io.InputStreamReader"%>
6 | <%@ page import="java.net.MalformedURLException"%>
7 | <%@ page import="java.net.URL"%>
8 | <%@ page import="java.net.URLEncoder"%>
9 | <%@ page import="java.net.URLConnection"%>
10 | <%
11 | request.setCharacterEncoding("utf-8");
12 | response.setCharacterEncoding("utf-8");
13 | StringBuffer readOneLineBuff = new StringBuffer();
14 | String content ="";
15 | String searchkey = request.getParameter("searchKey");
16 | String videotype = request.getParameter("videoType");
17 | try {
18 | searchkey = URLEncoder.encode(searchkey,"utf-8");
19 | URL url = new URL("http://api.tudou.com/v3/gw?method=item.search&appKey=myKey&format=json&kw="+ searchkey+"&pageNo=1&pageSize=20&channelId="+videotype+"&inDays=7&media=v&sort=s");
20 | URLConnection conn = url.openConnection();
21 | BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));
22 | String line = "";
23 | while ((line = reader.readLine()) != null) {
24 | readOneLineBuff.append(line);
25 | }
26 | content = readOneLineBuff.toString();
27 | reader.close();
28 | } catch (MalformedURLException e) {
29 | e.printStackTrace();
30 | } catch (IOException e2) {
31 | e2.printStackTrace();
32 | }
33 | response.getWriter().print(content);
34 | %>
--------------------------------------------------------------------------------
/karma-e2e.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration
2 | // http://karma-runner.github.io/0.10/config/configuration-file.html
3 |
4 | module.exports = function(config) {
5 | config.set({
6 | // base path, that will be used to resolve files and exclude
7 | basePath: '',
8 |
9 | // testing framework to use (jasmine/mocha/qunit/...)
10 | frameworks: ['ng-scenario'],
11 |
12 | // list of files / patterns to load in the browser
13 | files: [
14 | 'test/e2e/**/*.js'
15 | ],
16 |
17 | // list of files / patterns to exclude
18 | exclude: [],
19 |
20 | // web server port
21 | port: 8080,
22 |
23 | // level of logging
24 | // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
25 | logLevel: config.LOG_INFO,
26 |
27 |
28 | // enable / disable watching file and executing tests whenever any file changes
29 | autoWatch: false,
30 |
31 |
32 | // Start these browsers, currently available:
33 | // - Chrome
34 | // - ChromeCanary
35 | // - Firefox
36 | // - Opera
37 | // - Safari (only Mac)
38 | // - PhantomJS
39 | // - IE (only Windows)
40 | browsers: ['Chrome'],
41 |
42 |
43 | // Continuous Integration mode
44 | // if true, it capture browsers, run tests and exit
45 | singleRun: false
46 |
47 | // Uncomment the following lines if you are using grunt's server to run the tests
48 | // proxies: {
49 | // '/': 'http://localhost:9000/'
50 | // },
51 | // URL root prevent conflicts with the site root
52 | // urlRoot: '_karma_'
53 | });
54 | };
55 |
--------------------------------------------------------------------------------
/app/scripts/controllers/tree/treeData.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.tree.treeData', function ($scope, TreeData) {
4 | var vm = $scope.vm = {};
5 |
6 | vm.countries = [
7 | {
8 | label: '中国',
9 | flag: 'cn.png',
10 | items: [
11 | {
12 | label: '北京',
13 | items: [
14 | {
15 | label: '朝阳区'
16 | },
17 | {
18 | label: '宣武区'
19 | },
20 | {
21 | label: '海淀区'
22 | }
23 | ]
24 | },
25 | {
26 | label: '河北',
27 | items: [
28 | {
29 | label: '石家庄'
30 | },
31 | {
32 | label: '承德'
33 | },
34 | {
35 | label: '唐山'
36 | }
37 | ]
38 | }
39 | ]
40 | },
41 | {
42 | label: '美国',
43 | flag: 'us.png',
44 | items: [
45 | {
46 | label: '纽约',
47 | items: [
48 | {
49 | label: '曼哈顿区'
50 | },
51 | {
52 | label: '皇后区'
53 | }
54 | ]
55 | },
56 | {
57 | label: '德克萨斯州',
58 | items: [
59 | {
60 | label: '休斯顿'
61 | },
62 | {
63 | label: '达拉斯'
64 | }
65 | ]
66 | },
67 | {
68 | label: '加利福尼亚州'
69 | }
70 | ]
71 | }
72 | ];
73 | vm.tree = new TreeData(vm.countries);
74 | });
75 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/table/edittable.css:
--------------------------------------------------------------------------------
1 | body{
2 | overflow: hidden;
3 | width: 540px;
4 | }
5 | .wrapper {
6 | margin: 10px auto 0;
7 | font-size: 12px;
8 | overflow: hidden;
9 | width: 520px;
10 | height: 315px;
11 | }
12 |
13 | .clear {
14 | clear: both;
15 | }
16 |
17 | .wrapper .left {
18 | float: left;
19 | margin-left: 10px;;
20 | }
21 |
22 | .wrapper .right {
23 | float: right;
24 | border-left: 2px dotted #EDEDED;
25 | padding-left: 15px;
26 | }
27 |
28 | .section {
29 | margin-bottom: 15px;
30 | width: 240px;
31 | overflow: hidden;
32 | }
33 |
34 | .section h3 {
35 | font-weight: bold;
36 | padding: 5px 0;
37 | margin-bottom: 10px;
38 | border-bottom: 1px solid #EDEDED;
39 | font-size: 12px;
40 | }
41 |
42 | .section ul {
43 | list-style: none;
44 | overflow: hidden;
45 | clear: both;
46 |
47 | }
48 |
49 | .section li {
50 | float: left;
51 | width: 120px;;
52 | }
53 |
54 | .section .tone {
55 | width: 80px;;
56 | }
57 |
58 | .section .preview {
59 | width: 220px;
60 | }
61 |
62 | .section .preview table {
63 | text-align: center;
64 | vertical-align: middle;
65 | color: #666;
66 | }
67 |
68 | .section .preview caption {
69 | font-weight: bold;
70 | }
71 |
72 | .section .preview td {
73 | border-width: 1px;
74 | border-style: solid;
75 | height: 22px;
76 | }
77 |
78 | .section .preview th {
79 | border-style: solid;
80 | border-color: #DDD;
81 | border-width: 2px 1px 1px 1px;
82 | height: 22px;
83 | background-color: #F7F7F7;
84 | }
--------------------------------------------------------------------------------
/app/views/input/html5.html:
--------------------------------------------------------------------------------
1 | HTML5组件
2 |
3 | 这里展示的是一组基本HTML5组件,它们都能和ng-model配合工作
4 |
5 |
6 | 单行文本
7 |
8 |
9 | 您输入的是:{{vm.text}}
10 |
11 |
12 | 搜索框
13 |
14 |
15 | 您输入的是:{{vm.search}}
16 |
17 |
18 | 多行文本
19 |
20 |
21 | 您输入的是:
22 |
{{vm.textarea}}
23 |
24 |
25 |
26 | 数字
27 |
28 |
29 | 您输入的是:{{vm.number}}
30 |
31 |
32 | 链接
33 |
34 |
35 | 您输入的是:{{vm.url}}
36 |
37 |
38 | 邮件地址
39 |
40 |
41 | 您输入的是:{{vm.email}}
42 |
43 |
44 | 月份
45 |
46 |
47 | 您输入的是:{{vm.month}}
48 |
49 |
50 | 周
51 |
52 |
53 | 您输入的是:{{vm.week}}
54 |
55 |
56 | 日期
57 |
58 |
59 | 您输入的是:{{vm.date}}
60 |
61 |
62 | 时间
63 |
64 |
65 | 您输入的是:{{vm.time}}
66 |
67 |
68 | 颜色
69 |
70 |
71 | 您输入的是:{{vm.color}}
72 |
73 |
74 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/jsp/fileUp.jsp:
--------------------------------------------------------------------------------
1 | <%@page import="java.io.File"%>
2 | <%@page import="java.util.Properties"%>
3 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
4 | <%@ page import="ueditor.Uploader" %>
5 | <%@ page import="java.io.FileInputStream" %>
6 |
7 |
8 | <%
9 | request.setCharacterEncoding( Uploader.ENCODEING );
10 | response.setCharacterEncoding( Uploader.ENCODEING );
11 |
12 | String currentPath = request.getRequestURI().replace( request.getContextPath(), "" );
13 |
14 | File currentFile = new File( currentPath );
15 |
16 | currentPath = currentFile.getParent() + File.separator;
17 |
18 | //加载配置文件
19 | String propertiesPath = request.getSession().getServletContext().getRealPath( currentPath + "config.properties" );
20 | Properties properties = new Properties();
21 | try {
22 | properties.load( new FileInputStream( propertiesPath ) );
23 | } catch ( Exception e ) {
24 | //加载失败的处理
25 | e.printStackTrace();
26 | }
27 |
28 | Uploader up = new Uploader(request);
29 |
30 | up.setSavePath("upload"); //保存路径
31 | String[] fileType = {".rar" , ".doc" , ".docx" , ".zip" , ".pdf" , ".txt" , ".swf", ".wmv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".mov", ".wmv", ".mp4"}; //允许的文件类型
32 | up.setAllowFiles(fileType);
33 | up.setMaxSize(500 * 1024); //允许的文件最大尺寸,单位KB
34 | up.upload();
35 | response.getWriter().print("{'url':'"+up.getUrl()+"','fileType':'"+up.getType()+"','state':'"+up.getState()+"','original':'"+up.getOriginalName()+"'}");
36 |
37 | %>
38 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/charts/chart.config.js:
--------------------------------------------------------------------------------
1 | /*
2 | * 图表配置文件
3 | * */
4 |
5 |
6 | //不同类型的配置
7 | var typeConfig = [
8 | {
9 | chart: {
10 | type: 'line'
11 | },
12 | plotOptions: {
13 | line: {
14 | dataLabels: {
15 | enabled: false
16 | },
17 | enableMouseTracking: true
18 | }
19 | }
20 | }, {
21 | chart: {
22 | type: 'line'
23 | },
24 | plotOptions: {
25 | line: {
26 | dataLabels: {
27 | enabled: true
28 | },
29 | enableMouseTracking: false
30 | }
31 | }
32 | }, {
33 | chart: {
34 | type: 'area'
35 | }
36 | }, {
37 | chart: {
38 | type: 'bar'
39 | }
40 | }, {
41 | chart: {
42 | type: 'column'
43 | }
44 | }, {
45 | chart: {
46 | plotBackgroundColor: null,
47 | plotBorderWidth: null,
48 | plotShadow: false
49 | },
50 | plotOptions: {
51 | pie: {
52 | allowPointSelect: true,
53 | cursor: 'pointer',
54 | dataLabels: {
55 | enabled: true,
56 | color: '#000000',
57 | connectorColor: '#000000',
58 | formatter: function() {
59 | return ''+ this.point.name +': '+ ( Math.round( this.point.percentage*100 ) / 100 ) +' %';
60 | }
61 | }
62 | }
63 | }
64 | }
65 | ];
66 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/help/help.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created with JetBrains PhpStorm.
3 | * User: xuheng
4 | * Date: 12-9-26
5 | * Time: 下午1:06
6 | * To change this template use File | Settings | File Templates.
7 | */
8 | /**
9 | * tab点击处理事件
10 | * @param tabHeads
11 | * @param tabBodys
12 | * @param obj
13 | */
14 | function clickHandler( tabHeads,tabBodys,obj ) {
15 | //head样式更改
16 | for ( var k = 0, len = tabHeads.length; k < len; k++ ) {
17 | tabHeads[k].className = "";
18 | }
19 | obj.className = "focus";
20 | //body显隐
21 | var tabSrc = obj.getAttribute( "tabSrc" );
22 | for ( var j = 0, length = tabBodys.length; j < length; j++ ) {
23 | var body = tabBodys[j],
24 | id = body.getAttribute( "id" );
25 | body.onclick = function(){
26 | this.style.zoom = 1;
27 | };
28 | if ( id != tabSrc ) {
29 | body.style.zIndex = 1;
30 | } else {
31 | body.style.zIndex = 200;
32 | }
33 | }
34 |
35 | }
36 |
37 | /**
38 | * TAB切换
39 | * @param tabParentId tab的父节点ID或者对象本身
40 | */
41 | function switchTab( tabParentId ) {
42 | var tabElements = $G( tabParentId ).children,
43 | tabHeads = tabElements[0].children,
44 | tabBodys = tabElements[1].children;
45 |
46 | for ( var i = 0, length = tabHeads.length; i < length; i++ ) {
47 | var head = tabHeads[i];
48 | if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head );
49 | head.onclick = function () {
50 | clickHandler(tabHeads,tabBodys,this);
51 | }
52 | }
53 | }
54 | switchTab("helptab");
55 |
56 | document.getElementById('version').innerHTML = parent.UE.version
--------------------------------------------------------------------------------
/app/scripts/controllers/integrated/cart.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.integrated.cart', function ($scope) {
4 | var vm = $scope.vm = {};
5 | vm.items = [
6 | {
7 | code: '10001',
8 | label: '苹果手机',
9 | description: '苹果5S,最新款,最精致的手机',
10 | price: '5000',
11 | thumbnail: 'sj.jpg'
12 | },
13 | {
14 | code: '20001',
15 | label: '美的电磁炉',
16 | description: '美的出产的电磁炉,配合苹果手机使用效果更佳',
17 | price: '1000',
18 | thumbnail: 'dcl.jpg'
19 | }
20 | ];
21 | vm.cart = {
22 | label: '张三的购物车',
23 | lines: []
24 | };
25 | vm.addToCart = function addToCart(item) {
26 | if (!item.code)
27 | return;
28 | var line = _.findWhere(vm.cart.lines, {code: item.code});
29 | if (!line) {
30 | line = _.extend({}, item, {quantity: 1});
31 | vm.cart.lines.push(line);
32 | } else {
33 | ++line.quantity;
34 | }
35 | };
36 | vm.cartCount = function() {
37 | return _.reduce(vm.cart.lines, function(memo, line) {return memo + line.quantity}, 0);
38 | };
39 | vm.cartTotal = function() {
40 | return _.reduce(vm.cart.lines, function(memo, line) {return memo + line.price * line.quantity}, 0);
41 | };
42 | vm.incrementQuantity = function(line) {
43 | line.quantity++;
44 | };
45 | vm.decrementQuantity = function(line) {
46 | if (line.quantity <= 0)
47 | return;
48 | --line.quantity
49 | };
50 | vm.removeFromCart = function(line) {
51 | vm.cart.lines = _.reject(vm.cart.lines, function(item){ return line.code === item.code});
52 | };
53 | vm.buy = function buy(item) {
54 | if (!item.code)
55 | return;
56 | vm.cart.lines = [_.extend({}, item, {quantity: 1})];
57 | };
58 | });
59 |
--------------------------------------------------------------------------------
/app/views/table/basic.html:
--------------------------------------------------------------------------------
1 |
39 | 选中的项:
40 | ,
42 |
43 |
44 |
45 | 说明
46 | 请注意:angular的活动binding(比如$watch, {{}}表达式,ng-bind等)数量应避免超过2000个,否则在老版本ie等浏览器上会导致性能急剧下降。
47 |
48 | 解决大表数据问题的方法请参见百万行大表
49 |
--------------------------------------------------------------------------------
/app/scripts/controllers/form/customValidation.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp')
4 | .controller('ctrl.form.customValidation', ['$scope', function ($scope) {
5 | var vm = $scope.vm = {
6 | show_error: false,
7 | show_type: 1,
8 | user: {}
9 | };
10 |
11 | vm.submit = function (basic_form) {
12 | vm.show_error = true;
13 | basic_form.$setDirty();
14 | if (basic_form.$valid) {
15 | alert("提交成功!");
16 | }
17 | };
18 |
19 | vm.change_show_type = function (form) {
20 | if (vm.show_type == 2) {
21 | vm.show_error = true;
22 | } else {
23 | vm.show_error = false;
24 | }
25 |
26 | // 重置表单
27 | vm.user = {};
28 | form.$setPristine();
29 |
30 | }
31 | }])
32 | .directive("multipleEmail", [function () {
33 | return {
34 | restrict: 'A',
35 | require: "ngModel",
36 | link: function (scope, element, attr, ctrl) {
37 | if (ctrl) {
38 | var EMAILS_REGEXP = /^([a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*[;;]?)+$/i;
39 | var customValidator = function (value) {
40 | var validity = ctrl.$isEmpty(value) || EMAILS_REGEXP.test(value)
41 | ctrl.$setValidity("multipleEmail", validity);
42 | return validity ? value : undefined;
43 | };
44 | ctrl.$formatters.push(customValidator);
45 | ctrl.$parsers.push(customValidator);
46 | }
47 | }
48 | };
49 | }]);
50 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/anchor/anchor.html:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
39 |
40 |
--------------------------------------------------------------------------------
/app/views/tree/checkbox.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
8 |
9 |
10 |
11 | {{country.label}}
12 |
13 |
14 |
32 |
33 |
34 |
35 |
36 |
37 | 说明
38 | 这是一个使用controller中的逻辑来实现级联复选框的表,可以支持级联选择以及半选中(semi-checked)状态
39 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/music/music.css:
--------------------------------------------------------------------------------
1 | .wrapper{margin: 5px 10px;}
2 |
3 | .searchBar{height:30px;padding:7px 0 3px;text-align:center;}
4 | .searchBtn{font-size:13px;height:24px;}
5 |
6 | .resultBar{width:460px;margin:5px auto;border: 1px solid #CCC;border-radius: 5px;box-shadow: 2px 2px 5px #D3D6DA;overflow: hidden;}
7 |
8 | .listPanel{overflow: hidden;}
9 | .panelon{display:block;}
10 | .paneloff{display:none}
11 |
12 | .page{width:220px;margin:20px auto;overflow: hidden;}
13 | .pageon{float:right;width:24px;line-height:24px;height:24px;margin-right: 5px;background: none;border: none;color: #000;font-weight: bold;text-align:center}
14 | .pageoff{float:right;width:24px;line-height:24px;height:24px;cursor:pointer;background-color: #fff;
15 | border: 1px solid #E7ECF0;color: #2D64B3;margin-right: 5px;text-decoration: none;text-align:center;}
16 |
17 | .m-box{width:460px;}
18 | .m-m{float: left;line-height: 20px;height: 20px;}
19 | .m-h{height:24px;line-height:24px;padding-left: 46px;background-color:#FAFAFA;border-bottom: 1px solid #DAD8D8;font-weight: bold;font-size: 12px;color: #333;}
20 | .m-l{float:left;width:40px; }
21 | .m-t{float:left;width:140px;}
22 | .m-s{float:left;width:110px;}
23 | .m-z{float:left;width:100px;}
24 | .m-try-t{float: left;width: 60px;;}
25 |
26 | .m-try{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/try_music.gif') no-repeat ;}
27 | .m-trying{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/stop_music.gif') no-repeat ;}
28 |
29 | .loading{width:95px;height:7px;font-size:7px;margin:60px auto;background:url(http://static.tieba.baidu.com/tb/editor/images/loading.gif) no-repeat}
30 | .empty{width:300px;height:40px;padding:2px;margin:50px auto;line-height:40px; color:#006699;text-align:center;}
--------------------------------------------------------------------------------
/app/scripts/directives/common/position.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | /**
4 | * 设置所属元素的位置
5 | */
6 | angular.module('scHelper').directive('scPosition', function() {
7 | return {
8 | restrict: 'A',
9 | scope: {
10 | rect: '=scPosition',
11 | left: '=scLeft',
12 | top: '=scTop',
13 | right: '=scRight',
14 | bottom: '=scBottom',
15 | width: '=scWidth',
16 | height: '=scHeight'
17 | },
18 | link: function($scope, $element) {
19 | $scope.$watch('left', function(value) {
20 | if (value !== undefined)
21 | $element.css('left', value)
22 | });
23 | $scope.$watch('top', function(value) {
24 | if (value !== undefined)
25 | $element.css('top', value)
26 | });
27 | $scope.$watch('right', function(value) {
28 | if (value !== undefined)
29 | $element.css('right', value)
30 | });
31 | $scope.$watch('bottom', function(value) {
32 | if (value !== undefined)
33 | $element.css('bottom', value)
34 | });
35 | $scope.$watch('width', function(value) {
36 | if (value !== undefined)
37 | $element.width(value)
38 | });
39 | $scope.$watch('height', function(value) {
40 | if (value !== undefined)
41 | $element.height(value)
42 | });
43 | $scope.$watch('rect', function(value) {
44 | if (value !== undefined) {
45 | if (value.x !== undefined)
46 | $element.css('left', value.x);
47 | if (value.y !== undefined)
48 | $element.css('top', value.y);
49 | if (value.width !== undefined)
50 | $element.width(value.width);
51 | if (value.height !== undefined)
52 | $element.height(value.height);
53 | }
54 | }, true);
55 | }
56 | }
57 | });
--------------------------------------------------------------------------------
/app/scripts/controllers/table/local.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.table.local', function ($scope) {
4 | var vm = $scope.vm = {};
5 | vm.page = {
6 | size: 5,
7 | index: 1
8 | };
9 | vm.sort = {
10 | column: 'id',
11 | direction: -1,
12 | toggle: function(column) {
13 | if (column.sortable === false)
14 | return;
15 |
16 | if (this.column === column.name) {
17 | this.direction = -this.direction || -1;
18 | } else {
19 | this.column = column.name;
20 | this.direction = -1;
21 | }
22 | }
23 | };
24 | // 构建模拟数据
25 | vm.columns = [
26 | {
27 | label: 'ID',
28 | name: 'id',
29 | type: 'string'
30 | },
31 | {
32 | label: '姓名',
33 | name: 'name',
34 | type: 'string'
35 | },
36 | {
37 | label: '粉丝数',
38 | name: 'followers',
39 | type: 'number'
40 | },
41 | {
42 | label: '收入',
43 | name: 'income',
44 | type: 'currency'
45 | },
46 | {
47 | label: '',
48 | name: 'actions',
49 | sortable: false
50 | }
51 | ];
52 | // 供页面中使用的函数
53 | vm.age = function(birthday) {
54 | return moment().diff(birthday, 'years');
55 | };
56 |
57 | vm.items = [];
58 | var MAX_NUM = 10 * 1000;
59 | function rand(min, max) {
60 | return min + Math.round(Math.random() * (max-min));
61 | }
62 | for (var i = 0; i < MAX_NUM; ++i) {
63 | var id = rand(0, MAX_NUM);
64 | vm.items.push({
65 | id: i + 1,
66 | name: 'Name' + id, // 字符串类型
67 | followers: rand(0, 100 * 1000 * 1000), // 数字类型
68 | birthday: moment().subtract('day', rand(365, 365 * 50)).toDate(), // 日期类型
69 | summary: '这是一个测试' + i,
70 | income: rand(1000, 100000) // 金额类型
71 | });
72 | }
73 | });
74 |
--------------------------------------------------------------------------------
/app/views/tree/treeData.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
8 |
9 |
10 |
11 | {{country.label}}
12 |
13 |
14 |
32 |
33 |
34 |
35 |
36 |
37 | 说明
38 | 这是一个使用内部数据结构来封装级联逻辑的版本,相比directive来说,这种内部数据结构更容易测试,内聚性也更强。
39 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/template/template.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created with JetBrains PhpStorm.
3 | * User: xuheng
4 | * Date: 12-8-8
5 | * Time: 下午2:09
6 | * To change this template use File | Settings | File Templates.
7 | */
8 | (function () {
9 | var me = editor,
10 | preview = $G( "preview" ),
11 | preitem = $G( "preitem" ),
12 | tmps = templates,
13 | currentTmp;
14 | var initPre = function () {
15 | var str = "";
16 | for ( var i = 0, tmp; tmp = tmps[i++]; ) {
17 | str += '';
18 | }
19 | preitem.innerHTML = str;
20 | };
21 | var pre = function ( n ) {
22 | var tmp = tmps[n - 1];
23 | currentTmp = tmp;
24 | clearItem();
25 | domUtils.setStyles( preitem.childNodes[n - 1], {
26 | "background-color":"lemonChiffon",
27 | "border":"#ccc 1px solid"
28 | } );
29 | preview.innerHTML = tmp.preHtml ? tmp.preHtml : "";
30 | };
31 | var clearItem = function () {
32 | var items = preitem.children;
33 | for ( var i = 0, item; item = items[i++]; ) {
34 | domUtils.setStyles( item, {
35 | "background-color":"",
36 | "border":"white 1px solid"
37 | } );
38 | }
39 | };
40 | dialog.onok = function () {
41 | if ( !$G( "issave" ).checked ){
42 | me.execCommand( "cleardoc" );
43 | }
44 | var obj = {
45 | html:currentTmp && currentTmp.html
46 | };
47 | me.execCommand( "template", obj );
48 | };
49 | initPre();
50 | window.pre = pre;
51 | pre(2)
52 |
53 | })();
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/table/edittd.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
60 |
61 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/jsp/imageManager.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" pageEncoding="utf-8"%>
2 | <%@ page import="java.util.*"%>
3 | <%@ page import="java.io.*"%>
4 | <%@ page import="javax.servlet.ServletContext"%>
5 | <%@ page import="javax.servlet.http.HttpServletRequest"%>
6 | <%
7 | //仅做示例用,请自行修改
8 | String path = "upload";
9 | String imgStr ="";
10 | String realpath = getRealPath(request,path)+"/"+path;
11 | List files = getFiles(realpath,new ArrayList());
12 | for(File file :files ){
13 | imgStr+=file.getPath().replace(getRealPath(request,path),"")+"ue_separate_ue";
14 | }
15 | if(imgStr!=""){
16 | imgStr = imgStr.substring(0,imgStr.lastIndexOf("ue_separate_ue")).replace(File.separator, "/").trim();
17 | }
18 | out.print(imgStr);
19 | %>
20 | <%!
21 | public List getFiles(String realpath, List files) {
22 |
23 | File realFile = new File(realpath);
24 | if (realFile.isDirectory()) {
25 | File[] subfiles = realFile.listFiles();
26 | for(File file :subfiles ){
27 | if(file.isDirectory()){
28 | getFiles(file.getAbsolutePath(),files);
29 | }else{
30 | if(!getFileType(file.getName()).equals("")) {
31 | files.add(file);
32 | }
33 | }
34 | }
35 | }
36 | return files;
37 | }
38 |
39 | public String getRealPath(HttpServletRequest request,String path){
40 | ServletContext application = request.getSession().getServletContext();
41 | String str = application.getRealPath(request.getServletPath());
42 | return new File(str).getParent();
43 | }
44 |
45 | public String getFileType(String fileName){
46 | String[] fileType = {".gif" , ".png" , ".jpg" , ".jpeg" , ".bmp"};
47 | Iterator type = Arrays.asList(fileType).iterator();
48 | while(type.hasNext()){
49 | String t = type.next();
50 | if(fileName.toLowerCase().endsWith(t)){
51 | return t;
52 | }
53 | }
54 | return "";
55 | }
56 | %>
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/swfupload/swfupload.cookies.js:
--------------------------------------------------------------------------------
1 | /*
2 | Cookie Plug-in
3 |
4 | This plug in automatically gets all the cookies for this site and adds them to the post_params.
5 | Cookies are loaded only on initialization. The refreshCookies function can be called to update the post_params.
6 | The cookies will override any other post params with the same name.
7 | */
8 |
9 | var SWFUpload;
10 | if (typeof(SWFUpload) === "function") {
11 | SWFUpload.prototype.initSettings = function (oldInitSettings) {
12 | return function (userSettings) {
13 | if (typeof(oldInitSettings) === "function") {
14 | oldInitSettings.call(this, userSettings);
15 | }
16 |
17 | this.refreshCookies(false); // The false parameter must be sent since SWFUpload has not initialzed at this point
18 | };
19 | }(SWFUpload.prototype.initSettings);
20 |
21 | // refreshes the post_params and updates SWFUpload. The sendToFlash parameters is optional and defaults to True
22 | SWFUpload.prototype.refreshCookies = function (sendToFlash) {
23 | if (sendToFlash === undefined) {
24 | sendToFlash = true;
25 | }
26 | sendToFlash = !!sendToFlash;
27 |
28 | // Get the post_params object
29 | var postParams = this.settings.post_params;
30 |
31 | // Get the cookies
32 | var i, cookieArray = document.cookie.split(';'), caLength = cookieArray.length, c, eqIndex, name, value;
33 | for (i = 0; i < caLength; i++) {
34 | c = cookieArray[i];
35 |
36 | // Left Trim spaces
37 | while (c.charAt(0) === " ") {
38 | c = c.substring(1, c.length);
39 | }
40 | eqIndex = c.indexOf("=");
41 | if (eqIndex > 0) {
42 | name = c.substring(0, eqIndex);
43 | value = c.substring(eqIndex + 1);
44 | postParams[name] = value;
45 | }
46 | }
47 |
48 | if (sendToFlash) {
49 | this.setPostParams(postParams);
50 | }
51 | };
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/app/scripts/controllers/form/dependency.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp')
4 | .controller('ctrl.form.dependency', function ($scope) {
5 | var vm = $scope.vm = {
6 | show_error: false,
7 | show_type: 1,
8 | user: {}
9 | };
10 |
11 | vm.submit = function (basic_form) {
12 | vm.show_error = true;
13 | basic_form.$setDirty();
14 | if (basic_form.$valid) {
15 | alert("提交成功!");
16 | }
17 | };
18 |
19 | vm.change_show_type = function (form) {
20 | if (vm.show_type == 2) {
21 | vm.show_error = true;
22 | } else {
23 | vm.show_error = false;
24 | }
25 |
26 | // 重置表单
27 | vm.user = {};
28 | form.$setPristine();
29 |
30 | }
31 | })
32 | .directive("repeat", [function () {
33 | return {
34 | restrict: 'A',
35 | require: "ngModel",
36 | link: function (scope, element, attrs, ctrl) {
37 | if (ctrl) {
38 | var otherInput = element.inheritedData("$formController")[attrs.repeat];
39 |
40 | var repeatValidator = function (value) {
41 | var validity = value === otherInput.$viewValue;
42 | ctrl.$setValidity("repeat", validity);
43 | return validity ? value : undefined;
44 | };
45 |
46 | ctrl.$parsers.push(repeatValidator);
47 | ctrl.$formatters.push(repeatValidator);
48 |
49 | otherInput.$parsers.push(function (value) {
50 | ctrl.$setValidity("repeat", value === ctrl.$viewValue);
51 | return value;
52 | });
53 | }
54 | }
55 | };
56 | }]);
57 |
--------------------------------------------------------------------------------
/app/scripts/controllers/tree/checkbox.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ngShowcaseApp').controller('ctrl.tree.checkbox', function ($scope, CityData) {
4 | var vm = $scope.vm = {};
5 | vm.countries = CityData;
6 | vm.countryChanged = function(country) {
7 | // 自动选中所有下级
8 | _.each(country.provinces, function(province) {
9 | province.checked = country.checked;
10 | _.each(province.cities, function(city) {
11 | city.checked = country.checked;
12 | });
13 | });
14 | };
15 | vm.provinceChanged = function(province, country) {
16 | // 自动选中所有下级
17 | _.each(province.cities, function(city) {
18 | city.checked = province.checked;
19 | });
20 | // 如果有任何一个子节点被选中,则让上级节点也选中
21 | // 注意!checkbox的ng-model只能绑定到逻辑型值,所以不能直接把findWhere的结果赋值过去
22 | country.checked = !!_.findWhere(country.provinces, {checked: true})
23 | };
24 | vm.cityChanged = function(city, province, country) {
25 | // 如果有任何一个子节点被选中,则让上级节点也选中
26 | // 注意!checkbox的ng-model只能绑定到逻辑型值,所以不能直接把findWhere的结果赋值过去
27 | province.checked = !!_.findWhere(province.cities, {checked: true});
28 | country.checked = !!_.findWhere(country.provinces, {checked: true});
29 | };
30 | vm.isIntermediateCountry = function(country) {
31 | // 是否有任何被选中的节点
32 | var hasChecked = _.find(country.provinces, function(province) {
33 | return province.checked && _.findWhere(province.cities, {checked: true});
34 | });
35 | // 是否有任何没有选中的节点
36 | var hasNoChecked = _.find(country.provinces, function(province) {
37 | return !province.checked || _.findWhere(province.cities, {checked: false});
38 | });
39 | // 如果同时有选中状态和非选中的节点,则为中间状态
40 | return hasChecked && hasNoChecked;
41 | };
42 | vm.isIntermediateProvince = function(province) {
43 | var hasChecked = _.findWhere(province.cities, {checked: true});
44 | var hasNoChecked = _.findWhere(province.cities, {checked: false});
45 | return hasChecked && hasNoChecked;
46 | };
47 | });
48 |
--------------------------------------------------------------------------------
/app/views/animation/custom.html:
--------------------------------------------------------------------------------
1 |
2 | AngularJs
3 |
6 | AngularJs
7 |
8 | -
9 | {{item}}
10 |
11 |
12 |
13 |
28 |
29 | 说明
30 |
31 | -
32 | 采用了第三方css类库Animate.css,具体信息以及参数请参考
33 | 官方文档 。
34 |
35 | -
36 | 通过ng-model来实时修改classname
37 |
38 |
39 |
44 |
--------------------------------------------------------------------------------
/app/views/integrated/cart.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 商品列表 / 购物车
4 |
5 |
6 |
7 |
![{{item.label}}]()
8 |
9 |
10 |
{{item.label}}
11 | {{item.code}}
12 |
13 |
{{item.description}}
14 |
15 |
17 | 立即购买
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | {{vm.cart.label}}(共{{vm.cartCount()}}件 总计 {{vm.cartTotal()}} 元)
26 | 请先添加商品
27 |
28 |
29 |
30 | | 产品编号 |
31 | 产品名称 |
32 | 购买数量 |
33 | 操作 |
34 |
35 |
36 |
37 |
38 | | {{line.code}} |
39 | {{line.label}} |
40 |
41 |
43 | {{line.quantity}}
44 |
46 | |
47 | 移除 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/emotion/emotion.css:
--------------------------------------------------------------------------------
1 | .jd img{
2 | background:transparent url(images/jxface2.gif?v=1.1) no-repeat scroll left top;
3 | cursor:pointer;width:35px;height:35px;display:block;
4 | }
5 | .pp img{
6 | background:transparent url(images/fface.gif?v=1.1) no-repeat scroll left top;
7 | cursor:pointer;width:25px;height:25px;display:block;
8 | }
9 | .ldw img{
10 | background:transparent url(images/wface.gif?v=1.1) no-repeat scroll left top;
11 | cursor:pointer;width:35px;height:35px;display:block;
12 | }
13 | .tsj img{
14 | background:transparent url(images/tface.gif?v=1.1) no-repeat scroll left top;
15 | cursor:pointer;width:35px;height:35px;display:block;
16 | }
17 | .cat img{
18 | background:transparent url(images/cface.gif?v=1.1) no-repeat scroll left top;
19 | cursor:pointer;width:35px;height:35px;display:block;
20 | }
21 | .bb img{
22 | background:transparent url(images/bface.gif?v=1.1) no-repeat scroll left top;
23 | cursor:pointer;width:35px;height:35px;display:block;
24 | }
25 | .youa img{
26 | background:transparent url(images/yface.gif?v=1.1) no-repeat scroll left top;
27 | cursor:pointer;width:35px;height:35px;display:block;
28 | }
29 |
30 | .smileytable td {height: 37px;}
31 | #tabPanel{margin-left:5px;overflow: hidden;}
32 | #tabContent {float:left;background:#FFFFFF;}
33 | #tabContent div{display: none;width:480px;overflow:hidden;}
34 | #tabIconReview.show{left:17px;display:block;}
35 | .menuFocus{background:#ACCD3C;}
36 | .menuDefault{background:#FFFFFF;}
37 | #tabIconReview{position:absolute;left:406px;left:398px \9;top:41px;z-index:65533;width:90px;height:76px;}
38 | img.review{width:90px;height:76px;border:2px solid #9cb945;background:#FFFFFF;background-position:center;background-repeat:no-repeat;}
39 |
40 | .wrapper .tabbody{position:relative;float:left;clear:both;padding:10px;width: 95%;}
41 | .tabbody table{width: 100%;}
42 | .tabbody td{border:1px solid #BAC498;}
43 | .tabbody td span{display: block;zoom:1;padding:0 4px;}
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/highcharts/modules/funnel.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Highcharts funnel module, Beta
4 |
5 | (c) 2010-2012 Torstein Hønsi
6 |
7 | License: www.highcharts.com/license
8 | */
9 | (function(d){var u=d.getOptions().plotOptions,p=d.seriesTypes,D=d.merge,z=function(){},A=d.each;u.funnel=D(u.pie,{center:["50%","50%"],width:"90%",neckWidth:"30%",height:"100%",neckHeight:"25%",dataLabels:{connectorWidth:1,connectorColor:"#606060"},size:!0,states:{select:{color:"#C0C0C0",borderColor:"#000000",shadow:!1}}});p.funnel=d.extendClass(p.pie,{type:"funnel",animate:z,translate:function(){var a=function(k,a){return/%$/.test(k)?a*parseInt(k,10)/100:parseInt(k,10)},g=0,e=this.chart,f=e.plotWidth,
10 | e=e.plotHeight,h=0,c=this.options,C=c.center,b=a(C[0],f),d=a(C[0],e),p=a(c.width,f),i,q,j=a(c.height,e),r=a(c.neckWidth,f),s=a(c.neckHeight,e),v=j-s,a=this.data,w,x,u=c.dataLabels.position==="left"?1:0,y,m,B,n,l,t,o;this.getWidthAt=q=function(k){return k>j-s||j===s?r:r+(p-r)*((j-s-k)/(j-s))};this.getX=function(k,a){return b+(a?-1:1)*(q(k)/2+c.dataLabels.distance)};this.center=[b,d,j];this.centerX=b;A(a,function(a){g+=a.y});A(a,function(a){o=null;x=g?a.y/g:0;m=d-j/2+h*j;l=m+x*j;i=q(m);y=b-i/2;B=y+
11 | i;i=q(l);n=b-i/2;t=n+i;m>v?(y=n=b-r/2,B=t=b+r/2):l>v&&(o=l,i=q(v),n=b-i/2,t=n+i,l=v);w=["M",y,m,"L",B,m,t,l];o&&w.push(t,o,n,o);w.push(n,l,"Z");a.shapeType="path";a.shapeArgs={d:w};a.percentage=x*100;a.plotX=b;a.plotY=(m+(o||l))/2;a.tooltipPos=[b,a.plotY];a.slice=z;a.half=u;h+=x});this.setTooltipPoints()},drawPoints:function(){var a=this,g=a.options,e=a.chart.renderer;A(a.data,function(f){var h=f.graphic,c=f.shapeArgs;h?h.animate(c):f.graphic=e.path(c).attr({fill:f.color,stroke:g.borderColor,"stroke-width":g.borderWidth}).add(a.group)})},
12 | sortByAngle:z,drawDataLabels:function(){var a=this.data,g=this.options.dataLabels.distance,e,f,h,c=a.length,d,b;for(this.center[2]-=2*g;c--;)h=a[c],f=(e=h.half)?1:-1,b=h.plotY,d=this.getX(b,e),h.labelPos=[0,b,d+(g-5)*f,b,d+g*f,b,e?"right":"left",0];p.pie.prototype.drawDataLabels.call(this)}})})(Highcharts);
13 |
--------------------------------------------------------------------------------
/app/views/input/calendar.html:
--------------------------------------------------------------------------------
1 | 选中的日期: {{vm.calendar | date:'fullDate' }}
2 |
3 | 普通样式
4 |
5 |
7 |
8 |
9 | 弹出样式
10 |
11 |
12 |
13 |
16 |
17 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | 说明
42 |
43 | -
44 | 来自angular-bootstrap的第三方日历控件,更多功能和设置请参考
45 | 官方Demo。
46 |
47 | -
48 | 日期输出格式使用了官方的Date过滤器,
49 | 查看更多。
50 |
51 | - 本页翻译自其官方Demo。
52 |
53 |
--------------------------------------------------------------------------------
/app/scripts/services/Rect.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('scHelper').factory('Rect', function() {
4 | function Rect() {
5 | var limit = this.limit = {};
6 | this.width = 0;
7 | this.height = 0;
8 | this.x = 0;
9 | this.y = 0;
10 | this.left = function() {
11 | return this.x;
12 | };
13 | this.right = function() {
14 | return this.x + this.width;
15 | };
16 | this.top = function() {
17 | return this.y;
18 | };
19 | this.bottom = function() {
20 | return this.y + this.height;
21 | };
22 | this.limitTo = function(limit) {
23 | this.limit.left = limit.left;
24 | this.limit.top = limit.top;
25 | this.limit.right = limit.right;
26 | this.limit.bottom = limit.bottom;
27 | };
28 | this.onResize = function() {};
29 | this.resize = function(width, height) {
30 | width = Math.round(width);
31 | height = Math.round(height);
32 | if (width === this.width && height === this.height) {
33 | return;
34 | }
35 |
36 | this.width = width;
37 | this.height = height;
38 | if (this.onResize) {
39 | this.onResize(width, height)
40 | }
41 | };
42 | this.onMove = function() {};
43 | this.moveTo = function(x, y) {
44 | x = Math.round(x);
45 | y = Math.round(y);
46 | if (x === this.x && y === this.y) {
47 | return;
48 | }
49 | if (limit.left !== undefined) {
50 | x = Math.max(x, limit.left);
51 | }
52 | if (limit.top !== undefined) {
53 | y = Math.max(y, limit.top);
54 | }
55 | if (limit.right !== undefined) {
56 | x = Math.min(x, limit.right - this.width);
57 | }
58 | if (limit.bottom !== undefined) {
59 | y = Math.min(y, limit.bottom - this.height);
60 | }
61 | this.x = x;
62 | this.y = y;
63 | if (this.onMove) {
64 | this.onMove(x, y)
65 | }
66 | };
67 | //* 根据当前长宽把矩形中心点定位于(x, y)
68 | this.centerTo = function(x, y) {
69 | this.moveTo(x - this.width / 2, y - this.height / 2)
70 | };
71 | }
72 | return Rect;
73 | });
--------------------------------------------------------------------------------
/app/views/utils/zoom.html:
--------------------------------------------------------------------------------
1 |
2 | 外部放大器
3 |
4 |
5 |
![试验图片]()
7 |
8 |
9 |
10 |
11 |
12 |
![大图]()
14 |
15 |
16 | 内部放大器
17 |
18 |
![大图]()
20 |
21 |
![试验图片]()
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | 说明
38 | 这里没有使用单一的大型指令去实现,而是遵循Angular的风格,实现了两个单一功能的小指令:resize和position(可在右侧查看源码)。
39 |
40 | 它们用来和DOM做必要的交互,然后通过Zoom类和Rect类来实现大小图之间的映射。这种实现方式非常灵活,所以实现两种风格的放大器都不需要额外代码。
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/dialogs/snapscreen/snapscreen.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/third-party/highcharts/themes/skies.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Skies theme for Highcharts JS
3 | * @author Torstein Hønsi
4 | */
5 |
6 | Highcharts.theme = {
7 | colors: ["#514F78", "#42A07B", "#9B5E4A", "#72727F", "#1F949A", "#82914E", "#86777F", "#42A07B"],
8 | chart: {
9 | className: 'skies',
10 | borderWidth: 0,
11 | plotShadow: true,
12 | plotBackgroundImage: 'http://www.highcharts.com/demo/gfx/skies.jpg',
13 | plotBackgroundColor: {
14 | linearGradient: [0, 0, 250, 500],
15 | stops: [
16 | [0, 'rgba(255, 255, 255, 1)'],
17 | [1, 'rgba(255, 255, 255, 0)']
18 | ]
19 | },
20 | plotBorderWidth: 1
21 | },
22 | title: {
23 | style: {
24 | color: '#3E576F',
25 | font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
26 | }
27 | },
28 | subtitle: {
29 | style: {
30 | color: '#6D869F',
31 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
32 | }
33 | },
34 | xAxis: {
35 | gridLineWidth: 0,
36 | lineColor: '#C0D0E0',
37 | tickColor: '#C0D0E0',
38 | labels: {
39 | style: {
40 | color: '#666',
41 | fontWeight: 'bold'
42 | }
43 | },
44 | title: {
45 | style: {
46 | color: '#666',
47 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
48 | }
49 | }
50 | },
51 | yAxis: {
52 | alternateGridColor: 'rgba(255, 255, 255, .5)',
53 | lineColor: '#C0D0E0',
54 | tickColor: '#C0D0E0',
55 | tickWidth: 1,
56 | labels: {
57 | style: {
58 | color: '#666',
59 | fontWeight: 'bold'
60 | }
61 | },
62 | title: {
63 | style: {
64 | color: '#666',
65 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
66 | }
67 | }
68 | },
69 | legend: {
70 | itemStyle: {
71 | font: '9pt Trebuchet MS, Verdana, sans-serif',
72 | color: '#3E576F'
73 | },
74 | itemHoverStyle: {
75 | color: 'black'
76 | },
77 | itemHiddenStyle: {
78 | color: 'silver'
79 | }
80 | },
81 | labels: {
82 | style: {
83 | color: '#3E576F'
84 | }
85 | }
86 | };
87 |
88 | // Apply the theme
89 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
90 |
--------------------------------------------------------------------------------
/app/thirdparty-libs/ueditor1_3_6-utf8-jsp/themes/default/dialogbase.css:
--------------------------------------------------------------------------------
1 | /*弹出对话框页面样式组件
2 | */
3 |
4 | /*reset
5 | */
6 | html, body, div, span, applet, object, iframe,
7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
8 | a, abbr, acronym, address, big, cite, code,
9 | del, dfn, em, font, img, ins, kbd, q, s, samp,
10 | small, strike, strong, sub, sup, tt, var,
11 | b, u, i, center,
12 | dl, dt, dd, ol, ul, li,
13 | fieldset, form, label, legend,
14 | table, caption, tbody, tfoot, thead, tr, th, td {
15 | margin: 0;
16 | padding: 0;
17 | outline: 0;
18 | font-size: 100%;
19 | }
20 |
21 | body {
22 | line-height: 1;
23 | }
24 |
25 | ol, ul {
26 | list-style: none;
27 | }
28 |
29 | blockquote, q {
30 | quotes: none;
31 | }
32 |
33 | ins {
34 | text-decoration: none;
35 | }
36 |
37 | del {
38 | text-decoration: line-through;
39 | }
40 |
41 | table {
42 | border-collapse: collapse;
43 | border-spacing: 0;
44 | }
45 |
46 | /*module
47 | */
48 | body {
49 | background-color: #fff;
50 | font: 12px/1.5 "宋体", "Arial Narrow", HELVETICA;
51 | color: #646464;
52 | }
53 |
54 | /*tab*/
55 | .tabhead {
56 | position: relative;
57 | z-index: 10;
58 | }
59 |
60 | .tabhead span {
61 | display: inline-block;
62 | padding: 0 5px;
63 | height: 30px;
64 | border: 1px solid #ccc;
65 | background: url("images/dialog-title-bg.png") repeat-x;
66 | text-align: center;
67 | line-height: 30px;
68 | cursor: pointer;
69 | *margin-right: 5px;
70 | }
71 |
72 | .tabhead span.focus {
73 | height: 31px;
74 | border-bottom: none;
75 | background: #fff;
76 | }
77 |
78 | .tabbody {
79 | position: relative;
80 | top: -1px;
81 | margin: 0 auto;
82 | border: 1px solid #ccc;
83 | }
84 |
85 | /*button*/
86 | a.button {
87 | display: block;
88 | text-align: center;
89 | line-height: 24px;
90 | text-decoration: none;
91 | height: 24px;
92 | width: 95px;
93 | border: 0;
94 | color: #838383;
95 | background: url(../../themes/default/images/icons-all.gif) no-repeat;
96 | }
97 |
98 | a.button:hover {
99 | background-position: 0 -30px;
100 | }
--------------------------------------------------------------------------------
/app/scripts/services/ZoomTest.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | describe('Service: Zoom', function() {
4 | beforeEach(module('scHelper'));
5 |
6 | var zoom;
7 | beforeEach(inject(function(Zoom) {
8 | zoom = new Zoom();
9 | zoom.active.resize(100, 1000);
10 | zoom.passive.resize(1000, 10000);
11 | zoom.passiveView.resize(100, 100);
12 | }));
13 |
14 | it('自动计算activeView尺寸', function() {
15 | expect(zoom.activeView.width).toBe(10);
16 | expect(zoom.activeView.height).toBe(10);
17 | });
18 | it('activeView的位置限制', function() {
19 | zoom.activeView.moveTo(-100, -100);
20 | expect(zoom.activeView.x).toBe(0);
21 | expect(zoom.activeView.y).toBe(0);
22 | zoom.activeView.moveTo(100000, 10000);
23 | expect(zoom.activeView.x).toBe(zoom.active.width - zoom.activeView.width);
24 | expect(zoom.activeView.y).toBe(zoom.active.height - zoom.activeView.height);
25 | });
26 | it('放大左上角', function() {
27 | zoom.activeView.moveTo(0, 0);
28 | expect(zoom.passive.x).toBe(0);
29 | expect(zoom.passive.y).toBe(0);
30 | });
31 | it('放大右下角', function() {
32 | zoom.activeView.moveTo(zoom.active.width, zoom.active.height);
33 | expect(zoom.passive.x).toBe(-900);
34 | expect(zoom.passive.y).toBe(-9900);
35 | });
36 | it('放大左中', function() {
37 | zoom.activeView.centerTo(zoom.activeView.width / 2, zoom.active.height / 2);
38 | expect(zoom.passive.x).toBe(0);
39 | expect(zoom.passive.y).toBe(-4950);
40 | });
41 | it('放大上中', function() {
42 | zoom.activeView.centerTo(zoom.active.width / 2, zoom.activeView.height / 2);
43 | expect(zoom.passive.x).toBe(-450);
44 | expect(zoom.passive.y).toBe(0);
45 | });
46 | it('放大正中', function() {
47 | zoom.activeView.centerTo(zoom.active.width / 2, zoom.active.height / 2);
48 | expect(zoom.passive.x).toBe(-450);
49 | expect(zoom.passive.y).toBe(-4950);
50 | });
51 | it('放大内部任意位置', function() {
52 | zoom.activeView.centerTo(zoom.active.width / 4, zoom.active.height / 4);
53 | expect(zoom.passive.x).toBe(-200);
54 | expect(zoom.passive.y).toBe(-2450);
55 | });
56 | it('缩小', function() {
57 | zoom.active.resize(1000, 10000);
58 | zoom.passive.resize(100, 1000);
59 | zoom.passiveView.resize(100, 100);
60 | });
61 | });
--------------------------------------------------------------------------------
/test/spec/services/ZoomTest.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | describe('Service: Zoom', function() {
4 | beforeEach(module('scHelper'));
5 |
6 | var zoom;
7 | beforeEach(inject(function(Zoom) {
8 | zoom = new Zoom();
9 | zoom.active.resize(100, 1000);
10 | zoom.passive.resize(1000, 10000);
11 | zoom.passiveView.resize(100, 100);
12 | }));
13 |
14 | it('自动计算activeView尺寸', function() {
15 | expect(zoom.activeView.width).toBe(10);
16 | expect(zoom.activeView.height).toBe(10);
17 | });
18 | it('activeView的位置限制', function() {
19 | zoom.activeView.moveTo(-100, -100);
20 | expect(zoom.activeView.x).toBe(0);
21 | expect(zoom.activeView.y).toBe(0);
22 | zoom.activeView.moveTo(100000, 10000);
23 | expect(zoom.activeView.x).toBe(zoom.active.width - zoom.activeView.width);
24 | expect(zoom.activeView.y).toBe(zoom.active.height - zoom.activeView.height);
25 | });
26 | it('放大左上角', function() {
27 | zoom.activeView.moveTo(0, 0);
28 | expect(zoom.passive.x).toBe(0);
29 | expect(zoom.passive.y).toBe(0);
30 | });
31 | it('放大右下角', function() {
32 | zoom.activeView.moveTo(zoom.active.width, zoom.active.height);
33 | expect(zoom.passive.x).toBe(-900);
34 | expect(zoom.passive.y).toBe(-9900);
35 | });
36 | it('放大左中', function() {
37 | zoom.activeView.centerTo(zoom.activeView.width / 2, zoom.active.height / 2);
38 | expect(zoom.passive.x).toBe(0);
39 | expect(zoom.passive.y).toBe(-4950);
40 | });
41 | it('放大上中', function() {
42 | zoom.activeView.centerTo(zoom.active.width / 2, zoom.activeView.height / 2);
43 | expect(zoom.passive.x).toBe(-450);
44 | expect(zoom.passive.y).toBe(0);
45 | });
46 | it('放大正中', function() {
47 | zoom.activeView.centerTo(zoom.active.width / 2, zoom.active.height / 2);
48 | expect(zoom.passive.x).toBe(-450);
49 | expect(zoom.passive.y).toBe(-4950);
50 | });
51 | it('放大内部任意位置', function() {
52 | zoom.activeView.centerTo(zoom.active.width / 4, zoom.active.height / 4);
53 | expect(zoom.passive.x).toBe(-200);
54 | expect(zoom.passive.y).toBe(-2450);
55 | });
56 | it('缩小', function() {
57 | zoom.active.resize(1000, 10000);
58 | zoom.passive.resize(100, 1000);
59 | zoom.passiveView.resize(100, 100);
60 | });
61 | });
--------------------------------------------------------------------------------